c_qd.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * include/c_qd.h
  3. *
  4. * This work was supported by the Director, Office of Science, Division
  5. * of Mathematical, Information, and Computational Sciences of the
  6. * U.S. Department of Energy under contract number DE-AC03-76SF00098.
  7. *
  8. * Copyright (c) 2000-2001
  9. *
  10. * Contains C wrapper function prototypes for quad-double precision
  11. * arithmetic. This can also be used from fortran code.
  12. */
  13. #ifndef _QD_C_QD_H
  14. #define _QD_C_QD_H
  15. #include <qd/c_dd.h>
  16. #include <qd/qd_config.h>
  17. #ifdef __cplusplus
  18. extern "C" {
  19. #endif
  20. /* add */
  21. void c_qd_add(const double *a, const double *b, double *c);
  22. void c_qd_add_dd_qd(const double *a, const double *b, double *c);
  23. void c_qd_add_qd_dd(const double *a, const double *b, double *c);
  24. void c_qd_add_d_qd(double a, const double *b, double *c);
  25. void c_qd_add_qd_d(const double *a, double b, double *c);
  26. void c_qd_selfadd(const double *a, double *b);
  27. void c_qd_selfadd_dd(const double *a, double *b);
  28. void c_qd_selfadd_d(double a, double *b);
  29. /* sub */
  30. void c_qd_sub(const double *a, const double *b, double *c);
  31. void c_qd_sub_dd_qd(const double *a, const double *b, double *c);
  32. void c_qd_sub_qd_dd(const double *a, const double *b, double *c);
  33. void c_qd_sub_d_qd(double a, const double *b, double *c);
  34. void c_qd_sub_qd_d(const double *a, double b, double *c);
  35. void c_qd_selfsub(const double *a, double *b);
  36. void c_qd_selfsub_dd(const double *a, double *b);
  37. void c_qd_selfsub_d(double a, double *b);
  38. /* mul */
  39. void c_qd_mul(const double *a, const double *b, double *c);
  40. void c_qd_mul_dd_qd(const double *a, const double *b, double *c);
  41. void c_qd_mul_qd_dd(const double *a, const double *b, double *c);
  42. void c_qd_mul_d_qd(double a, const double *b, double *c);
  43. void c_qd_mul_qd_d(const double *a, double b, double *c);
  44. void c_qd_selfmul(const double *a, double *b);
  45. void c_qd_selfmul_dd(const double *a, double *b);
  46. void c_qd_selfmul_d(double a, double *b);
  47. /* div */
  48. void c_qd_div(const double *a, const double *b, double *c);
  49. void c_qd_div_dd_qd(const double *a, const double *b, double *c);
  50. void c_qd_div_qd_dd(const double *a, const double *b, double *c);
  51. void c_qd_div_d_qd(double a, const double *b, double *c);
  52. void c_qd_div_qd_d(const double *a, double b, double *c);
  53. void c_qd_selfdiv(const double *a, double *b);
  54. void c_qd_selfdiv_dd(const double *a, double *b);
  55. void c_qd_selfdiv_d(double a, double *b);
  56. /* copy */
  57. void c_qd_copy(const double *a, double *b);
  58. void c_qd_copy_dd(const double *a, double *b);
  59. void c_qd_copy_d(double a, double *b);
  60. void c_qd_sqrt(const double *a, double *b);
  61. void c_qd_sqr(const double *a, double *b);
  62. void c_qd_abs(const double *a, double *b);
  63. void c_qd_npwr(const double *a, int b, double *c);
  64. void c_qd_nroot(const double *a, int b, double *c);
  65. void c_qd_nint(const double *a, double *b);
  66. void c_qd_aint(const double *a, double *b);
  67. void c_qd_floor(const double *a, double *b);
  68. void c_qd_ceil(const double *a, double *b);
  69. void c_qd_exp(const double *a, double *b);
  70. void c_qd_log(const double *a, double *b);
  71. void c_qd_log10(const double *a, double *b);
  72. void c_qd_sin(const double *a, double *b);
  73. void c_qd_cos(const double *a, double *b);
  74. void c_qd_tan(const double *a, double *b);
  75. void c_qd_asin(const double *a, double *b);
  76. void c_qd_acos(const double *a, double *b);
  77. void c_qd_atan(const double *a, double *b);
  78. void c_qd_atan2(const double *a, const double *b, double *c);
  79. void c_qd_sinh(const double *a, double *b);
  80. void c_qd_cosh(const double *a, double *b);
  81. void c_qd_tanh(const double *a, double *b);
  82. void c_qd_asinh(const double *a, double *b);
  83. void c_qd_acosh(const double *a, double *b);
  84. void c_qd_atanh(const double *a, double *b);
  85. void c_qd_sincos(const double *a, double *s, double *c);
  86. void c_qd_sincosh(const double *a, double *s, double *c);
  87. void c_qd_read(const char *s, double *a);
  88. void c_qd_swrite(const double *a, int precision, char *s, int len);
  89. void c_qd_write(const double *a);
  90. void c_qd_neg(const double *a, double *b);
  91. void c_qd_rand(double *a);
  92. void c_qd_comp(const double *a, const double *b, int *result);
  93. void c_qd_comp_qd_d(const double *a, double b, int *result);
  94. void c_qd_comp_d_qd(double a, const double *b, int *result);
  95. void c_qd_pi(double *a);
  96. #ifdef __cplusplus
  97. }
  98. #endif
  99. #endif /* _QD_C_QD_H */