Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
fftlog.h File Reference
#include <complex.h>
Include dependency graph for fftlog.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define FFTLOG_H
 

Functions

void pk2xi (int N, const double k[], const double pk[], double r[], double xi[])
 
void xi2pk (int N, const double r[], const double xi[], double k[], double pk[])
 
void fftlog_ComputeXiLM (double l, double m, int N, const double k[], const double pk[], double r[], double xi[])
 
void fftlog_ComputeXi2D (double bessel_order, int N, const double l[], const double cl[], double th[], double xi[])
 
void fht (int N, const double r[], const double _Complex a[], double k[], double _Complex b[], double mu, double q, double kcrc, int noring, double _Complex *u)
 
void compute_u_coefficients (int N, double mu, double q, double L, double kcrc, double _Complex u[])
 

Macro Definition Documentation

#define FFTLOG_H

Definition at line 6 of file fftlog.h.

Function Documentation

void compute_u_coefficients ( int  N,
double  mu,
double  q,
double  L,
double  kcrc,
double _Complex  u[] 
)
void fftlog_ComputeXi2D ( double  bessel_order,
int  N,
const double  l[],
const double  cl[],
double  th[],
double  xi[] 
)

Definition at line 144 of file fftlog.c.

References fht(), and M_PI.

Referenced by ccl_tracer_corr_fftlog().

146 {
147  double complex* a = malloc(sizeof(complex double)*N);
148  double complex* b = malloc(sizeof(complex double)*N);
149 
150  for(int i=0;i<N;i++)
151  a[i]=l[i]*cl[i];
152  fht(N,l,a,th,b,bessel_order,0,1,1,NULL);
153  for(int i=0;i<N;i++)
154  xi[i]=creal(b[i]/(2*M_PI*th[i]));
155 
156  free(a);
157  free(b);
158 }
#define M_PI
Definition: ccl_constants.h:22
void fht(int N, const double r[], const double complex a[], double k[], double complex b[], double mu, double q, double kcrc, int noring, double complex *u)
Definition: fftlog.c:104
void fftlog_ComputeXiLM ( double  l,
double  m,
int  N,
const double  k[],
const double  pk[],
double  r[],
double  xi[] 
)

Definition at line 160 of file fftlog.c.

References fht(), M_PI, and pow().

Referenced by pk2xi(), and xi2pk().

162 {
163  double complex* a = malloc(sizeof(complex double)*N);
164  double complex* b = malloc(sizeof(complex double)*N);
165 
166  for(int i = 0; i < N; i++)
167  a[i] = pow(k[i], m - 0.5) * pk[i];
168  fht(N, k, a, r, b, l + 0.5, 0, 1, 1, NULL);
169  for(int i = 0; i < N; i++)
170  xi[i] = creal(pow(2*M_PI*r[i], -(m-0.5)) * b[i]);
171 
172  free(a);
173  free(b);
174 }
#define M_PI
Definition: ccl_constants.h:22
void fht(int N, const double r[], const double complex a[], double k[], double complex b[], double mu, double q, double kcrc, int noring, double complex *u)
Definition: fftlog.c:104
float pow(float base, unsigned long int exp)
Definition: precision.hpp:39
static int m[2]
Definition: ccl_emu17.c:25
void fht ( int  N,
const double  r[],
const double _Complex  a[],
double  k[],
double _Complex  b[],
double  mu,
double  q,
double  kcrc,
int  noring,
double _Complex *  u 
)
void pk2xi ( int  N,
const double  k[],
const double  pk[],
double  r[],
double  xi[] 
)

Definition at line 176 of file fftlog.c.

References fftlog_ComputeXiLM().

Referenced by ccl_correlation_3d().

177 {
178  fftlog_ComputeXiLM(0, 2, N, k, pk, r, xi);
179 }
void fftlog_ComputeXiLM(double l, double m, int N, const double k[], const double pk[], double r[], double xi[])
Definition: fftlog.c:160
void xi2pk ( int  N,
const double  r[],
const double  xi[],
double  k[],
double  pk[] 
)

Definition at line 181 of file fftlog.c.

References fftlog_ComputeXiLM(), and M_PI.

182 {
183  static const double TwoPiCubed = 8*M_PI*M_PI*M_PI;
184  fftlog_ComputeXiLM(0, 2, N, r, xi, k, pk);
185  for(int j = 0; j < N; j++)
186  pk[j] *= TwoPiCubed;
187 }
void fftlog_ComputeXiLM(double l, double m, int N, const double k[], const double pk[], double r[], double xi[])
Definition: fftlog.c:160
#define M_PI
Definition: ccl_constants.h:22