From: Raphael N. <rn...@we...> - 2009-08-25 10:20:30
Attachments:
fix-fsmul.patch
|
Dear fellow developers, as indicated by the "[sdcc - Help] float and PIC" posting, there is a bug in SDCCs floating point library (fsmul), that causes results to be off by a factor of 2 due to an incorrect decrement operation on the exponent part in conjunction with an undetected overflow of the mantissa (into the hidden bit) during rounding. The attached patch fixes the issue for all targets that actually use the C-variant of __fsmul; however, I cannot tell whether the bug is also present in the assembly implementation for the 8051 target. I also seem to be unable to properly run the regression tests: ~70 test cases fail for the mcs51 target's float* tests alone, so I am not sure whether this would break any tests. I would be happy if someone could integrate the patch, run the regression tests, and either report back or commit a variant of the patch. The patch includes a regression test, but as I am not able to actually run the regression tests I do not know if it works out. If I do not hear any negative responses, I will commit the patch by the weekend. Best regards Raphael |