(second attempt! Version 1 was sent using wrong email addy - d'oh! 8-)

[first of all... "hi" .. 8-) .. it's wonderful to be here.  Just a bit
uneasy because the forum isn't in the bulletin board form .. anyhoo ..
here goes...]

i've discovered that i can't directly convert long digit strings to
exteneded integer with accuracy beyond usually the first 16 digits but
never beyond the first 15 digits (depending on the test string).

eg..

]string            =. '98765432109876543210'
]stringNumString   =. x: ". string
NB.     98765432109876543488
NB. the result is in extended precision form, but the conversion wasn't.
NB. being something of a novice, i'm not sure if i'm applying
NB. [x:] or [".]correctly.
NB. Prefixing [".] doesnt' make any difference.

for the same source string i get the same result with
J602 on XP32 XP64 Win7(64)
J701 on XP64
(note: since the blackholed version.1 of this email, my xp64 j602 is 
giving a different (but consistant) error for the last digits. Other 
machines still give the old same result.)

i can get round this by cobbling together the number from segments
i.e ..
0 : 0
'VERB xIntFromLongString DEFINITION AND TEST
'=================================
)
xIntFromLongString    =: 3 : 0
   segWidth =. 7        NB. awkward segment test width
   nList =. ". |.("1)(-segWidth) ,\ |.y
+/ nList * 10x ^ segWidth *i. {. $ nList
)

]s =. ,100 20 $ '98765432109876543210'
]n =. xIntFromLongString s

(10x^8) | n   NB. look at the last 8 digits of n
sns =. ": n
*/ s = sns    NB. compare s->n->s with original s
0 : 0
'=================================
'END OF TEST
)

.. i only accidentally noticed the failure to do the simple direct
conversion of the long digit string when playing with Project Euler prob 
13. (Fortunately, the solution only depended upon the first
10 digits of the lines of data.)

should i have expected the direct conversion to be limited (eg. is
there a warning somewhere i didnt see about (".) applied to long numbers?)?
is there a direct way of doing this that, being a novice, i haven't
discoverd? (ie. that doesn't involve chopping up the number string)


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to