tanh.c 389 B

12345678910111213141516171819202122232425
  1. #include <u.h>
  2. #include <libc.h>
  3. /*
  4. tanh(arg) computes the hyperbolic tangent of its floating
  5. point argument.
  6. sinh and cosh are called except for large arguments, which
  7. would cause overflow improperly.
  8. */
  9. double
  10. tanh(double arg)
  11. {
  12. if(arg < 0) {
  13. arg = -arg;
  14. if(arg > 21)
  15. return -1;
  16. return -sinh(arg)/cosh(arg);
  17. }
  18. if(arg > 21)
  19. return 1;
  20. return sinh(arg)/cosh(arg);
  21. }