Mercurial > hg > octave-nkf
diff scripts/specfun/expint.m @ 16586:f423873d3275
Style fixes for ellipj.cc, ellipke.m, and expint.m
* ellipj.cc, ellipke.m, expint.m: Style fixes.
author | Mike Miller <mtmiller@ieee.org> |
---|---|
date | Sun, 28 Apr 2013 18:50:51 -0400 |
parents | 1a3bfb14b5da |
children | a3fdd6041e64 |
line wrap: on
line diff
--- a/scripts/specfun/expint.m +++ b/scripts/specfun/expint.m @@ -1,20 +1,23 @@ ## Copyright (C) 2006 Sylvain Pelissier <sylvain.pelissier@gmail.com> ## -## This program is free software; you can redistribute it and/or modify it under -## the terms of the GNU General Public License as published by the Free Software -## Foundation; either version 3 of the License, or (at your option) any later -## version. +## This file is part of Octave. +## +## Octave is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 3 of the License, or (at +## your option) any later version. ## -## This program is distributed in the hope that it will be useful, but WITHOUT -## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -## details. +## Octave is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. ## -## You should have received a copy of the GNU General Public License along with -## this program; if not, see <http://www.gnu.org/licenses/>. +## You should have received a copy of the GNU General Public License +## along with Octave; see the file COPYING. If not, see +## <http://www.gnu.org/licenses/>. ## -*- texinfo -*- -## @deftypefn {Function File} {@var{y} =} expint (@var{x}) +## @deftypefn {Function File} {} expint (@var{x}) ## Compute the exponential integral, ## @verbatim ## infinity @@ -23,14 +26,16 @@ ## / ## x ## @end verbatim -## @seealso{expint_E1, expint_Ei} ## @end deftypefn -function y = expint(x) +function y = expint (x) + if (nargin != 1) - print_usage; + print_usage (); endif - y = expint_E1(x); + + y = expint_E1 (x); + endfunction ## -*- texinfo -*- @@ -43,18 +48,28 @@ ## / ## x ## @end verbatim -## @seealso{expint, expint_Ei} ## @end deftypefn -function y = expint_E1(x) +function y = expint_E1 (x) + if (nargin != 1) - print_usage; + print_usage (); endif + y = x; - y(imag(x) > 0 & imag(x) != 0) = -expint_Ei(-y(imag(x) > 0 & imag(x) != 0)) -i.*pi; - y(imag(x) < 0 & imag(x) != 0) = -expint_Ei(-y(imag(x) < 0 & imag(x) != 0)) +i.*pi; - y(real(x) >= 0 & imag(x)==0) = -expint_Ei(-y(real(x) >= 0 & imag(x)==0)); - y(real(x) < 0 & imag(x)==0) = -expint_Ei(-y(real(x) < 0 & imag(x)==0)) -i.*pi; + + idx = (imag (x) > 0 & imag (x) != 0); + y(idx) = -expint_Ei (-y(idx)) - i.*pi; + + idx = (imag (x) < 0 & imag (x) != 0); + y(idx) = -expint_Ei (-y(idx)) + i.*pi; + + idx = (real (x) >= 0 & imag (x) == 0); + y(idx) = -expint_Ei (-y(idx)); + + idx = (real (x) < 0 & imag (x) == 0); + y(idx) = -expint_Ei (-y(idx)) - i.*pi; + endfunction ## -*- texinfo -*- @@ -67,39 +82,43 @@ ## / ## -x ## @end verbatim -## @seealso{expint, expint_E1} ## @end deftypefn -function y = expint_Ei(x) +function y = expint_Ei (x) + if (nargin != 1) - print_usage; + print_usage (); endif - y = zeros(size(x)); - F = @(x) exp(-x)./x; - s = prod(size(x)); + + y = zeros (size (x)); + F = @(x) exp (-x)./x; + s = prod (size (x)); + for t = 1:s; - if(x(t)<0 && imag(x(t)) == 0) - y(t) = -quad(F,-x(t),Inf); + if (x(t) < 0 && imag (x(t)) == 0) + y(t) = -quad (F, -x(t), Inf); else - if(abs(x(t)) > 2 && imag(x(t)) == 0) - y(t) = expint_Ei(2) - quad(F,-x(t),-2); + if (abs (x(t)) > 2 && imag (x(t)) == 0) + y(t) = expint_Ei (2) - quad (F, -x(t), -2); else - if(abs(x(t)) >= 10) - if(imag(x(t)) <= 0) + if (abs (x(t)) >= 10) + if (imag (x(t)) <= 0) a1 = 4.03640; a2 = 1.15198; b1 = 5.03637; b2 = 4.19160; - y(t) = -(x(t).^2 - a1.*x(t) + a2)./((x(t).^2-b1.*x(t)+b2).*(-x(t)).*exp(-x(t)))-i.*pi; + y(t) = -(x(t).^2 - a1.*x(t) + a2) ... + ./ ((x(t).^2 - b1.*x(t) + b2) .* (-x(t)) .* exp (-x(t))) ... + - i.*pi; else - y(t) = conj(expint_Ei(conj(x(t)))); + y(t) = conj (expint_Ei (conj (x(t)))); endif; ## Serie Expansion else for k = 1:100; - y(t) = y(t) + x(t).^k./(k.*factorial(k)); + y(t) = y(t) + x(t).^k ./ (k.*factorial (k)); endfor - y(t) = 0.577215664901532860606512090082402431 + log(x(t)) + y(t); + y(t) = 0.577215664901532860606512090082402431 + log (x(t)) + y(t); endif endif endif