home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / unixlib36d / src / c / math < prev    next >
Text File  |  1994-03-08  |  1KB  |  93 lines

  1. #ifdef __STDC__
  2. static char sccs_id[] = "@(#) math.c 1.0 " __DATE__ " HJR";
  3. #else
  4. static char sccs_id[] = "@(#) math.c 1.0 26/9/90 HJR";
  5. #endif
  6.  
  7. /* math.c (c) Copyright 1990 H.Rogers */
  8.  
  9. #include <math.h>
  10.  
  11. #ifdef __STDC__
  12. double
  13. cosh (register double x)
  14. #else
  15. double
  16. cosh (x)
  17.      register double x;
  18. #endif
  19. {
  20.   return ((exp (x) + exp (-x)) / 2);
  21. }
  22.  
  23. #ifdef __STDC__
  24. double
  25. sinh (register double x)
  26. #else
  27. double
  28. sinh (x)
  29.      register double x;
  30. #endif
  31. {
  32.   return ((exp (x) - exp (-x)) / 2);
  33. }
  34.  
  35. #ifdef __STDC__
  36. double
  37. tanh (register double x)
  38. #else
  39. double
  40. tanh (x)
  41.      register double x;
  42. #endif
  43. {
  44.   register double x1, x2;
  45.  
  46.   x1 = exp (x);
  47.   x2 = exp (-x);
  48.   return ((x1 - x2) / (x1 + x2));
  49. }
  50.  
  51. #ifdef __STDC__
  52. double
  53. frexp (register double x, register int *p)
  54. #else
  55. double
  56. frexp (x, p)
  57.      register double x;
  58.      register int *p;
  59. #endif
  60. {
  61.   register int e = 0;
  62.  
  63.   if (x != 0)
  64.     {
  65.       while (x < 0.5)
  66.     {
  67.       x *= 2;
  68.       e--;
  69.     }
  70.       while (x >= 1)
  71.     {
  72.       x /= 2;
  73.       e++;
  74.     }
  75.     }
  76.  
  77.   *p = e;
  78.   return (x);
  79. }
  80.  
  81. #ifdef __STDC__
  82. double
  83. ldexp (register double x, register int y)
  84. #else
  85. double
  86. ldexp (x, y)
  87.      register double x;
  88.      register int y;
  89. #endif
  90. {
  91.   return (x * pow ((double) 2, (double) y));
  92. }
  93.