esp-idf icon indicating copy to clipboard operation
esp-idf copied to clipboard

Incorrect return value from math.h tgammaf(-inf) (IDFGH-13360)

Open projectgus opened this issue 1 year ago • 3 comments

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.

  1. 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.

  1. Flash and execute.

Debug Logs.

tgamma(-inf) = nan
tgammaf(-inf) = inf

More Information.

Thanks for your time and attention. :grin:

projectgus avatar Jul 30 '24 01:07 projectgus

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.

igrr avatar Jul 30 '24 07:07 igrr

Hi @projectgus! We will try to fix this in the next toolchain release.

gerekon avatar Jul 31 '24 09:07 gerekon

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!)

projectgus avatar Aug 01 '24 06:08 projectgus