Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

mir.math.func.hermite

Hermite Polynomial Coefficients
License:
Authors:
John Hall
pure nothrow @safe long[] hermiteCoefficientsNorm(size_t N);
Normalized (probabilist's) Hermite polynomial coefficients
Parameters:
size_t N Degree of polynomial
Examples:
import mir.polynomial: polynomial;
import mir.rc.array: rcarray;
import mir.test: should;

auto h0 = hermiteCoefficientsNorm(0).rcarray!(const double).polynomial;
auto h1 = hermiteCoefficientsNorm(1).rcarray!(const double).polynomial;
auto h2 = hermiteCoefficientsNorm(2).rcarray!(const double).polynomial;
auto h3 = hermiteCoefficientsNorm(3).rcarray!(const double).polynomial;
auto h4 = hermiteCoefficientsNorm(4).rcarray!(const double).polynomial;
auto h5 = hermiteCoefficientsNorm(5).rcarray!(const double).polynomial;
auto h6 = hermiteCoefficientsNorm(6).rcarray!(const double).polynomial;
auto h7 = hermiteCoefficientsNorm(7).rcarray!(const double).polynomial;
auto h8 = hermiteCoefficientsNorm(8).rcarray!(const double).polynomial;
auto h9 = hermiteCoefficientsNorm(9).rcarray!(const double).polynomial;
auto h10 = hermiteCoefficientsNorm(10).rcarray!(const double).polynomial;

h0(3).should == 1;
h1(3).should == 3;
h2(3).should == 8;
h3(3).should == 18;
h4(3).should == 30;
h5(3).should == 18;
h6(3).should == -96;
h7(3).should == -396;
h8(3).should == -516;
h9(3).should == 1_620;
h10(3).should == 9_504;
Examples:
Also works with @nogc CTFE
import mir.ndslice.slice: sliced;
import mir.test: should;

static immutable result = [-1, 0, 1];

static immutable hc2 = hermiteCoefficientsNorm(2);
hc2.sliced.should == result;
pure nothrow @safe long[] hermiteCoefficients(size_t N);
Physicist's Hermite polynomial coefficients
Parameters:
size_t N Degree of polynomial
Examples:
import mir.polynomial: polynomial;
import mir.rc.array: rcarray;
import mir.test: should;

auto h0 = hermiteCoefficients(0).rcarray!(const double).polynomial;
auto h1 = hermiteCoefficients(1).rcarray!(const double).polynomial;
auto h2 = hermiteCoefficients(2).rcarray!(const double).polynomial;
auto h3 = hermiteCoefficients(3).rcarray!(const double).polynomial;
auto h4 = hermiteCoefficients(4).rcarray!(const double).polynomial;
auto h5 = hermiteCoefficients(5).rcarray!(const double).polynomial;
auto h6 = hermiteCoefficients(6).rcarray!(const double).polynomial;
auto h7 = hermiteCoefficients(7).rcarray!(const double).polynomial;
auto h8 = hermiteCoefficients(8).rcarray!(const double).polynomial;
auto h9 = hermiteCoefficients(9).rcarray!(const double).polynomial;
auto h10 = hermiteCoefficients(10).rcarray!(const double).polynomial;

h0(3).should == 1;
h1(3).should == 6;
h2(3).should == 34;
h3(3).should == 180;
h4(3).should == 876;
h5(3).should == 3_816;
h6(3).should == 14_136;
h7(3).should == 39_024;
h8(3).should == 36_240;
h9(3).should == -406_944;
h10(3).should == -3_093_984;
Examples:
Also works with @nogc CTFE
import mir.ndslice.slice: sliced;
import mir.test: should;

static immutable result = [-2, 0, 4];

static immutable hc2 = hermiteCoefficients(2);
hc2.sliced.should == result;