Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
special_functions.hpp File Reference
#include <algorithm>
#include <cmath>
#include <limits>

Go to the source code of this file.

Namespaces

namespace  pulp
namespace  pulp::signal
namespace  pulp::signal::special

Functions

float pulp::signal::sinc (float x)
 Sinc function: sin(pi*x) / (pi*x), with sinc(0) = 1.
float pulp::signal::bessel_i0 (float x)
 Modified Bessel function of the first kind, order 0 Used in Kaiser window design.
float pulp::signal::gamma_fn (float x)
 Gamma function approximation (Stirling's for large x, series for small).
float pulp::signal::erf_fn (float x)
 Error function.
float pulp::signal::erfc_fn (float x)
 Complementary error function.
float pulp::signal::lanczos (float x, int a)
 Lanczos kernel (used in high-quality resampling).
float pulp::signal::db_to_linear (float db)
 dB to linear gain conversion
float pulp::signal::linear_to_db (float linear)
 Linear gain to dB conversion.
float pulp::signal::freq_to_midi (float freq)
 Frequency to MIDI note number (A4 = 69).
float pulp::signal::midi_to_freq (float note)
 MIDI note number to frequency.
double pulp::signal::special::elliptic_K (double m)
 Complete elliptic integral of the first kind, K(m), m = k^2 in [0, 1).
double pulp::signal::special::elliptic_E (double m)
 Complete elliptic integral of the second kind, E(m), m = k^2 in [0, 1].
double pulp::signal::special::jacobi_nome (double m)
 Jacobi nome q(m) = exp(-pi * K(1 - m) / K(m)).
void pulp::signal::special::jacobi_sncndn (double u, double m, double *sn_out, double *cn_out, double *dn_out)
 Jacobi elliptic functions sn(u, m), cn(u, m), dn(u, m) — all three at once because the AGM-based scheme produces them together.
double pulp::signal::special::jacobi_sn (double u, double m)
 Convenience: sn(u, m).
double pulp::signal::special::jacobi_cn (double u, double m)
 Convenience: cn(u, m).
double pulp::signal::special::jacobi_dn (double u, double m)
 Convenience: dn(u, m).
double pulp::signal::special::carlson_RF (double x, double y, double z)
 Carlson's symmetric elliptic integral of the first kind, RF(x, y, z).
double pulp::signal::special::jacobi_asn (double x, double m)
 Inverse Jacobi sn: returns u such that sn(u, m) = x, for x in [-1, 1].

Variables

constexpr double pulp::signal::special::kPi = 3.141592653589793238462643383279502884
 Pi as a double-precision constant. Used by every routine below.