On Monday, June 2, 2014 12:19:00 PM UTC-6, anonymousnoobie wrote:
>
> Does julia have a package or library to compute exponential integral 
>
>   http://en.wikipedia.org/wiki/Exponential_integral 
> <http://en.wikipedia.org/wiki/Exponential_integral> 
>
> for real positive argument  arbitrary precision ?? I am new to julia so
>
> explain appropriately.  thanks.
>


function eint(x::BigFloat)

    z = BigFloat()

    ccall((:mpfr_eint, :libmpfr), Int32, (Ptr{BigFloat}, Ptr{BigFloat}, Int32), 
&z, &x, Base.MPFR.ROUNDING_MODE[end])

    return z

end

eint(big(3.)),exp(-3.)*log(1.+1./3)#upper bound of E1(3.)

#lower bound is (exp(-3.)/2)*log(1 + 2./3) 

Out[17]:
(9.933832570625416558008336019216765262990653022987582119693034065242496228332754e+00
 
with 256 bits of precision,0.014322847009365602)

=================================================================================

I implemented the function THANKs 
 But I don't think the numerical answer is correct. E1(3) is about 9.9 from 
the program but E1(x) is bracket-
ed between   (exp(-x)/2)*log(1+2/x) and exp(-x)*log(1+1/x).
  Also the online 
website http://www.miniwebtool.com/exponential-integral-calculator/?x=-3

calculates Ei(-3).  as *-0.013048381094197.  This is really confusing but 
E1(x)=-Ei(-x)*
*So I believe the numerical answer to the program eint(3) is not E1(3)*

Reply via email to