Largest int from concatenated ints: Difference between revisions

Content added Content deleted
m (→‎simple integers: simplified the NORM function.)
m (→‎exponentiated integers: simplified the NORM function.)
Line 2,013: Line 2,013:
exit /*stick a fork in it, we're all done. */
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
norm: arg i; #=word(z, i); er=' ***error*** '; numeric digits 300 /*get # from Z. */
norm: arg i; #=word(z, i); er=' ***error*** '; if left(#, 1)=="-" then #=substr(#, 2)
if \datatype(#,'N') then do; say er 'number' # "isn't an number."; exit 13; end
if \datatype(#,'N') then do; say er 'number' # "isn't an number."; exit 13; end
else #= abs(#) / 1 /*a #, so normalize it*/
else #=# / 1 /*a #, so normalize it*/
if pos('E',#)>0 then do; parse var # mant "E" pow /*Has exponent? Expand*/
if pos('E',#)>0 then do; parse var # mant "E" pow /*Has exponent? Expand*/
numeric digits pow + length(mand) /*expand digs, adjust#*/
numeric digits pow + length(mand) /*expand digs, adjust#*/