math.c 990 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #include <u.h>
  2. #include <libc.h>
  3. #include "hoc.h"
  4. double errcheck(double, char*);
  5. double
  6. Log(double x)
  7. {
  8. return errcheck(log(x), "log");
  9. }
  10. double
  11. Log10(double x)
  12. {
  13. return errcheck(log10(x), "log10");
  14. }
  15. double
  16. Sqrt(double x)
  17. {
  18. return errcheck(sqrt(x), "sqrt");
  19. }
  20. double
  21. Exp(double x)
  22. {
  23. return errcheck(exp(x), "exp");
  24. }
  25. double
  26. Asin(double x)
  27. {
  28. return errcheck(asin(x), "asin");
  29. }
  30. double
  31. Acos(double x)
  32. {
  33. return errcheck(acos(x), "acos");
  34. }
  35. double
  36. Sinh(double x)
  37. {
  38. return errcheck(sinh(x), "sinh");
  39. }
  40. double
  41. Cosh(double x)
  42. {
  43. return errcheck(cosh(x), "cosh");
  44. }
  45. double
  46. Pow(double x, double y)
  47. {
  48. return errcheck(pow(x,y), "exponentiation");
  49. }
  50. double
  51. integer(double x)
  52. {
  53. if(x<-2147483648.0 || x>2147483647.0)
  54. execerror("argument out of domain", 0);
  55. return (double)(long)x;
  56. }
  57. double
  58. errcheck(double d, char* s) /* check result of library call */
  59. {
  60. if(isNaN(d))
  61. execerror(s, "argument out of domain");
  62. if(isInf(d, 0))
  63. execerror(s, "result out of range");
  64. return d;
  65. }