changeset 2634:9bd7ad32f2a7 octave-forge

Matrix support.
author sis-sou
date Mon, 09 Oct 2006 08:20:53 +0000
parents e1e293d18048
children 95951526b7b2
files main/specfun/inst/expint_E1.m main/specfun/inst/expint_Ei.m
diffstat 2 files changed, 12 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/main/specfun/inst/expint_E1.m	Sun Oct 08 21:41:04 2006 +0000
+++ b/main/specfun/inst/expint_E1.m	Mon Oct 09 08:20:53 2006 +0000
@@ -24,17 +24,13 @@
 ##
 ## See also expint_Ei, expint.
 
-function v = expint_E1(x)
+function y = expint_E1(x)
 	if (nargin != 1)
 		usage ("expint_E1(x)");
 	endif
-	if(x > 0 && imag(x)==0)
-		v = -expint_Ei(-x);
-	else
-		if(imag(x) > 0)
-			v = -expint_Ei(-x) -i.*pi;
-		else
-			v = -expint_Ei(-x) +i.*pi;
-		endif
-	endif
-endfunction
\ No newline at end of file
+	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;
+endfunction;
\ No newline at end of file
--- a/main/specfun/inst/expint_Ei.m	Sun Oct 08 21:41:04 2006 +0000
+++ b/main/specfun/inst/expint_Ei.m	Mon Oct 09 08:20:53 2006 +0000
@@ -28,11 +28,12 @@
 	if (nargin != 1)
 		usage ("expint_Ei(x)");
 	endif
+	y = zeros(size(x));
 	F = @(x) exp(-x)./x;
-	s = columns(x);
+	s = prod(size(x));
 	for t = 1:s;
 		if(x(t)<0 && imag(x(t)) == 0)
-			y = -quad(F,-x(t),Inf);
+			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);
@@ -49,9 +50,8 @@
 					endif;
 		## Serie Expansion
 				else 
-					y(t) = 0;
-					for i = 1:100;
-						y(t) = y(t) + x(t).^i./(i.*factorial(i));
+					for k = 1:100;
+						y(t) = y(t) + x(t).^k./(k.*factorial(k));
 					endfor
 					y(t) = 0.577215664901532860606512090082402431 + log(x(t)) + y(t);
 				endif