Rick Regan on Fri, 05 Jun 2009 21:19:46 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Is There a Way to Rationalize a Decimal in Pari/GP? |
I hadn't shown it but I did a \p 500 before bestappr(0.1000000000000000055511151231257827021181583404541015626,10^100). I used 10^100, but any power of 10 from 10^55 and higher (the decimal value to approximate is 55 digits) gives the same answer: 500000000000000027755575615628913510590791702270507813/5000000000000000000000000000000000000000000000000000000. Thanks for the heads-up on version 2.4.3. Thanks to all for the help. On Fri, Jun 5, 2009 at 10:33 AM, Karim Belabas <Karim.Belabas@math.u-bordeaux1.fr> wrote: > * John Cremona [2009-06-05 15:42]: >> It was not supposed to be off list ;) >> >> bestappr() uses continued fractions, and cannot do better than the >> precision you give it, so it is not very clear what the "exact >> fraction" is (unless you specify the decimal expansion in such detail >> that the full period is seen!) >> >> John >> >> 2009/6/5 Rick Regan <exploringbinary@gmail.com>: >> > Thanks Bill (and John who contacted me off list). -- bestappr() does the trick! >>> >>> In my case I always want the exact fraction, so I have to make sure I >>> specify a large enough denominator. I am converting long decimals, and >>> I don't want to count decimal places. The easy solution seems to be to >>> pass bestappr() an arbitrarily large power of 10, like >>> bestappr(0.1000000000000000055511151231257827021181583404541015626,10^100). > > Actually, in current svn (2.4.3), the second argument to bestappr() was > made optional. If the argument is omitted, we compute the continued fraction > as far as the supplied decimals will let us and return a "best rational > approximation", given the input. > > For instance, at default accuracy (\p28), > > ? bestappr(0.333333) > %1 = 333333/1000000 > ? bestappr(0.33333333333333333333333333333333333333333) > %2 = 1/3 > > etc. > > Cheers, > > K.B. > > P.S: In general, the proposed "solution" bestappr(..., 10^100) doesn't > work, in fact > > ? bestappr(0.1000000000000000055511151231257827021181583404541015626,10^100) > *** at top-level: bestappr(0.100000000 > *** ^-------------------- > *** bestappr: precision too low in truncr (precision loss in truncation). > > whereas > > ? bestappr(0.1000000000000000055511151231257827021181583404541015626) > %3 = 3602879701896397/36028797018963968 > > -- > Karim Belabas, IMB (UMR 5251) Tel: (+33) (0)5 40 00 26 17 > Universite Bordeaux 1 Fax: (+33) (0)5 40 00 69 50 > 351, cours de la Liberation http://www.math.u-bordeaux1.fr/~belabas/ > F-33405 Talence (France) http://pari.math.u-bordeaux1.fr/ [PARI/GP] > ` > -- “There are 10 types of people ... those who understand binary and those who don't” -- http://www.exploringbinary.com