Calculates the (regularized) Epstein zeta function.
More...
#include <complex.h>
#include <math.h>
#include <stdbool.h>
#include <stdlib.h>
#include "crandall.h"
#include "tools.h"
#include "zeta.h"
|
#define | G_BOUND 3.2 |
| Smallest value z such that G(nu, z) is negligible for nu < 10.
|
|
#define | EPS ldexp(1, -30) |
| epsilon for the cutoff around nu = dimension.
|
|
#define | EPS_ZERO_Y 1e-64 |
| epsilon for the cutoff around x = 0 and y = 0
|
|
|
double complex | sum_real (double nu, unsigned int dim, double lambda, const double *m, const double *x, const double *y, const int cutoffs[], double zArgBound) |
| calculates the first sum in Crandall's formula.
|
|
double complex | sum_fourier (double nu, unsigned int dim, double lambda, const double *m_invt, const double *x, const double *y, const int cutoffs[], double zArgBound) |
| calculates the second sum in Crandall's formula.
|
|
double * | vectorProj (unsigned int dim, const double *m, const double *m_invt, const double *v) |
| calculate projection of vector to elementary lattice cell.
|
|
double complex | epsteinZetaInternal (double nu, unsigned int dim, const double *m, const double *x, const double *y, double lambda, int reg) |
| calculates the (regularized) Epstein Zeta function.
|
|
Calculates the (regularized) Epstein zeta function.
◆ epsteinZetaInternal()
double complex epsteinZetaInternal |
( |
double | nu, |
|
|
unsigned int | dim, |
|
|
const double * | m, |
|
|
const double * | x, |
|
|
const double * | y, |
|
|
double | lambda, |
|
|
int | reg ) |
calculates the (regularized) Epstein Zeta function.
- Parameters
-
[in] | nu | exponent for the Epstein zeta function. |
[in] | dim | dimension of the input vectors. |
[in] | m | matrix that transforms the lattice in the Epstein Zeta function. |
[in] | x | x vector of the Epstein Zeta function. |
[in] | y | y vector of the Epstein Zeta function. |
[in] | lambda | relative weight of the sums in Crandall's formula. |
[in] | reg | 0 for no regularization, > 0 for the regularization. |
- Returns
- function value of the regularized Epstein zeta.
◆ sum_fourier()
double complex sum_fourier |
( |
double | nu, |
|
|
unsigned int | dim, |
|
|
double | lambda, |
|
|
const double * | m_invt, |
|
|
const double * | x, |
|
|
const double * | y, |
|
|
const int | cutoffs[], |
|
|
double | zArgBound ) |
calculates the second sum in Crandall's formula.
- Parameters
-
[in] | nu | exponent for the Epstein zeta function. |
[in] | dim | dimension of the input vectors. |
[in] | lambda | parameters that decides the weight of each sum. |
[in] | m | matrix that transforms the lattice in the Epstein Zeta function. |
[in] | x | projection of x vector to elementary lattice cell. |
[in] | y | projection of y vector to elementary lattice cell. |
[in] | cutoffs | how many summands in each direction are considered. |
[in] | zArgBound | global bound on when to use the asymptotic expansion in the incomplete gamma evaluation. |
- Returns
- helper function for the second sum in crandalls formula. Calculates sum_{k in m_invt whole_numbers ** dim without zero} G_{dim - nu}(lambda * (k + y)) X exp(-2 * PI * I * x * (k + y))
◆ sum_real()
double complex sum_real |
( |
double | nu, |
|
|
unsigned int | dim, |
|
|
double | lambda, |
|
|
const double * | m, |
|
|
const double * | x, |
|
|
const double * | y, |
|
|
const int | cutoffs[], |
|
|
double | zArgBound ) |
calculates the first sum in Crandall's formula.
- Parameters
-
[in] | nu | exponent for the Epstein zeta function. |
[in] | dim | dimension of the input vectors. |
[in] | lambda | parameters that decides the weight of each sum. |
[in] | m | matrix that transforms the lattice in the Epstein Zeta function. |
[in] | x | projection of x vector to elementary lattice cell. |
[in] | y | projection of y vector to elementary lattice cell. |
[in] | cutoffs | how many summands in each direction are considered. |
[in] | zArgBound | global bound on when to use the asymptotic expansion in the incomplete gamma evaluation. |
- Returns
- helper function for the first sum in crandalls formula. Calculates sum_{z in m whole_numbers ** dim} G_{nu}((z - x) / lambda)) X exp(-2 * PI * I * z * y)
◆ vectorProj()
double * vectorProj |
( |
unsigned int | dim, |
|
|
const double * | m, |
|
|
const double * | m_invt, |
|
|
const double * | v ) |
calculate projection of vector to elementary lattice cell.
- Parameters
-
[in] | dim | dimension of the input vectors |
[in] | m | matrix that transforms the lattice in the function. |
[in] | m_invt | inverse of m. |
[in] | v | vector for which the projection to the elementary lattice cell is needet. |
- Returns
- projection of v to the elementary lattice cell.