esp-idf
esp-idf copied to clipboard
Incorrect return value from math.h tgammaf(-inf) (IDFGH-13360)
Answers checklist.
- [X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
- [X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
- [X] I have searched the issue tracker for a similar issue and not found a similar issue.
IDF version.
v5.4-dev-1832-g23e4823f17, v5.0.4 and v5.2.2
Espressif SoC revision.
ESP32 and ESP32-C3
Operating System used.
Linux
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
None
Development Kit.
ESP32-DevKitC, others
Power Supply used.
USB
What is the expected behavior?
Expect the result of tgammaf(-inf) to be NAN. (See https://pubs.opengroup.org/onlinepubs/9799919799/functions/tgammal.html and the C standard.)
This is a very similar issue to https://github.com/espressif/esp-idf/issues/7282 but applies to the single precision tgammaf() function.
What is the actual behavior?
Result of tgammaf(-inf) is inf
Steps to reproduce.
- Add these two lines to a program such as the hello_world example:
printf("tgamma(-inf) = %f\n", tgamma(-INFINITY));
printf("tgammaf(-inf) = %f\n", tgammaf(-INFINITY));
Note the first line is the double-precision function that was fixed in #7282, second line is single-precision function.
- Flash and execute.
Debug Logs.
tgamma(-inf) = nan
tgammaf(-inf) = inf
More Information.
Thanks for your time and attention. :grin:
Hi @projectgus! This has been reported in upstream last year (https://sourceware.org/pipermail/newlib/2023/020171.html), but no fix there so far. We'll see if we can come up with a fix for this.
Hi @projectgus! We will try to fix this in the next toolchain release.
Thanks Ivan and Alexey. It's not particularly urgent from MicroPython perspective as we have a workaround, but I figured good to pass it upstream (so you can decide if you want to pass it to your upstream!)