gsl_sf_hyperg.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. /* specfunc/gsl_sf_hyperg.h
  2. *
  3. * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
  4. *
  5. * This program is free software; you can redistribute it and/or modify
  6. * it under the terms of the GNU General Public License as published by
  7. * the Free Software Foundation; either version 3 of the License, or (at
  8. * your option) any later version.
  9. *
  10. * This program is distributed in the hope that it will be useful, but
  11. * WITHOUT ANY WARRANTY; without even the implied warranty of
  12. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  13. * General Public License for more details.
  14. *
  15. * You should have received a copy of the GNU General Public License
  16. * along with this program; if not, write to the Free Software
  17. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  18. */
  19. /* Author: G. Jungman */
  20. #ifndef __GSL_SF_HYPERG_H__
  21. #define __GSL_SF_HYPERG_H__
  22. #include "gsl_sf_result.h"
  23. #undef __BEGIN_DECLS
  24. #undef __END_DECLS
  25. #ifdef __cplusplus
  26. # define __BEGIN_DECLS extern "C" {
  27. # define __END_DECLS }
  28. #else
  29. # define __BEGIN_DECLS /* empty */
  30. # define __END_DECLS /* empty */
  31. #endif
  32. __BEGIN_DECLS
  33. /* Hypergeometric function related to Bessel functions
  34. * 0F1[c,x] =
  35. * Gamma[c] x^(1/2(1-c)) I_{c-1}(2 Sqrt[x])
  36. * Gamma[c] (-x)^(1/2(1-c)) J_{c-1}(2 Sqrt[-x])
  37. *
  38. * exceptions: GSL_EOVRFLW, GSL_EUNDRFLW
  39. */
  40. int gsl_sf_hyperg_0F1_e(double c, double x, gsl_sf_result * result);
  41. double gsl_sf_hyperg_0F1(const double c, const double x);
  42. /* Confluent hypergeometric function for integer parameters.
  43. * 1F1[m,n,x] = M(m,n,x)
  44. *
  45. * exceptions:
  46. */
  47. int gsl_sf_hyperg_1F1_int_e(const int m, const int n, const double x, gsl_sf_result * result);
  48. double gsl_sf_hyperg_1F1_int(const int m, const int n, double x);
  49. /* Confluent hypergeometric function.
  50. * 1F1[a,b,x] = M(a,b,x)
  51. *
  52. * exceptions:
  53. */
  54. int gsl_sf_hyperg_1F1_e(const double a, const double b, const double x, gsl_sf_result * result);
  55. double gsl_sf_hyperg_1F1(double a, double b, double x);
  56. /* Confluent hypergeometric function for integer parameters.
  57. * U(m,n,x)
  58. *
  59. * exceptions:
  60. */
  61. int gsl_sf_hyperg_U_int_e(const int m, const int n, const double x, gsl_sf_result * result);
  62. double gsl_sf_hyperg_U_int(const int m, const int n, const double x);
  63. /* Confluent hypergeometric function for integer parameters.
  64. * U(m,n,x)
  65. *
  66. * exceptions:
  67. */
  68. int gsl_sf_hyperg_U_int_e10_e(const int m, const int n, const double x, gsl_sf_result_e10 * result);
  69. /* Confluent hypergeometric function.
  70. * U(a,b,x)
  71. *
  72. * exceptions:
  73. */
  74. int gsl_sf_hyperg_U_e(const double a, const double b, const double x, gsl_sf_result * result);
  75. double gsl_sf_hyperg_U(const double a, const double b, const double x);
  76. /* Confluent hypergeometric function.
  77. * U(a,b,x)
  78. *
  79. * exceptions:
  80. */
  81. int gsl_sf_hyperg_U_e10_e(const double a, const double b, const double x, gsl_sf_result_e10 * result);
  82. /* Gauss hypergeometric function 2F1[a,b,c,x]
  83. * |x| < 1
  84. *
  85. * exceptions:
  86. */
  87. int gsl_sf_hyperg_2F1_e(double a, double b, const double c, const double x, gsl_sf_result * result);
  88. double gsl_sf_hyperg_2F1(double a, double b, double c, double x);
  89. /* Gauss hypergeometric function
  90. * 2F1[aR + I aI, aR - I aI, c, x]
  91. * |x| < 1
  92. *
  93. * exceptions:
  94. */
  95. int gsl_sf_hyperg_2F1_conj_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
  96. double gsl_sf_hyperg_2F1_conj(double aR, double aI, double c, double x);
  97. /* Renormalized Gauss hypergeometric function
  98. * 2F1[a,b,c,x] / Gamma[c]
  99. * |x| < 1
  100. *
  101. * exceptions:
  102. */
  103. int gsl_sf_hyperg_2F1_renorm_e(const double a, const double b, const double c, const double x, gsl_sf_result * result);
  104. double gsl_sf_hyperg_2F1_renorm(double a, double b, double c, double x);
  105. /* Renormalized Gauss hypergeometric function
  106. * 2F1[aR + I aI, aR - I aI, c, x] / Gamma[c]
  107. * |x| < 1
  108. *
  109. * exceptions:
  110. */
  111. int gsl_sf_hyperg_2F1_conj_renorm_e(const double aR, const double aI, const double c, const double x, gsl_sf_result * result);
  112. double gsl_sf_hyperg_2F1_conj_renorm(double aR, double aI, double c, double x);
  113. /* Mysterious hypergeometric function. The series representation
  114. * is a divergent hypergeometric series. However, for x < 0 we
  115. * have 2F0(a,b,x) = (-1/x)^a U(a,1+a-b,-1/x)
  116. *
  117. * exceptions: GSL_EDOM
  118. */
  119. int gsl_sf_hyperg_2F0_e(const double a, const double b, const double x, gsl_sf_result * result);
  120. double gsl_sf_hyperg_2F0(const double a, const double b, const double x);
  121. __END_DECLS
  122. #endif /* __GSL_SF_HYPERG_H__ */