Thanks for the quick response and the fix, Waldek. I can confirm that the patch fixed the reported issue.
Best regards Hakan On Mon, Jan 6, 2020 at 8:32 PM <[email protected]> wrote: > On Mon, Jan 06, 2020 at 09:51:05AM +0100, [email protected] wrote: > > Here is a strange behaviour in Poplog 16 using round and round(sqrt(i)): > > > > vars i; > > for i from 2 to 10000 do > > [^i ^(2**i) ^(round(sqrt(2**i)))]=>; > > endfor; > > > > Poplog 16 throws an error for 2**126: > > """ > > ..... > > ** [123 10633823966279326983230456482242756608 3260954456333195264] > > ** [124 21267647932558653966460912964485513216 4611686018427387904] > > ** [125 42535295865117307932921825928971026432 6521908912666390528] > > > > <<<<<<< System Error: Signal = 8, PC = 00000000005B31F7 >>>>>>> > > > > > > ;;; MISHAP - serr: SYSTEM ERROR (see above) > > ;;; FILE : /home/hakank/poplog/me/test_sqrt.p LINE NUMBER: 16 > > ;;; PRINT DOING > > ;;; DOING : round trycompile > > """ > > It is unintended difference between 32 and 64 bit ports. The attached > patch fixes this. But there seem to be other problem, I am looking > at them. > > > The previous Poplog version ("Version 15.65 Sat May 5 06:42:58 CEST > 2012") > > managed to handle 2**1024 without any problem, and after that it throws a > > FLOATING POINT OVERFLOW error. > > > > If just sqrt(i) is used then Poplog16 manage to handle 2**1024, then a > > System error is thrown: > > vars i; > > for i from 2 to 10000 do > > [^i ^(2**i) ^(sqrt(2**i))]=>; > > endfor; > > > > """ > > ** [1024 > > 179769313486231590772930519078902473361797697894230657273430081157732 > > 6758055009631327084773224075360211201138798713933576587897688144166224 > > 9284743063947412437776789342486548527630221960124609411945308295208500 > > 5768838150682342462881473913110540827237163350510684586298239947245938 > > > > <<<<<<< System Error: Signal = 8, PC = 00000000005B330E >>>>>>> > > Error is normal: the number is too big to fit into a float. > However, probably there should be normal MISHAP message about > overflow. > > > 479716304835356329624224137216 > > ;;; MISHAP - serr: SYSTEM ERROR (see above) > > ;;; FILE : /home/hakank/poplog/me/test_sqrt.p LINE NUMBER: 19 > > ;;; PRINT DOING > > ;;; DOING : => trycompile > > """ > > > > Interestingly, if 2,0**i is used then Poplog16 only mangage to 2**1023 > and > > then throws an explicit FLOATING-POINT ERROR > > > > vars i; > > for i from 2 to 10000 do > > [^i ^(2**i) ^(2.0**i)]=>; > > endfor; > > > > """ > > .... > > ** [1023 > > 898846567431157953864652595394512366808988489471153286367150405788663 > > 3790275048156635423866120376801056005693993569667882939488440720831124 > > 6423715319737062188883946712432742638151109800623047059726541476042502 > > 8844190753411712314407369565552704136185816752553422931491199736229692 > > 39858152417678164812112068608 8988465674311600000000000000000000000000 > > 0000000000000000000000000000000000000000000000000000000000000000000000 > > 0000000000000000000000000000000000000000000000000000000000000000000000 > > 0000000000000000000000000000000000000000000000000000000000000000000000 > > 0000000000000000000000000000000000000000000000000000000000.0] > > > > ;;; MISHAP - FLOATING-POINT OVERFLOW > > ;;; INVOLVING: 2.0 1024 > > ;;; FILE : /home/hakank/poplog/me/test_sqrt.p LINE NUMBER: 19 > > ;;; PRINT DOING > > ;;; DOING : ** trycompile > > """ > > AFAICS that is OK, already 2**1024 is too big. I am not sure > why integer version works, probably due to rounding error, > but I need to check. > > -- > Waldek Hebisch > -- Hakan Kjellerstrand http://www.hakank.org/ http://www.hakank.org/webblogg/ http://www.hakank.org/constraint_programming_blog/ http://twitter.com/hakankj https://www.facebook.com/hakankj
