Epstein Zeta Library 0.6.2
Calculates the Epstein Zeta function
Loading...
Searching...
No Matches
Macros | Functions
crandall.c File Reference

Calculates the summand function G and related functions in Crandall's formula. More...

#include "crandall.h"
#include "gamma.h"
#include "stdbool.h"
#include "tools.h"
#include <complex.h>
#include <float.h>
#include <math.h>
Include dependency graph for crandall.c:

Macros

#define EPS   ldexp(1, -30)
 epsilon for the cutoff around nu = dimension.
 
#define EPS_ZERO_PIY   (M_PI * 1e-64)
 epsilon for the cutoff around arguments of the crandall function around zero.
 

Functions

double assignzArgBound (double nu)
 Calculates bounds on when to use asymptotic expansion of the upper incomplete gamma function, depending on the value of nu.
 
double complex crandall_g (unsigned int dim, double nu, const double *z, double prefactor, double zArgBound)
 Calculates the upper Crandall function.
 
double complex crandall_gReg_nuequalsdimplus2k (double s, double arg, double k, double lambda)
 Calculates the regularization of the zero summand in the second sum in Crandall's formula in the special case of nu = dim + 2k for some natural number k.
 
double complex crandall_gReg (unsigned int dim, double s, const double *z, double prefactor)
 Calculates the regularization of the zero summand in the second sum in Crandall's formula.
 
double complex crandall_g_lower (unsigned int dim, double nu, const double *z, double prefactor)
 Calculates the lower Crandall function.
 
double crandall_gReg_harmonic (int k, int n, unsigned int dim, double s, const double *z, double prefactor)
 Calculates the regularization of the zero summand in the second sum in Crandall's formula for the harmonic method.
 
double polynomial_y_der (unsigned int k, unsigned int dim, const double *z, const unsigned int *alpha, unsigned int alphaAbs, unsigned int n)
 Calculates the derivatives of Y_k(z) / n! = (pi * z**2)**k / n! where n <= k.
 

Detailed Description

Calculates the summand function G and related functions in Crandall's formula.

Function Documentation

◆ assignzArgBound()

double assignzArgBound ( double nu)

Calculates bounds on when to use asymptotic expansion of the upper incomplete gamma function, depending on the value of nu.

calculates bounds on when to use asymptotic expansion of the upper incomplete gamma function, depending on the value of nu.

Parameters
[in]nuexponent of the regularized Epstein zeta function.
Returns
minimum value of z, when to use the fast asymptotic expansion in the calculation of the incomplete upper gamma function upperGamma(nu, z).

◆ crandall_g()

double complex crandall_g ( unsigned int dim,
double nu,
const double * z,
double prefactor,
double zArgBound )

Calculates the upper Crandall function.

Parameters
[in]dimdimension of the input vectors.
[in]nuexponent of the regularized Epstein zeta function.
[in]zinput vector of the function.
[in]prefactorprefactor of the vector, e. g. lambda or 1/lambda in Crandall's formula
[in]zArgBoundminimum value of pi * z**2, when to use the fast asymptotic expansion in the calculation of the Crandall function.
Returns
upperGamma(nu / 2,pi prefactor * z**2) / (pi * prefactor z**2)^(nu / 2) if |z| > 0 and - 2 / nu otherwise.

◆ crandall_g_lower()

double complex crandall_g_lower ( unsigned int dim,
double nu,
const double * z,
double prefactor )

Calculates the lower Crandall function.

Parameters
[in]dimdimension of the input vectors.
[in]nuexponent of the regularized Epstein zeta function.
[in]zinput vector of the function.
[in]prefactorprefactor of the vector, e. g. lambda or 1/lambda in Crandall's formula
[in]zArgBoundminimum value of pi * z**2, when to use the fast asymptotic expansion in the calculation of the Crandall function.
Returns
lowerGamma(nu / 2,pi prefactor * z**2) / (pi * prefactor z**2)^(nu / 2) if |z| > 0 and 2 / nu otherwise.

◆ crandall_gReg()

double complex crandall_gReg ( unsigned int dim,
double s,
const double * z,
double prefactor )

Calculates the regularization of the zero summand in the second sum in Crandall's formula.

Parameters
[in]dimdimension of the input vectors.
[in]sdimension minus exponent of the regularized Epstein zeta function, that is d - nu.
[in]zinput vector of the function.
[in]prefactorprefactor of the vector, e. g. lambda.
Returns
- gamma(s/2) * gammaStar(s/2, pi * prefactor * z**2), where gammaStar is the twice regularized lower incomplete gamma function if s is not equal to - 2k and (pi * prefactor * y ** 2) ** (- s / 2) (gamma(s / 2, pi * prefactor * z ** 2) + ((-1)^k / k! ) * (log(pi * y ** 2) - log(prefactor ** 2))) if s is equal to - 2k for non negative natural number k.

◆ crandall_gReg_harmonic()

double crandall_gReg_harmonic ( int k,
int n,
unsigned int dim,
double s,
const double * z,
double prefactor )

Calculates the regularization of the zero summand in the second sum in Crandall's formula for the harmonic method.

Parameters
[in]kspecifies degree |alpha| - 2k.
[in]n|alpha|.
[in]sdimension minus exponent of the regularized Epstein zeta function, that is d - nu.
[in]dimdimension of the input vectors.
[in]zinput vector of the function.
[in]prefactorprefactor of the vector, e. g. lambda.
Returns
- gamma(s/2) * gammaStar(s/2, pi * prefactor * z**2), where gammaStar is the twice regularized lower incomplete gamma function if s is and the special definition if s is equal to - 2k for non negative natural number k <= l.

◆ crandall_gReg_nuequalsdimplus2k()

double complex crandall_gReg_nuequalsdimplus2k ( double s,
double arg,
double k,
double lambda )

Calculates the regularization of the zero summand in the second sum in Crandall's formula in the special case of nu = dim + 2k for some natural number k.

Parameters
[in]sdimension minus exponent of the regularized Epstein zeta function.
[in]arginput of the function.
[in]kk = - s / 2 = (nu - d) / 2 as an integer.
[in]lambdascaling parameter of crandalls formula.
Returns
arg ** (- s / 2) * (gamma(s / 2, arg) + ((-1)^k / k! ) * (log(arg) - log(lambda ** 2)).

◆ polynomial_y_der()

double polynomial_y_der ( unsigned int k,
unsigned int dim,
const double * z,
const unsigned int * alpha,
unsigned int alphaAbs,
unsigned int n )

Calculates the derivatives of Y_k(z) / n! = (pi * z**2)**k / n! where n <= k.

Parameters
[in]kinteger power.
[in]dimdimension of z.
[in]yvector of the polynomial. @parma[in] alpha: multi-index for the derivative.
[in]nfactorial divisor smaller than k.
Returns
partial derivative of Y_k(z) / n!.