Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Is it possible to evaluate Erf[200] with arbitrary precision? I only get 1. as result but I would like to know if a arbitrary precision is possible because I need to compare a gaussian approximation to the hypergeometric distribution that for the values I'm using results in $\approx 10^{-6100}$.

Should I instead rely on NIntegrate and specify directly there my precision?

share|improve this question
add comment

4 Answers 4

For large arguments, is it not better to use Erfc?

For example:

myErf[z_, prec_:$MachinePrecision] := 1 - N[Erfc[z], prec];

myErf[200]
(* -> 0.9999999999999999...9999999999999531064070401639850196 *)

This also has the advantage of not requiring involved calculations at very high precision, allowing the answer to be produced almost immediately.

share|improve this answer
add comment

How about

1 - N[1 - Erf[200], 20]
(* 0.99999999999 <<17371 more 9s>> 99999999999531064070401639850196 *)

In version 9:

We can exploit the two argument Erf: Erf[z1] - Erf[z2] == Erf[z2, z1].

1 - N[Erf[200, \[Infinity]], 20]
(* 0.99999999999 <<17371 more 9s>> 99999999999531064070401639850196 *)
share|improve this answer
    
My mathematica gives N::meprec: Internal precision limit $MaxExtraPrecision = 50. reached while evaluating 1-Erf[200]. >> and as result 1.00000000000000000000000000000000000000000000000000000000000000000000\ 0 –  linello Apr 10 at 15:21
    
Whoops, I'm not in version 9 right now. I'll update... –  Chip Hurst Apr 10 at 15:24
add comment

I'm not sure whether this gives the correct answer, but you could use RealDigits with a high setting of $MaxExtraPrecision to get your answer. Since it is almost 1, we subtract Erf[200] from 1 to get a number close to zero and add later:

Block[{$MaxExtraPrecision = 100000},
 RealDigits[1 - Erf[200], 10, 10]
 ]
(* {{4, 6, 8, 9, 3, 5, 9, 2, 9, 5}, -17374} *)

and then maybe

FromDigits[%]+1//Short
(* (200000000000000<<17353>>0000000937871859)/(200000000000000<<17353>>0000000000000000) *)

to get an exact rational expression.

share|improve this answer
add comment

Not sure if this helps: $MaxExtraPrecision=4999
f[x_]:=-x^2-Log[Pi]/2-Log[x]-1/(2x^2)+5/(8x^4)-37/(24x^6)

N[f[20],24] equals -403.569343334317232747174
N[Log[1-Erf[20]],24] equals -403.569343334104234962969

and N[Log[1-Erf[200]],24] returns Indeterminate but f[200] yields -40005.8706948090821358531
For what it's worth: Series[Log[1 - Erf[x]], {x, \[Infinity], 3}].

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.