-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathutils.c
48 lines (41 loc) · 1.15 KB
/
utils.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdlib.h>
#include <math.h>
#include "utils.h"
void extrap_log_linear(double *fk, int N_origin, int N_extra, double *large_fk) {
double dln_left, dln_right;
int i;
dln_left = log(fk[1]/fk[0]);
// printf("fk[0],fk[1]: %.15e,%.15e,%.15e,%.15e,%.15e\n", fk[0],fk[1],fk[2],fk[3],fk[4]);
if(fk[0]<=0.) {
for(i=0; i<N_extra; i++) {
large_fk[i] = 0.;
}
}
else{
for(i=0; i<N_extra; i++) {
large_fk[i] = exp(log(fk[0]) + (i - N_extra) * dln_left);
}
}
for(i=N_extra; i< N_extra+N_origin; i++) {
large_fk[i] = fk[i - N_extra];
}
dln_right = log(fk[N_origin-1]/fk[N_origin-2]);
if(fk[N_origin-1]<=0.) {
for(i=N_extra+N_origin; i< 2*N_extra+N_origin; i++) {
large_fk[i] = 0.;
}
}
else {
for(i=N_extra+N_origin; i< 2*N_extra+N_origin; i++) {
large_fk[i] = exp(log(fk[N_origin-1]) + (i - N_extra - N_origin +1) * dln_right);
}
}
}
// void resample_fourier_gauss(double *k, double *fk, config *config, double *k_sample, double *fk_sample) {
// long i;
// double dlnk = log(k[sizeof(k)-1]/k[0]) / (config->Nk_sample-1.);
// for(i=0; i<config->Nk_sample; i++) {
// k_sample[i] = k[0] * exp(i*dlnk);
// fk_sample[i] =
// }
// }