Epstein Zeta Library 0.6.2
Calculates the Epstein Zeta function
Loading...
Searching...
No Matches
harmonics.h
1// SPDX-FileCopyrightText: 2025-2026 Jonathan Busse <jonathan@jbusse.de>
2//
3// SPDX-License-Identifier: AGPL-3.0-only
4
10#include "hpdyad.h"
11
12#ifndef EPSTEIN_HARMONICS
13#define EPSTEIN_HARMONICS
14
23double coeffs_c_inner(long long n, long long i, long long k, long long dim);
24
31double coeffs_c_outer(long long n, long long k, long long dim);
32
40void coeffs_c_inner_hpdyad(unsigned int n, unsigned int i, unsigned int k,
41 unsigned int dim, hpdyad_t *out);
42
50void harmonic_h_inner_term_scalar_hpdyad(unsigned int n, unsigned int i,
51 unsigned int k, unsigned int dim,
52 hpdyad_t *out);
53
62void harmonic_h_inner_term_multi_hpdyad(unsigned int dim, const unsigned int *alpha,
63 const unsigned int *beta,
64 const unsigned int *theta1,
65 const unsigned int *theta2, hpdyad_t *out);
66
76double harmonic_h_inner_sum(unsigned int k, unsigned int dim,
77 const unsigned int *alpha, const unsigned int *gamma,
78 unsigned int alphaAbs);
79
93unsigned long long
94precompute_harmonic_h_inner_chunk_size(unsigned int alphaAbs, unsigned int kMax,
95 unsigned int dim, const unsigned int *alpha,
96 unsigned long long *chunk_offset,
97 unsigned long long *valid_count);
98
114void precompute_harmonic_h_inner_sum(unsigned int alphaAbs, unsigned int dim,
115 const unsigned int *alpha,
116 const unsigned long long *chunk_offset,
117 double *coeffs, unsigned int *exponents);
118
133double harmonic_h(unsigned int k, unsigned int dim, const double *z,
134 unsigned int alphaAbs, const unsigned long long *chunk_offset,
135 const unsigned long long *valid_count, const double *coeffs,
136 const unsigned int *exponents);
137
138#endif
double coeffs_c_inner(long long n, long long i, long long k, long long dim)
Computes cₙ,ᵢ,ₖ= ∏_{j=i+1}^{⌊n/2⌋-k} (2n+d−2−4k−2j).
Definition harmonics.c:23
void coeffs_c_inner_hpdyad(unsigned int n, unsigned int i, unsigned int k, unsigned int dim, hpdyad_t *out)
Computes cₙ,ᵢ,ₖ= ∏_{j=i+1}^{⌊n/2⌋-k} (2n+d−2−4k−2j) as hpdyad.
Definition harmonics.c:72
void harmonic_h_inner_term_multi_hpdyad(unsigned int dim, const unsigned int *alpha, const unsigned int *beta, const unsigned int *theta1, const unsigned int *theta2, hpdyad_t *out)
Computes binom(i,β) × binom(α,θ₁) × θ₂!/(θ₂−θ₁)! as hpdyad.
Definition harmonics.c:126
double coeffs_c_outer(long long n, long long k, long long dim)
Computes cₙ,ₖ=2⁻ᵏ/ cₙ,₀,ₖ ∏ⱼ₌₁ᵏ(2n+d−2j)∕((2n+d+2−4j)(2n+d−4j)).
Definition harmonics.c:42
double harmonic_h_inner_sum(unsigned int k, unsigned int dim, const unsigned int *alpha, const unsigned int *gamma, unsigned int alphaAbs)
Computes the inner sum h_inner(α,γ,k) using exact hpdyad arithmetic.
Definition harmonics.c:173
unsigned long long precompute_harmonic_h_inner_chunk_size(unsigned int alphaAbs, unsigned int kMax, unsigned int dim, const unsigned int *alpha, unsigned long long *chunk_offset, unsigned long long *valid_count)
Computes chunk offsets and valid entry counts for precomputed inner harmonic sums corresponding to k ...
Definition harmonics.c:282
void harmonic_h_inner_term_scalar_hpdyad(unsigned int n, unsigned int i, unsigned int k, unsigned int dim, hpdyad_t *out)
Computes (-2)**(-i) · c_{n,i,k} · binom(i+k,k) as hpdyad.
Definition harmonics.c:98
double harmonic_h(unsigned int k, unsigned int dim, const double *z, unsigned int alphaAbs, const unsigned long long *chunk_offset, const unsigned long long *valid_count, const double *coeffs, const unsigned int *exponents)
Calculates the homogeneous harmonic polynomial h₍α,k₎ of degree |α|−2k such that y^α = ∑ₖ (y·y)^k h₍α...
Definition harmonics.c:399
void precompute_harmonic_h_inner_sum(unsigned int alphaAbs, unsigned int dim, const unsigned int *alpha, const unsigned long long *chunk_offset, double *coeffs, unsigned int *exponents)
Precomputes and stores inner harmonic sums h_inner(α,γ,k) and exponents (2γ-α) for all k = 0,...
Definition harmonics.c:328
High-precision dyadic number operations.
Fixed-size high-precision dyadic number (hpdyad) with separate sign and binary exponent.
Definition hpdyad.h:28