14 #include "teukolskydefs.h" 25 FT(
const int l,
const int m,
const Real r,
const Real a,
const Real omega,
26 const Real lambda,
const Real tolerance);
27 FT(
const int l,
const int m,
const Real p,
const Real ecc,
const Real a,
28 const Real omega,
const Real lambda,
const Real tolerance);
30 Complex
Bin() {
return b_inc; }
47 Real tmp = rin_request_precision;
48 rin_request_precision = Fmax(p,REAL_EPSILON);
53 Real tmp = rup_request_precision;
54 rup_request_precision = Fmax(p,REAL_EPSILON);
60 int terms_evaluated() {
61 int tmp = hypergeom_terms;
66 void set_gmp(
int flag);
67 int get_gmp() {
return gmp_on; }
70 inline Real
K(
const Real rad) {
71 return((rad*rad + a*a)*omega - m*a);
74 inline Real
dr_K(
const Real rad) {
83 return -
K(rad) / (rad*rad - 2*rad + a*a) * (
K(rad) + 4*(rad-1)*I)
84 + 8 * omega * rad * I + lambda;
88 const Complex rteuk,
const Complex drteuk);
91 const Real *lowerrs,
const Real *higherrs,
92 const int isin,
const int oldchoice,
93 Real **locptr,
int **choiceptr,
const int *maxchoiceptr);
95 void geterrs(
const Real r, Real *errs,
int isin);
97 Complex callsolver(
const int isin,
const int which,
const Real r,
98 const Real epsilon,
const Complex
nu,
99 const Real precision, Complex *deriv);
101 Complex callin(
const Real r, Complex *deriv);
103 Complex callup(
const Real r, Complex *deriv);
105 void getlocs(
const int isin);
108 Real a, p, e, omega, lambda;
109 Real tolerance, accuracy_in, accuracy_up;
110 Real rin_request_precision, rup_request_precision;
113 Complex b_trans, b_inc, c_trans;
119 int up_choices[FT_MAXDIVS];
120 Real up_choice_locs[FT_MAXDIVS];
121 int in_choices[FT_MAXDIVS];
122 Real in_choice_locs[FT_MAXDIVS];
124 Complex test_renangmoms[TEST_LENGTH];
132 #ifndef RADIALFRAC_H_SEEN 133 #define RADIALFRAC_H_SEEN 135 #include "teukolskydefs.h" 141 #define TERM_NOISE 1e-14 145 Real plusfrac(Real nu, Real epsilon, Real q,
int m, Real lambda,
147 Complex cplusfrac(Complex nu, Real epsilon, Real q,
int m, Real lambda,
152 Real minusfrac(Real nu, Real epsilon, Real q,
int m, Real lambda,
154 Complex cminusfrac(Complex nu, Real epsilon, Real q,
int m, Real lambda,
158 Real radialfrac(Real nu, Real epsilon, Real q,
int m, Real lambda,
160 Complex cradialfrac(Complex nu, Real epsilon, Real q,
int m, Real lambda,
165 Real radialfrac_half(Real imnu, Real epsilon, Real q,
int m, Real lambda,
175 #ifndef RENANGMOM_H_SEEN 176 #define RENANGMOM_H_SEEN 178 #include "teukolskydefs.h" 182 int renangmom(Real epsilon, Real q,
int l,
int m, Real lambda, Complex *nu);
186 int get_deciders(Real epsilon, Real q,
int m, Real lambda,
187 Real *halfval, Real *oneslope);
191 int renangmom_real_search_procedure(Real epsilon, Real q,
int l,
192 int m, Real lambda, Complex *nu);
197 int singularity_fit(Real epsilon, Real q,
int l,
int m, Real lambda,
198 int guessint,
int guessint2, Real spacing, Complex *nu);
201 int renangmom_real(Real epsilon, Real q,
int l,
int m, Real lambda,
202 Real detect_limit, Real *nu);
206 int renangmom_real_divide_search(Real epsilon, Real q,
int l,
int m,
207 Real lambda, Real *nu);
211 int renangmom_half(Real epsilon, Real q,
int l,
int m, Real lambda,
217 int renangmom_iint(Real epsilon, Real q,
int l,
int m, Real lambda,
222 int renangmom_far(Real epsilon, Real q,
int l,
int m, Real lambda,
227 Real nu_predictor(Real epsilon,Real q,
int m,Real lambda);
231 int renangmom_real_guess(Real epsilon, Real q,
int m, Real lambda, Real guess,
235 Real fractions_poly_approx(Real epsilon, Real q,
int m, Real lambda);
244 #ifndef SPECIALRADIAL_H_SEEN 245 #define SPECIALRADIAL_H_SEEN 247 #include "teukolskydefs.h" 251 #define SPECIAL_TERM_NOISE 1e-12 256 Real radial_half_value(Real epsilon, Real q,
int m, Real lambda, Real *term);
261 Real radial_int_slope(Real epsilon, Real q,
int m, Real lambda, Real *term);
272 #include "teukolskydefs.h" 276 void asympt_amps(Complex nu, Real epsilon, Real q,
int m, Real lambda,
277 Complex *b_trans, Complex *b_inc, Complex *b_ref,
282 Complex fsum(Complex nu, Real epsilon, Real q,
int m, Real lambda);
285 Complex kfactor(Complex nu, Real epsilon, Real q,
int m, Real lambda);
288 Complex aminus(Complex nu, Real epsilon, Real q,
int m, Real lambda);
292 Complex rzero(Complex nu, Real epsilon, Real q,
int m, Real lambda, Real x,
297 Complex rin_hyper(Complex nu, Real epsilon, Real q,
int m, Real lambda,
298 Real x, Real precision, Complex *deriv);
301 Complex rcoulomb(Complex nu, Real epsilon, Real q,
int m, Real lambda, Real z,
305 Complex rin_coulomb(Complex nu, Real epsilon, Real q,
int m, Real lambda,
306 Real z, Real precision, Complex *deriv);
315 Complex rup_tricomi(Complex nu, Real epsilon, Real q,
int m, Real lambda,
316 Real z, Real precision, Complex *deriv);
326 Complex rin_small(Complex nu, Real epsilon, Real q,
int m, Real lambda,
327 Real x, Real precision, Complex *deriv);
331 Complex rup_hyper(Complex nu, Real epsilon, Real q,
int m, Real lambda,
332 Real x, Real precision, Complex *deriv);
354 #define HYPERGEOM_REAL_TYPE long double 360 std::complex<double> gammln(
const std::complex<double> x);
363 std::complex<double> sinln(
const std::complex<double> x);
369 std::complex<HYPERGEOM_REAL_TYPE>
370 hypergeom2F1(std::complex<double> n1, std::complex<double> n2,
371 std::complex<double> d1, std::complex<double> x);
374 std::complex<HYPERGEOM_REAL_TYPE>
375 hypergeom1F1(std::complex<double> n1, std::complex<double> d1,
376 std::complex<double> x);
379 std::complex<HYPERGEOM_REAL_TYPE>
380 hypergeomU(std::complex<double> a, std::complex<double> b,
381 std::complex<double> x);
385 std::complex<HYPERGEOM_REAL_TYPE>
386 hypergeomU_reduced(std::complex<double> a, std::complex<double> b,
387 std::complex<double> x);
390 std::complex<HYPERGEOM_REAL_TYPE>
391 hypergeom2F1_gmp(std::complex<double> n1, std::complex<double> n2,
392 std::complex<double> d1, std::complex<double> x,
394 std::complex<HYPERGEOM_REAL_TYPE>
395 hypergeom1F1_gmp(std::complex<double> n1, std::complex<double> d1,
396 std::complex<double> x,
int precision);
Complex ddr_TeukRup()
Definition: FT.h:41
Complex TeukRup()
Definition: FT.h:37
void CalcRFields(const Real rad, const int DoH)
Definition: FT.cc:191
Real Accuracy_up()
Definition: FT.h:44
Complex rteuk_up
Radial Teukolsky function.
Definition: FT.h:115
Real K(const Real rad)
Definition: FT.h:70
Real dr_K(const Real rad)
Definition: FT.h:74
int choose_solvers(const Real low, const Real high, const Real *lowerrs, const Real *higherrs, const int isin, const int oldchoice, Real **locptr, int **choiceptr, const int *maxchoiceptr)
Definition: FT.cc:208
Complex get_ddrteuk(const Real rad, const Complex rteuk, const Complex drteuk)
Definition: FT.cc:201
Complex Ctrans()
Definition: FT.h:32
Complex Btrans()
Definition: FT.h:31
Real Accuracy_in()
Definition: FT.h:43
Complex ddr_TeukRin()
Definition: FT.h:40
Complex ddrteuk_up
Second derivatives of the radial Teukolsky function.
Definition: FT.h:117
Real request_precision_in(const Real p)
Definition: FT.h:46
Real request_precision_up()
Definition: FT.h:58
Complex nu
The renormalized angular momentum.
Definition: FT.h:112
Complex dr_TeukRin()
Definition: FT.h:38
Real request_precision_in()
Definition: FT.h:57
Complex drteuk_up
First derivatives of radial Teukolsky function.
Definition: FT.h:116
Real request_precision_up(const Real p)
Definition: FT.h:52
Complex Bin()
Definition: FT.h:30
Complex TeukRin()
Definition: FT.h:36
Complex dr_TeukRup()
Definition: FT.h:39
Complex teuk_potential(const Real rad)
Definition: FT.h:82
Real ddr_K()
Definition: FT.h:78