21 #include <lal/XLALError.h>
22 #include <lal/Units.h>
23 #include <gsl/gsl_math.h>
24 #include <gsl/gsl_blas.h>
27 #define UNUSED __attribute__ ((unused))
35 typedef struct tagMultiModalWaveform {
48 typedef struct tagRealPowers {
58 typedef struct tagComplexPowers {
66 typedef struct tagWignerDMatrices {
92 UNUSED
static void complex_vector_mult(gsl_vector *x1, gsl_vector *y1, gsl_vector *x2, gsl_vector *y2,
93 gsl_vector *
tmp1, gsl_vector *tmp2);
121 UNUSED
static int quatInv(
double *qInv,
double *
q);
124 double *new_vec,
double *quat,
double *vec);
128 REAL8 *omegaMin_dimless,
129 REAL8 *omegaRef_dimless,
static REAL8 UNUSED q2(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static REAL8 UNUSED q1(REAL8 e0, REAL8 f0, REAL8 inc, REAL8 bet, REAL8 FPlus, REAL8 FCross)
static UNUSED void WignerDMatrices_Destroy(WignerDMatrices *matrices)
static UNUSED double wigner_coef(int ell, int mp, int m)
static UNUSED int quatInv(double *qInv, double *q)
static UNUSED void MultiModalWaveform_Init(MultiModalWaveform **wave, int LMax, int n_times)
static UNUSED void WignerDMatrices_Compute(WignerDMatrices *matrices, gsl_vector **quat)
static UNUSED void ComplexPowers_Destroy(ComplexPowers *cp)
static UNUSED void NRSur_ab4_dy(double *dy, double *k1, double *k2, double *k3, double *k4, double dt12, double dt23, double dt34, double dt45, int dim)
static UNUSED void complex_vector_mult(gsl_vector *x1, gsl_vector *y1, gsl_vector *x2, gsl_vector *y2, gsl_vector *tmp1, gsl_vector *tmp2)
static UNUSED int WignerDMatrix_Index(int ell, int m, int mp)
static UNUSED void WignerDMatrices_Init(WignerDMatrices **matrices, int n_times, int LMax)
static UNUSED void RealPowers_Init(RealPowers **rp, int LMax, int n_times)
static UNUSED int quaternionTransformVector(double *new_vec, double *quat, double *vec)
static UNUSED void MultiModalWaveform_Destroy(MultiModalWaveform *wave)
static UNUSED int get_dimless_omega(REAL8 *omegaMin_dimless, REAL8 *omegaRef_dimless, const REAL8 fMin, const REAL8 fRef, const REAL8 Mtot_sec)
static UNUSED int multiplyQuats(double *prod, double *q1, double *q2)
static UNUSED double factorial(int n)
static UNUSED int transformTimeDependentVector(gsl_vector **vec, gsl_vector **quat)
static UNUSED void RealPowers_Destroy(RealPowers *rp)
static UNUSED double factorial_ratio(int n, int k)
static UNUSED void RealPowers_Compute(RealPowers *rp, gsl_vector *x)
static UNUSED void ComplexPowers_Compute(ComplexPowers *cp, gsl_vector *x, gsl_vector *y)
static UNUSED void ComplexPowers_Init(ComplexPowers **cp, int LMax, int n_times)
static UNUSED double binomial(int n, int k)
static UNUSED void TransformModesCoorbitalToInertial(MultiModalWaveform *h, MultiModalWaveform *h_coorb, gsl_vector **quat, gsl_vector *orbphase)
Function to transform waveform modes from the coorbital frame to the inertial frame.
Helper structure for computing WignerDMatrices, which require z(t)^n for many values of n.
int n_entries
Number of entries in **powers.
gsl_vector ** imag_part
The imag part of z^n.
int LMax
Maximum L; powers computed depend on LMax.
gsl_vector ** real_part
The real part of z^n.
int n_times
Length of each entry.
Helper structure for computing WignerDMatrices, which require x(t)^n for many values of n.
gsl_vector ** powers
The data; x^n.
int n_times
Length of each entry.
int LMax
Maximum L; powers computed depend on LMax.
int n_entries
Number of entries in **powers.
int LMax
Includes (ell, m) modes with 2 <= ell <= LMax.
gsl_vector ** imag_part
The imaginary part of each entry.
int n_entries
Number of (ell, m, m') entries.
gsl_vector ** real_part
The real part of each entry.
int n_times
Number of time samples per entry.