Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a79a2e4
Edits to cosmo3D for compatibility to CLASS v2.9
paulrogozenski Apr 2, 2020
97da15e
Updates to cosmo3D and cosmology struct to incorporate various neutri…
paulrogozenski Apr 16, 2020
69f436f
class repolaced with latest version 2.9.2 and neutrino logic edited
paulrogozenski Apr 17, 2020
0d8fef1
additional neutrino logic changes with inclusion of idr with idm alon…
paulrogozenski Apr 20, 2020
8e0c95c
revised cosmology struct to pass some neutrino parameters
paulrogozenski Apr 20, 2020
01446e5
small class edits
paulrogozenski Apr 20, 2020
4671054
newest CLASS 2.9.3 and more neutrino logic in cosmo3D.c
paulrogozenski Apr 23, 2020
3f37280
commit before cross-spectra work
paulrogozenski Jun 16, 2020
beb76f7
edits to ggl and gc to include clustering power spectrum as now given…
paulrogozenski Jul 2, 2020
98965c8
updated scale-dependent biases implementation
paulrogozenski Nov 19, 2020
5f2b3fb
cleaned cosmo2D_exact_fft.c after combining with cosmo2D_fourier.c
paulrogozenski Nov 27, 2020
a613958
Fixed b_mag addition error in c_cl_mixed and reverted all cl calculat…
paulrogozenski Feb 17, 2021
9c66481
bug found in 1-loop clusering, allowing N_ur to be free parameter
paulrogozenski Mar 5, 2021
d41c2ed
bug found in 1-loop clustering, allowing N_ur to be free parameter
paulrogozenski Mar 5, 2021
79533c8
removed some print statements
paulrogozenski Mar 5, 2021
5f3d2a8
N_ur changed to N_eff for N_eff<3.046 capabilities
paulrogozenski Mar 31, 2021
eb2c897
reduced printed outputs
paulrogozenski Mar 31, 2021
9ed32e3
fewer output messages
paulrogozenski Apr 6, 2021
166e1cf
remove gomp dependencies/CLASSY interface
paulrogozenski May 24, 2021
08377df
Adding all files & folders under the project
paulrogozenski May 24, 2021
60db97f
Upgrade to CLASS v3.0.1. Runs like_test wihtout issue. Update to neut…
paulrogozenski Jul 15, 2021
05cebd2
Upgrade to CLASS v3.0.1. Runs like_test wihtout issue. Update to neut…
paulrogozenski Jul 15, 2021
e5e3658
Upgrade to CLASS v3.0.1. Runs like_test wihtout issue. Update to neut…
paulrogozenski Jul 15, 2021
ca9e1fc
nisdb for each redshift bin
paulrogozenski Oct 3, 2021
8de2755
stretch parameter implementation for lens galaxy sample
paulrogozenski Jan 31, 2022
270eb32
pymultinest gaussian prior edits
paulrogozenski Feb 16, 2022
f12d932
omega_m safe prior
paulrogozenski Mar 3, 2022
52f55cb
bias_tests
paulrogozenski Mar 30, 2022
87f2b02
n(z) normalization fix
paulrogozenski Apr 4, 2022
a4901af
n(z) normalization
paulrogozenski Apr 4, 2022
9472da3
scale-dep bias and n(z) w/ stretch edits
paulrogozenski Apr 6, 2022
9d91cc3
NISDB parameter propagation fix
paulrogozenski Apr 8, 2022
760144d
ggl 1-loop terms evaluated at b1(k->0)
paulrogozenski Apr 13, 2022
bd04cda
ggl 1-loop terms evaluated at b1(k->0); w_density now proportional to…
paulrogozenski Apr 13, 2022
db558ec
edits to cosmolike for LSST datavector analysis
paulrogozenski Jun 13, 2022
7706130
implementation of different tracers for clustering statistics
paulrogozenski Nov 3, 2022
dbdb146
fourier-space analysis code update
paulrogozenski Feb 27, 2023
4b3d0f1
updated fourier inv cov
paulrogozenski Feb 27, 2023
5f2f80f
nu updates
paulrogozenski Mar 9, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Empty file modified .gitignore
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/FASTPT.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/FASTPT_simple.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/IA_ABD.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/IA_paper_EB_final.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/IA_ta.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/IA_tt.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/J_k.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/J_table.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/OV.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/OV_paper_final.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/P_bias_example.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/P_extend.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/Pk_Planck15.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/Pk_test.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/README.md
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_RK4.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_RK4_example.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_RK4_filt.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_STS.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_STS_example.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RG_ani.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RGcopter_10_1000.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RGcopter_1_500.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RSD.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RSDAB_paper_final.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/RSD_ItypeII.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/Wigner_symbols.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/__init__.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/bias_choice_plot.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/fastpt_example_plot.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/fastpt_extr.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/filter_Pk.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/galaxy_bias_perturbation_example.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/gamma_funcs.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/get_nu1_nu2.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/initialize_params.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/inputs/P_IA.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/inputs/P_OV_KPol.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/inputs/P_RSD_A.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/inputs/P_RSD_B.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/inputs/P_lin.dat
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/interface_cosmolike_v2_1.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/kPol.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/kpol_paper_final.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/matter_power_spt.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/param_matrix.py
100644 → 100755
Empty file.
Empty file modified FASTPT_2_1/usr_manual.pdf
100644 → 100755
Empty file.
Empty file modified LICENSE
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
106 changes: 59 additions & 47 deletions cfastpt/utils_complex.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,59 +65,71 @@ Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2

void g_m_vals(double mu, double q_real, double *q_imag, double complex *gm, long N){
long i;
for(i=0; i<N; i++) {
gm[i] = cexp(lngamma_lanczos((mu+1.+q_real+I*q_imag[i])/2.) - lngamma_lanczos((mu+1.-q_real-I*q_imag[i])/2.) );
// if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
}
}

void gamma_ratios(double l, double nu, double *eta, double complex *gl, long N) {
/* z = nu + I*eta
Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2 - I*eta/2 ) ) */
long i;
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
// gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
gl[i] = cexp(lngamma_lanczos((l+z)/2.) - lngamma_lanczos((3.+l-z)/2.) );
// if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
}
}
double complex plus;
double complex minus;

void g_l(double l, double nu, double *eta, double complex *gl, long N) {
/* z = nu + I*eta
Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2 - I*eta/2 ) ) */
long i;
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
// gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
gl[i] = cexp(z*log(2.) + lngamma_lanczos((l+z)/2.) - lngamma_lanczos((3.+l-z)/2.) );
plus = (mu+1.+q_real+I*q_imag[i])/2.;
minus= (mu+1.-q_real-I*q_imag[i])/2.;
if(fabs(q_imag[i])<200){
gm[i] = cexp(lngamma_lanczos(plus) - lngamma_lanczos(minus));
}else{
gm[i] = cexp((plus-0.5)*clog(plus) - (minus-0.5)*clog(minus) - q_real - I*q_imag[i] \
+1./12 *(1./plus - 1./minus) \
+1./360.*(1./cpow(minus,3) - 1./cpow(plus,3)) \
+1./1260*(1./cpow(plus,5) - 1./cpow(minus,5)));
}
// if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
}
}

void g_l_1(double l, double nu, double *eta, double complex *gl1, long N) {
/* z = nu + I*eta
Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-1)/2 + I*eta/2 ) - lngamma( (4+l-nu)/2 - I*eta/2 ) ) */
long i;
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
gl1[i] = -(z-1.)* cexp((z-1.)*log(2.) + lngamma_lanczos((l+z-1.)/2.) - lngamma_lanczos((4.+l-z)/2.));
}
}

void g_l_2(double l, double nu, double *eta, double complex *gl2, long N) {
/* z = nu + I*eta
Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-2)/2 + I*eta/2 ) - lngamma( (5+l-nu)/2 - I*eta/2 ) ) */
long i;
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
gl2[i] = (z-1.)* (z-2.)* cexp((z-2.)*log(2.) + lngamma_lanczos((l+z-2.)/2.) - lngamma_lanczos((5.+l-z)/2.));
}
}
// void gamma_ratios(double l, double nu, double *eta, double complex *gl, long N) {
// /* z = nu + I*eta
// Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2 - I*eta/2 ) ) */
// long i;
// double complex z;
// for(i=0; i<N; i++) {
// z = nu+I*eta[i];
// // gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
// gl[i] = cexp(lngamma_lanczos((l+z)/2.) - lngamma_lanczos((3.+l-z)/2.) );
// // if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
// }
// }

// void g_l(double l, double nu, double *eta, double complex *gl, long N) {
// /* z = nu + I*eta
// Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2 - I*eta/2 ) ) */
// long i;
// double complex z;
// for(i=0; i<N; i++) {
// z = nu+I*eta[i];
// // gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
// gl[i] = cexp(z*log(2.) + lngamma_lanczos((l+z)/2.) - lngamma_lanczos((3.+l-z)/2.) );
// // if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
// }
// }

// void g_l_1(double l, double nu, double *eta, double complex *gl1, long N) {
// /* z = nu + I*eta
// Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-1)/2 + I*eta/2 ) - lngamma( (4+l-nu)/2 - I*eta/2 ) ) */
// long i;
// double complex z;
// for(i=0; i<N; i++) {
// z = nu+I*eta[i];
// gl1[i] = -(z-1.)* cexp((z-1.)*log(2.) + lngamma_lanczos((l+z-1.)/2.) - lngamma_lanczos((4.+l-z)/2.));
// }
// }

// void g_l_2(double l, double nu, double *eta, double complex *gl2, long N) {
// /* z = nu + I*eta
// Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-2)/2 + I*eta/2 ) - lngamma( (5+l-nu)/2 - I*eta/2 ) ) */
// long i;
// double complex z;
// for(i=0; i<N; i++) {
// z = nu+I*eta[i];
// gl2[i] = (z-1.)* (z-2.)* cexp((z-2.)*log(2.) + lngamma_lanczos((l+z-2.)/2.) - lngamma_lanczos((5.+l-z)/2.));
// }
// }

void c_window(double complex *out, double c_window_width, long halfN) {
// 'out' is (halfN+1) complex array
Expand Down
6 changes: 0 additions & 6 deletions cfastpt/utils_complex.h
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#include <complex.h>
#include <fftw3.h>
void f_z(double z_real, double *z_imag, double complex *fz, long N);
void g_l(double l, double nu, double *eta, double complex *gl, long N);
void g_l_1(double l, double nu, double *eta, double complex *gl1, long N);
void g_l_2(double l, double nu, double *eta, double complex *gl2, long N);

void c_window(double complex *out, double c_window_width, long halfN);

Expand All @@ -12,9 +9,6 @@ void c_window(double complex *out, double c_window_width, long halfN);
double complex gamma_lanczos(double complex z);
double complex lngamma_lanczos(double complex z);

void gamma_ratios(double l, double nu, double *eta, double complex *gl, long N);


void g_m_vals(double mu, double q_real, double *q_imag, double complex *gm, long N);


Expand Down
91 changes: 91 additions & 0 deletions cfftlog/cfftlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,94 @@ void cfftlog_ells_increment(double *x, double *fx, long N, config *config, int*
free(out_ifft);
free(fb);
}


// same ell but multiple integrands with same x-range
void cfftlog_multiple(double *x, double **fx, long N, long Nf, config *config, int ell, double *y, double **Fy) {

long N_original = N;
long N_pad = config->N_pad;
N += 2*N_pad;

if(N % 2) {printf("Please use even number of x !\n"); exit(0);}
long halfN = N/2;

double x0, y0;
x0 = x[0];

double dlnx;
dlnx = log(x[1]/x0);

// Only calculate the m>=0 part
double eta_m[halfN+1];
long i, j;
for(i=0; i<=halfN; i++) {eta_m[i] = 2*M_PI / dlnx / N * i;}

double complex gl[halfN+1];

switch(config->derivative) {
case 0: g_l_cfft((double)ell, config->nu, eta_m, gl, halfN+1); break;
case 1: g_l_1_cfft((double)ell, config->nu, eta_m, gl, halfN+1); break;
case 2: g_l_2_cfft((double)ell, config->nu, eta_m, gl, halfN+1); break;
default: printf("Integral Not Supported! Please choose config->derivative from [0,1,2].\n");
}
// printf("g2[0]: %.15e+I*(%.15e)\n", creal(g2[0]),cimag(g2[0]));

// calculate y arrays
for(i=0; i<N_original; i++) {y[i] = (ell+1.) / x[N_original-1-i];}
y0 = y[0];

// biased input func
double **fb;
fb = malloc(Nf* sizeof(double*));
for(j=0; j<Nf; j++) {
fb[j] = malloc(N* sizeof(double));

for(i=0; i<N_pad; i++) {
fb[j][i] = 0.;
fb[j][N-1-i] = 0.;
}
for(i=N_pad; i<N_pad+N_original; i++) {
fb[j][i] = fx[j][i-N_pad] / pow(x[i-N_pad], config->nu) ;
}
}

fftw_complex *out;
fftw_plan plan_forward, plan_backward;
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * (halfN+1) );
double *in_fb;
in_fb = malloc(sizeof(double) * N );
plan_forward = fftw_plan_dft_r2c_1d(N, in_fb, out, FFTW_ESTIMATE);

double *out_ifft;
out_ifft = malloc(sizeof(double) * N );
plan_backward = fftw_plan_dft_c2r_1d(N, out, out_ifft, FFTW_ESTIMATE);

for(j=0; j<Nf; j++){
for(i=0; i<N; i++) { in_fb[i] = fb[j][i];}
fftw_execute(plan_forward);

c_window_cfft(out, config->c_window_width, halfN);
// printf("out[1]:%.15e+i*(%.15e)\n", creal(out[1]), cimag(out[1]));

for(i=0; i<=halfN; i++) {
out[i] *= cpow(x0*y0/exp(2*N_pad*dlnx), -I*eta_m[i]) * gl[i] ;
out[i] = conj(out[i]);
}
// printf("out[1]:%.15e+i*(%.15e)\n", creal(out[1]), cimag(out[1]));

fftw_execute(plan_backward);

for(i=0; i<N_original; i++) {
Fy[j][i] = out_ifft[i-N_pad] * sqrt(M_PI) / (4.*N * pow(y[i], config->nu));
}
}

fftw_destroy_plan(plan_forward);
fftw_destroy_plan(plan_backward);
fftw_free(out);
free(out_ifft);
free(in_fb);
for(j=0; j<Nf; j++) { free(fb[j]); }
free(fb);
}
4 changes: 3 additions & 1 deletion cfftlog/cfftlog.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ void cfftlog(double *x, double *fx, long N, config *config, int ell, double *y,

void cfftlog_ells(double *x, double *fx, long N, config *config, int* ell, long Nell, double **y, double **Fy);

void cfftlog_ells_increment(double *x, double *fx, long N, config *config, int* ell, long Nell, double **y, double **Fy);
void cfftlog_ells_increment(double *x, double *fx, long N, config *config, int* ell, long Nell, double **y, double **Fy);

void cfftlog_multiple(double *x, double **fx, long N, long Nf, config *config, int ell, double *y, double **Fy);
32 changes: 28 additions & 4 deletions cfftlog/utils_complex.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,31 @@ double complex lngamma_lanczos_cfft(double complex z) {
return log(2*M_PI) /2. + (z+0.5)*clog(t) -t + clog(x);
}

double complex ln_g_m_vals_cfft(double mu, double complex q) {
/* similar routine as python version.
use asymptotic expansion for large |mu+q| */
double complex asym_plus = (mu+1+ q)/2.;
double complex asym_minus= (mu+1- q)/2.;

return (asym_plus-0.5)*clog(asym_plus) - (asym_minus-0.5)*clog(asym_minus) - q \
+1./12 *(1./asym_plus - 1./asym_minus) \
+1./360.*(1./cpow(asym_minus,3) - 1./cpow(asym_plus,3)) \
+1./1260*(1./cpow(asym_plus,5) - 1./cpow(asym_minus,5));
}

void g_l_cfft(double l, double nu, double *eta, double complex *gl, long N) {
/* z = nu + I*eta
Calculate g_l = exp( zln2 + lngamma( (l+nu)/2 + I*eta/2 ) - lngamma( (3+l-nu)/2 - I*eta/2 ) ) */
long i;
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
// gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
gl[i] = cexp(z*log(2.) + lngamma_lanczos_cfft((l+z)/2.) - lngamma_lanczos_cfft((3.+l-z)/2.) );
if(l+fabs(eta[i])<200){
// gl[i] = cexp(z*log(2.) + clog(gamma_lanczos((l+z)/2.) ) - clog(gamma_lanczos((3.+l-z)/2.)));
gl[i] = cexp(z*log(2.) + lngamma_lanczos_cfft((l+z)/2.) - lngamma_lanczos_cfft((3.+l-z)/2.) );
}else{
gl[i] = cexp(z*log(2.) + ln_g_m_vals_cfft(l+0.5, z-1.5));
}
// if(isnan(gl[i])) {printf("nan at l,nu,eta, = %lf %lg %lg %lg %lg\n", l,nu, eta[i], gamma_lanczos((l+z)/2.),gamma_lanczos((3.+l-z)/2.));exit(0);}
}
}
Expand All @@ -68,7 +84,11 @@ Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-1)/2 + I*eta/2 ) - lngamma( (4+l-nu)
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
gl1[i] = -(z-1.)* cexp((z-1.)*log(2.) + lngamma_lanczos_cfft((l+z-1.)/2.) - lngamma_lanczos_cfft((4.+l-z)/2.));
if(l+fabs(eta[i])<200){
gl1[i] = -(z-1.)* cexp((z-1.)*log(2.) + lngamma_lanczos_cfft((l+z-1.)/2.) - lngamma_lanczos_cfft((4.+l-z)/2.));
}else{
gl1[i] = -(z-1.)* cexp((z-1.)*log(2.) + ln_g_m_vals_cfft(l+0.5, z-2.5));
}
}
}

Expand All @@ -79,7 +99,11 @@ Calculate g_l_1 = exp(zln2 + lngamma( (l+nu-2)/2 + I*eta/2 ) - lngamma( (5+l-nu)
double complex z;
for(i=0; i<N; i++) {
z = nu+I*eta[i];
gl2[i] = (z-1.)* (z-2.)* cexp((z-2.)*log(2.) + lngamma_lanczos_cfft((l+z-2.)/2.) - lngamma_lanczos_cfft((5.+l-z)/2.));
if(l+fabs(eta[i])<200){
gl2[i] = (z-1.)* (z-2.)* cexp((z-2.)*log(2.) + lngamma_lanczos_cfft((l+z-2.)/2.) - lngamma_lanczos_cfft((5.+l-z)/2.));
}else{
gl2[i] = (z-1.)* (z-2.)* cexp((z-2.)*log(2.) + ln_g_m_vals_cfft(l+0.5, z-3.5));
}
}
}

Expand Down
3 changes: 2 additions & 1 deletion cfftlog/utils_complex.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ void c_window_cfft(double complex *out, double c_window_width, long halfN);
// void resample_fourier_gauss(double *k, double *fk, config *config);

double complex gamma_lanczos_cfft(double complex z);
double complex lngamma_lanczos_cfft(double complex z);
double complex lngamma_lanczos_cfft(double complex z);
double complex ln_g_m_vals_cfft(double mu, double complex q);
Loading