mirror of
https://github.com/open-simh/simtools.git
synced 2026-02-14 03:45:45 +00:00
Fix gitlab issue #5. The parse_float() function has several bugs: 1. For 1- and 2-word floats it will always write all 4 bytes if the value is exactly 0. 2. It incorrectly rounds and normalizes 1- and 2-word floats. To see the issue easily try the following inputs: .flt2 1.0 .flt4 1.0 These will assemble as '040100 000000' and '040200 000000 000000 000000'. They should both begin '040200'. In fact the test file test/test-prec.mac is incorrect in its only floating point value: .word ^f 1.5 ; 040140 should actually assemble as 040300, not 040140 (040140 is actually ^F0.875). I confirmed this on RT-11 running MACRO V05.06. I fixed the problem with the following deltas: [the patch] The most crucial change is the very last one. 0x200000000000 is actually (1 << 45) and because ufrac is normalized it means that it will always downshift ufrac by 1.
4.1 KiB
4.1 KiB