John - this converges much more quickly. While awaiting your reply, I used Cliff's suggestion (which seems to disagree with Leo's but I better understand it) which can be applied to work with the series you suggest:
10^.-/%/"1(1 3,:1 1)&(+/ .*)^:(20+i.2)]1 0x NB. Fewer than 11 digits _10.79625847621708 13j11":%/(10x^11)*(1 3,:1 1)&(+/ .*)^:20]1 0x NB. Last digit incorrect, as expected 1.73205080758 9!:11]16 %:3 1.732050807568877 NB. Generalizing this ]pcsn=. 10^.-/%/"1 sqrts3=. (1 3,:1 1)&(+/ .*)^:(100+i.2)]1 0x _56.55206227888699 ]numdig=. <.-pcsn NB. Safe enough to round precision down? 56 ((2+numdig)j. numdig)":%/1{sqrts3 NB. "1{" to be extra sure... 1.73205080756887729352744634150587236694280525381038062806 #'1.732050807568877293527446341' NB. From http://www.research.att.com/~njas/sequences/A040001 29 So, it looks like "format" is smart enough to preserve precision according to its left argument when given a rational fraction as its right argument? That's helpful. Using the method John sent: ]pcsn=. 10^.-/%/"1 sqrts3=. f^:(7 8) 1 1x _72.66969546124619 ]numdig=. <.-pcsn 72 ((2+numdig)j. numdig)":%/1{sqrts3 1.732050807568877293527446341505872366942805253810380628055806979451933017 NB. "1{" is gilding the lily: ((2+numdig)j. numdig)":%/0{sqrts3 1.732050807568877293527446341505872366942805253810380628055806979451933017 ((2+numdig)j. numdig)":%/0{sqrts3 1.7320508075688772935274463415058723669428052538103806280558069794519330171227462181522446767406659571 ((2+numdig)j. numdig)":%/1{sqrts3 1.7320508075688772935274463415058723669428052538103806280558069794519330169088000370811461867572485757 On Fri, Mar 5, 2010 at 12:28 PM, John Randall <rand...@andromeda.rutgers.edu > wrote: > Devon McCormick wrote: > > Members of the Forum - > > > > If I'm approximating, e.g. the square root of 3, with a matrix method > > which > > returns an extended precision numerator and denominator, when I work out > > the > > decimal equivalent of this, at what point do I run out of significant > > digits? > > > > Devon: > > You can do much better with these Pell-type estimates, since you can > generate estimates 2,4,8,16,... directly: If your last estimate was p/q, > your next estimate is ((*:p)+3**:q)%2*p*q. > > > f=:((1 3)&(+/ .*)@:*:),+:@(*/) > > f^:(i.5) 1 1x > 1 1 > 4 2 > 28 16 > 1552 896 > 4817152 2781184 > > (%:3)-%/f^:3 ] 1 1x > _9.20496e_5 > (%:3)-%/f^:4 ] 1 1x > _2.44585e_9 > (%:3)-%/f^:5 ] 1 1x > 0 > > Best wishes, > > John > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > -- Devon McCormick, CFA ^me^ at acm. org is my preferred e-mail ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm