This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[libgfortran,patch] Add fallback functions tgamma, lgamma, tgammaf and lgammaf


Attached patch adds fallback implementations of gamma-related C99 functions that are missing on some targets. gamma and lgamma follow the formulas used in the Fortran netlib implementation, with extra care taken of exceptionnal values (when an argument or the result is either an infinity or a NaN) and handling of negative arguments for lgamma (which the netlib version ignores altogether).

Results of these implementation have be checked against glibc results on x86_64-linux, and only small differences in the last significant digits are observed (enough for a fallback implementation; it is also noteworthy that glibc results are always exact, especially for lgamma). There is one case where a difference exist: for very large negative arguments, this implementation returns +Inf while glibc returns NaN; I don't think it's worth putting extra effort into this case.

Regtested on x86_64-linux by pretending (tweaking config.h) that it didn't have any of these function in libm. OK to commit?

FX

PS: Thomas, as you were interested in these, if you later feel like refining this implementation, please feel free to do so!



:ADDPATCH libgfortran:

Attachment: gamma.ChangeLog
Description: Binary data

Attachment: gamma.diff
Description: Binary data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]