pforth: fix FROUND (#101)
authorPhil Burk <philburk@mobileer.com>
Sun, 31 Oct 2021 23:51:04 +0000 (16:51 -0700)
committerGitHub <noreply@github.com>
Sun, 31 Oct 2021 23:51:04 +0000 (16:51 -0700)
It used to push the result to the integer data stack.
That was wrong. It should go to the float stack.

Fixes #69

csrc/pfinnrfp.h

index 21d34849b6d2a5a7e86d8d5de8a2d46a0695c826..4a3095ba6bf5f3c888665636b4976bb826dc29b4 100644 (file)
         break;
 
     case ID_FP_FROUND:
-        PUSH_TOS;
-        TOS = (cell_t)fp_round(FP_TOS);
-        M_FP_DROP;
+        /* This was broken before and used to push its result to the
+         * integer data stack! Now it conforms to the ANSI standard.
+         * https://github.com/philburk/pforth/issues/69
+         */
+        FP_TOS = (PF_FLOAT)fp_round(FP_TOS);
         break;
 
     case ID_FP_FSWAP: /* ( -- ) ( F: r1 r2 -- r2 r1 ) */