# evaluating inverse erf

Hi - The code below results in an expression, y, involving the inverse erf function i.e. exp(sqrt(2) inverse_erf(1/2)) which is approximately 1.96 according to another mathematical package. I tried to get a numerical value for y using y.n() but that crashes. Can anyone please advise how to evaluate such symbolic expressions?

var('z,t')
PDF = exp(-x^2 /2)/sqrt(2*pi)
integralExpr = integrate(PDF,x,z,oo).subs(z==log(t))
y = solve(integralExpr==z,t)[0].rhs().subs(z==1/4)
y

edit retag close merge delete

Sort by » oldest newest most voted

This is something relatively new to Sage, via Maxima. See this Maxima devel post for details.

What this means is that we have yet to implement this conversion in Sage - not surprising, since it doesn't seem to be in Ginac. (In fact, erf doesn't even seem to be in Ginac!)

However, it is in mpmath.

sage: e^(sqrt(2)*RR(mpmath.erfinv(1/2))).n()
1.96303108415826


Unfortunately, the typical beginning user might not know the RR trick. There are two things we need to do for this.

• Have a symbolic inverse erf function, which we do not yet have.
• Make a ._sage_() method for mpmath numbers, or make it easier to figure out how to get them symbolic. There is also no .n() method. I shouldn't have to to this if I forget RR!

sage: e^(sqrt(2)*sage.libs.mpmath.all.mpmath_to_sage(mpmath.erfinv(1/2),53)).n()

1.96303108415826

This reminds me that askbot has still not fixed the issue of formatting after bullets (which, to be fair, was upstream from them...)

more

Implementing this natively in Sage is now http://trac.sagemath.org/sage_trac/ticket/11349.

( 2011-05-18 08:00:18 -0600 )edit

Thanks for the answer (I have something to work with now) and for creating the ticket!

( 2011-05-18 17:22:31 -0600 )edit