paladin-t / my_basic

A lightweight BASIC interpreter written in standard C in dual files. Aims to be embeddable, extendable and portable.
http://paladin-t.github.io/my_basic/
MIT License
507 stars 118 forks source link

2 program chunks not giving the same result #92

Open Overscore opened 11 months ago

Overscore commented 11 months ago

The following program:

a=1
do
  a=a+a
  b=a+1
until a=b
print "a = ",a;

c=1
more:
c=c+c
d=c+1
if c<>d then goto more
print "c = ",c;

results in: a = 16777216 c = 2.14748e+09 a and c shall be the same. It seems there is a bug somewhere.

When defining MB_DOUBLE_FLOAT, the result is: a = 9.0072e+15 c = 9.0072e+15 This is correct.

I'm compiling with gcc 11.4.0 on ubuntu 22.04 with CFLAGS="-fomit-frame-pointer -O3 -Wunreachable-code -Wextra -Wall -std=c17 -m64 -fopenmp -march=native -mtune=native" LDFLAGS="-m64 -s -lm" The processor is an INTEL i9-13900-KF

blazer2k1 commented 11 months ago

if you do if c < d then goto more then it doesn't overtake the value on the 2nd part.