PRINT SIN 1
Gives: 0.841461181640625 (wrong)
LET v = 1
PRINT SIN v
Gives: 0.84147098 (right)
Gives: 0.841461181640625 (wrong)
LET v = 1
PRINT SIN v
Gives: 0.84147098 (right)
Wrong math (solved)
|
PRINT SIN 1
Gives: 0.841461181640625 (wrong) LET v = 1 PRINT SIN v Gives: 0.84147098 (right)
11-12-2023, 05:46 PM
They are actually the same value. It's a matter of precission.
SIN 1 is being calculated directly by the compiler in compiling time. SIN(1) is aprox 0.8414709848078965 The 2nd case is computed in runtime, using the ROM calculator. I guess this is due to a bug in precision converting from PC to ZX Spectrum 5 bytes format. Will investigate this and keep you posted. Thanks
In effect, is a silly bug: for some reason, the compiler is convertig SIN 1 to Fixed before printing it.
You can (for the moment) workaround it with: Code: PRINT CAST(Float, SIN 1)
01-03-2024, 07:34 PM
Ok. Download this new beta, that fixes this issue:
http://www.boriel.com/files/zxb/zxbasic-...ta1.tar.gz http://www.boriel.com/files/zxb/zxbasic-...-beta1.zip http://www.boriel.com/files/zxb/zxbasic-...-win32.zip http://www.boriel.com/files/zxb/zxbasic-...x64.tar.gz http://www.boriel.com/files/zxb/zxbasic-...cos.tar.gz
01-03-2024, 11:38 PM
Thanks
|
« Next Oldest | Next Newest »
|