question on recovering a rational number from its decimal value

American Citizen <[email protected]>
Newsgroups gmane.comp.mathematics.pari.user
Message-ID <[email protected]>
The situation of recovering a rational from a decimal value is one where 
I found the best performance was given by using 
contfracpnqn(contfrac(decimal_value)) to recover the rational number. 
But I will bring up bestappr and algdep also and provide a simple example.

For example:

  \p38
    realprecision = 38 significant digits
? a = 7557322358563246340/14991082624209354397
? b=1.0*a
%182 = 0.50412118644178492341805370212027471167
? bestappr(b)
%183 = 
79189105149167506491695797085942154095/157083469766673122582441828941171667778
? bestappr(b,10^20)
%184 = 7557322358563246340/14991082624209354397

I am trying to recover a, not some rational with many more digits to 
both the numerator and denominator for a which is what bestappr(b) did 
without a denominator size restriction.

Let's look at c= contfracpnqn(contfrac(b))

%185 =
[ 7557322358563246340 1893554184859258427]

[14991082624209354397 3756148790778748428]
and c[1,1]/c[2,1] recovers a quite nicely.

I found this method quite reliable for nailing the "correct" rational 
given its decimal.

Would using algdep(b,1) work well too?

? algdep(b,1)
%190 = 579338739897539*x - 292056932908836

this is in error, by increasing precision to 57 digits I can 
successfully recover a

? \p57
    realprecision = 57 significant digits
? b=1.0*a
%192 = 0.504121186441784923418053702120274711673751913427062758309
? algdep(b,1)
%193 = 14991082624209354397*x - 7557322358563246340

so apparently we have to increase the precision by 1.5x before doing the 
algdep command as it seems to me.

What is the timing trade off when doings hundreds of thousands of 
rational number recoveries from their decimal value? Is algdep(b,1) more 
costly in time than bestappr(b) and is contfracpnqn(contfrac(b)) faster 
than bestappr?

Randall
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.