gelpia
gelpia copied to clipboard
Inverse trigonometric functions
I would like to be able to use inverse trigonometric functions in .dop files. The following functions are requested: arcsin arccos arctan Alternative names for these functions should also be available: asin, acos, atan
These functions are now present in gelpia (FPTaylorCompat) both the a* and arc* versions. What are your preferred ranges for arcsin and arccos? Gaol prefers [-pi/2,pi/2] for the former and [0,pi] for the latter.
I updated my previous comment.
Ranges [-pi/2,pi/2] for arcsin and [0,pi] for arccos are most common so I agree with Gaol choices.
I'll leave this open in case you find any problems.
Wei-Fan once ran into the need for inverse trig functions in one of the benchmarks we were contemplating (forgot which). Since FPTaylor does not have support for these (afaik), we did not pursue them.
Ganesh
On Mon, Jul 11, 2016 at 3:11 PM, monadius [email protected] wrote:
I would like to be able to use inverse trigonometric functions in .dop files. The following functions are requested: arcsin arccos arctan Alternative names for these functions should also be available: asin, acos, atan
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/soarlab/gelpia/issues/12, or mute the thread https://github.com/notifications/unsubscribe/AEyiCu_wTd30uLb_epLCVS3iS2gB9UDyks5qUrGXgaJpZM4JJyUw .
I implemented asin, acos, sinh, cosh, and tanh in FPTaylor (atan was already there). You can open an issue directly in the FPTaylor project when you need a new feature.
Should we include hyperbolic functions? We use CRlibm which GAOL suggests cosh, sinh and tanh are not rounded correctly; oddly their inverses are rounded correctly. I've never been able to obtain a working version of libultim required by APLibMath, so we can't use the correctly rounding APLibMath.
Should I expose these functions and warn users that they may not be correct?
It is better to be safe. You may include sinh, cosh, tanh in the frontend and then convert them to the corresponding math expressions: sinh(x) = (exp(x) - exp(-x)) / 2, cosh(x) = (exp(x) + exp(-x)) / 2, tanh(x) = (exp(2_x) - 1)/(exp(2_x) + 1).
I'll have to carefully examine the proofs of the hyperbolic functions in crlibm; in short they don't seem to guarantee 1ULP for all cases. For now I'll implement these functions in terms of exp
.
Hyperbolic functions are now implemented. Inverses can be used with the prefix "arc" or simply "a". A test directory has been added to ensure that the implementations return correct answers.
Please also add the prefix "ar" for inverse hyperbolic functions: arsinh, arcosh, and artanh. (Wikipedia)
There should be 3 names for one function: asinh, arsinh, arcsinh, etc.