36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.hermite = void 0;
|
|
//================================================================
|
|
/**
|
|
* @packageDocumentation
|
|
* @module std
|
|
*/
|
|
//================================================================
|
|
var InvalidArgument_1 = require("../../exception/InvalidArgument");
|
|
/**
|
|
* Hermite polynomial
|
|
*
|
|
* @reference https://en.wikipedia.org/wiki/Hermite_polynomials
|
|
*/
|
|
function hermite(n, x) {
|
|
// VALIDATE PARAMETER
|
|
if ((n = Math.floor(n)) < 0)
|
|
throw new InvalidArgument_1.InvalidArgument("Error on std.hermite(): n must be unsigned integer -> (n = ".concat(n, ")."));
|
|
// MEMORIZATION
|
|
var solutions = [1, 2 * x];
|
|
// COMPUTE RETURN VALUE
|
|
return _Hermite(n, x, solutions);
|
|
}
|
|
exports.hermite = hermite;
|
|
function _Hermite(n, x, solutions) {
|
|
if (solutions.length > n)
|
|
return solutions[n];
|
|
var hn_1 = _Hermite(n - 1, x, solutions);
|
|
var hn_2 = _Hermite(n - 2, x, solutions);
|
|
var ret = x * hn_1 - (n - 1) * hn_2;
|
|
ret *= 2;
|
|
solutions[n] = ret;
|
|
return ret;
|
|
}
|
|
//# sourceMappingURL=hermite.js.map
|