Bill Allombert on Sat, 11 Apr 2015 12:45:27 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: cos: precision too low in mpsc1


On Sat, Apr 11, 2015 at 11:10:33AM +0200, Karim Belabas wrote:
> * Chris De Corte [2015-04-11 10:32]:
> > I get the following error:
> > cos: precision too low in mpsc1
> > 
> > What can you recommend me please?
> 
> Assuming the error is something like
> 
> (10:53) gp > \p38
> (10:53) gp > cos(1e100)
>   ***   at top-level: cos(1e100)
>   ***                 ^----------
>   *** cos: precision too low in mpcosm1.
> 
> then the error means that the input accuracy is simply to small to compute
> anything at all about the result.
> 
> Most other systems (e.g. mpfr) consider that the input is exact, and can thus
> be completed by any number of trailing zeroes. 

...  in base 2, not 10, of course,
so for example with IEEE754 double (53bit precision), 
1e100 is completed to 10295115178936058*2^(332-53)
and not to 10^100

and IEEE754 gives cos(1e100) = 0.9247242388
which is almost the opposite of the value of
cos(10^100) = -0.9280819050

> But PARI floats may represent
> any real number in some range (see paragraph 2.3.2 in GP user's manual). In
> this case [1e100 (1 - 1-e-38), 1e100 (1 + 1-e-38)], an nothing can be said 
> about the result except that it's between -1 and 1, which does not even
> bound its exponent !
> 
> The simplest solution is to increase the default precision
> 
> (10:54) gp > \p200
>    realprecision = 211 significant digits (200 digits displayed)
> (10:54) gp > cos(1e100)
> %1 = -0.92808190507465534345619464377695592818318207643905039332511420954252122203079670126138117700511187183691887194853024728615605695907677892307983039507078619377572991288890406946861814031710664466671099
> 
> Note that this only increases the accuracy of *subsequent* inputs.

And alternatively in this case you can give the input as an exact rational
number:

? cos(10^100)
%1 = -0.92808190507465534345619464377695592818

Cheers,
Bill.