Bill Allombert on Thu, 30 Jun 2005 23:19:03 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Sin(x) |
On Thu, Jun 30, 2005 at 10:16:07PM +0200, Sascha Rissel wrote: > Thanks for all your quick help. > I now do understand this slight difference to the expected values. > > But why do cheap pocket calculators calculate exact results of sin and cos? > Their approximation of Pi shouldn't be more precise than that Pari provides. It is actually slightly less precise. Since Pi is not equal to 3.141592653589793239, sin(3.141592653589793239) should not yield 0. > Do they round the results for reasons of "usability"? No, they simply use fixed precision. When you ask sin(x) with Pi/2<x<3*Pi/2 the natural thing to do is to substract Pi from x to move x in ]-Pi/2,Pi/2[. However, since they use fixed precision, Pi has always the same value, so when you ask sin(Pi) the calculator do Pi-Pi and get 0. In PARI, the precision is not fixed, and Pi is in fact a function of the precision. PARI alse compute x-Pi, but to avoid the error on the value of Pi to affect the result, it computes Pi with an higher precision that the precision of x. When you do sin(Pi), it computes Pi(28)-Pi(38) which is very small but not 0. To check that try: ? \p28 ? pi28=Pi %1 = 3.141592653589793238462643383 ? \p38 realprecision = 38 significant digits ? pi38=Pi %2 = 3.1415926535897932384626433832795028842 ? pi38-pi28 %3 = -5.04870979 E-29 ? sin(pi28) %4 = -5.04870979 E-29 However, that exhibit the main limitation with PARI real: the precision increase only by large increment. In fact pi38-pi28 has less than 1 bit of accuracy, but 32 bits are returned nevertheless. Pocket calculators also use other tricks to return better looking results (binary-coded decimals, guard digits), but they should not come into play here. Cheers, Bill.