| Karim Belabas on Sun, 12 Apr 2015 10:13:08 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Re: cos: precision too low in mpsc1 |
* Chris De Corte [2015-04-12 04:51]:
> Now he gives me a solution as a Taylor series which I can not use.
[ Please copy-paste explicit reproducible examples, it is hard to guess
what other people input. ]
Something like this ?
(10:00) gp > cos(x)
%1 = 1 - 1/2*x^2 + 1/24*x^4 - 1/720*x^6 + 1/40320*x^8 - 1/3628800*x^10 + 1/479001600*x^12 - 1/87178291200*x^14 + 1/20922789888000*x^16 + O(x^18)
This is probably an error in your script where you take the value of 'cos'
at an "undefined variable", i.e. a formal variable, and get a t_SER.
Just make sure to assign a numeric value (e.g., x = Pi) first.
> Maybe the cos function should first do something like Mod(x,2*Pi) to bring
> the big number back to a smaller one
Actually, x % (2*Pi). [ Mod() is a constructor for modular types and
quotient rings, it does not apply to t_REALs; % on the other hand is a
generalized Euclidean remainder, which still makes sense ]
(10:02) gp > 10.0 % (2*Pi)
%2 = 3.7168146928204135230747132334409942316
(10:02) gp > Mod(10.0, 2*Pi)
*** at top-level: Mod(10.0,2*Pi)
*** ^--------------
*** Mod: forbidden division t_REAL % t_REAL.
In fact, cos does something like this (modulo Pi/2).
But this won't help with your precision issues:
(10:02) gp > 1e100 % (2*Pi)
*** at top-level: 1e100%(2*Pi)
*** ^-------
*** _%_: precision too low in truncr (precision loss in truncation).
Same reason as before: we fail to compute the Euclidean quotient
floor(1e100 / (2*Pi))
because the t_REAL may represent any real number in a huge interval (containing
more than one integer in this case). Solution: increase the accuracy (\p200)
or use exact rational numbers !
Cheers,
K.B.
--
Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux Fax: (+33) (0)5 40 00 69 50
351, cours de la Liberation http://www.math.u-bordeaux.fr/~kbelabas/
F-33405 Talence (France) http://pari.math.u-bordeaux.fr/ [PARI/GP]
`