diff --git a/math/base/special/gamma-lanczos-sum/coverage.ndjson b/math/base/special/gamma-lanczos-sum/coverage.ndjson new file mode 100644 index 000000000..99bcc7f12 --- /dev/null +++ b/math/base/special/gamma-lanczos-sum/coverage.ndjson @@ -0,0 +1 @@ +[255,258,98.8372,8,10,80,2,2,100,255,258,98.8372,"5c8ab250e07d8f3cf603522c1d354a2f983e354b","2024-03-20 17:04:32 -0700"] diff --git a/math/base/special/gamma-lanczos-sum/index.html b/math/base/special/gamma-lanczos-sum/index.html new file mode 100644 index 000000000..5b9f13303 --- /dev/null +++ b/math/base/special/gamma-lanczos-sum/index.html @@ -0,0 +1,161 @@ + + + + +
++ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +File | ++ | Statements | ++ | Branches | ++ | Functions | ++ | Lines | ++ |
---|---|---|---|---|---|---|---|---|---|
index.js | +
+
+ |
+ 100% | +55/55 | +100% | +1/1 | +100% | +0/0 | +100% | +55/55 | +
main.js | +
+
+ |
+ 100% | +73/73 | +100% | +1/1 | +100% | +0/0 | +100% | +73/73 | +
native.js | +
+
+ |
+ 100% | +66/66 | +100% | +2/2 | +100% | +1/1 | +100% | +66/66 | +
rational_pq.js | +
+
+ |
+ 95.31% | +61/64 | +66.66% | +4/6 | +100% | +1/1 | +95.31% | +61/64 | +
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 | 1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +/** +* Calculate the Lanczos sum for the approximation of the gamma function. +* +* @module @stdlib/math/base/special/gamma-lanczos-sum +* +* @example +* var gammaLanczosSum = require( '@stdlib/math/base/special/gamma-lanczos-sum' ); +* +* var v = gammaLanczosSum( 4.0 ); +* // returns ~950.366 +* +* v = gammaLanczosSum( -1.5 ); +* // returns ~1373366.245 +* +* v = gammaLanczosSum( -0.5 ); +* // returns ~-699841.735 +* +* v = gammaLanczosSum( 0.5 ); +* // returns ~96074.186 +* +* v = gammaLanczosSum( 0.0 ); +* // returns Infinity +* +* v = gammaLanczosSum( NaN ); +* // returns NaN +*/ + +// MODULES // + +var main = require( './main.js' ); + + +// EXPORTS // + +module.exports = main; + |
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +73 +74 | 1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2018 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* +* +* ## Notice +* +* The original C++ code and copyright notice are from the [Boost library]{@link http://www.boost.org/doc/libs/1_64_0/boost/math/special_functions/lanczos.hpp}. The implementation has been modified for JavaScript. +* +* ```text +* Copyright John Maddock 2006. +* +* Use, modification and distribution are subject to the +* Boost Software License, Version 1.0. (See accompanying file +* LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt) +* ``` +*/ + +'use strict'; + +// MAIN // + +/** +* Calculates the Lanczos sum approximation. +* +* @name gammaLanczosSum +* @type {Function} +* @param {number} x - input value +* @returns {number} Lanczos sum approximation +* +* @example +* var v = gammaLanczosSum( 4.0 ); +* // returns ~950.366 +* +* @example +* var v = gammaLanczosSum( -1.5 ); +* // returns ~1373366.245 +* +* @example +* var v = gammaLanczosSum( -0.5 ); +* // returns ~-699841.735 +* +* @example +* var v = gammaLanczosSum( 0.5 ); +* // returns ~96074.186 +* +* @example +* var v = gammaLanczosSum( 0.0 ); +* // returns Infinity +* +* @example +* var v = gammaLanczosSum( NaN ); +* // returns NaN +*/ +var gammaLanczosSum = require( './rational_pq.js' ); + + +// EXPORTS // + +module.exports = gammaLanczosSum; + |
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 +66 +67 | 1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +501x +501x +501x +1x +1x +1x +1x +1x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +'use strict'; + +// MODULES // + +var addon = require( './../src/addon.node' ); + + +// MAIN // + +/** +* Calculates the Lanczos sum for the approximation of the gamma function. +* +* @private +* @param {number} x - input value +* @returns {number} Lanczos sum approximation +* +* @example +* var v = gammaLanczosSum( 4.0 ); +* // returns ~950.366 +* +* @example +* var v = gammaLanczosSum( -1.5 ); +* // returns ~1373366.245 +* +* @example +* var v = gammaLanczosSum( -0.5 ); +* // returns ~-699841.735 +* +* @example +* var v = gammaLanczosSum( 0.5 ); +* // returns ~96074.186 +* +* @example +* var v = gammaLanczosSum( 0.0 ); +* // returns Infinity +* +* @example +* var v = gammaLanczosSum( NaN ); +* // returns NaN +*/ +function gammaLanczosSum( x ) { + return addon( x ); +} + + +// EXPORTS // + +module.exports = gammaLanczosSum; + |
+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +
+ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +25 +26 +27 +28 +29 +30 +31 +32 +33 +34 +35 +36 +37 +38 +39 +40 +41 +42 +43 +44 +45 +46 +47 +48 +49 +50 +51 +52 +53 +54 +55 +56 +57 +58 +59 +60 +61 +62 +63 +64 +65 | 1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +501x +501x +501x +501x +501x + + +501x + +501x +501x +501x +501x +1x +1x +501x +500x +500x +500x +500x +501x +501x +1x +1x +1x +1x +1x + | /** +* @license Apache-2.0 +* +* Copyright (c) 2024 The Stdlib Authors. +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +/* This is a generated file. Do not edit directly. */ +'use strict'; + +// MAIN // + +/** +* Evaluates a rational function (i.e., the ratio of two polynomials described by the coefficients stored in \\(P\\) and \\(Q\\)). +* +* ## Notes +* +* - Coefficients should be sorted in ascending degree. +* - The implementation uses [Horner's rule][horners-method] for efficient computation. +* +* [horners-method]: https://en.wikipedia.org/wiki/Horner%27s_method +* +* @private +* @param {number} x - value at which to evaluate the rational function +* @returns {number} evaluated rational function +*/ +function evalrational( x ) { + var ax; + var s1; + var s2; + if ( x === 0.0 ) { + return Infinity; + } + if ( x < 0.0 ) { + ax = -x; + } else { + ax = x; + } + if ( ax <= 1.0 ) { + s1 = 38474670393.31777 + (x * (36857665043.51951 + (x * (15889202453.72942 + (x * (4059208354.298835 + (x * (680547661.1834733 + (x * (78239755.00312005 + (x * (6246580.776401795 + (x * (341986.3488721347 + (x * (12287.194511824551 + (x * (261.61404416416684 + (x * 2.5066282746310007))))))))))))))))))); // eslint-disable-line max-len + s2 = 0.0 + (x * (362880.0 + (x * (1026576.0 + (x * (1172700.0 + (x * (723680.0 + (x * (269325.0 + (x * (63273.0 + (x * (9450.0 + (x * (870.0 + (x * (45.0 + (x * 1.0))))))))))))))))))); // eslint-disable-line max-len + } else { + x = 1.0 / x; + s1 = 2.5066282746310007 + (x * (261.61404416416684 + (x * (12287.194511824551 + (x * (341986.3488721347 + (x * (6246580.776401795 + (x * (78239755.00312005 + (x * (680547661.1834733 + (x * (4059208354.298835 + (x * (15889202453.72942 + (x * (36857665043.51951 + (x * 38474670393.31777))))))))))))))))))); // eslint-disable-line max-len + s2 = 1.0 + (x * (45.0 + (x * (870.0 + (x * (9450.0 + (x * (63273.0 + (x * (269325.0 + (x * (723680.0 + (x * (1172700.0 + (x * (1026576.0 + (x * (362880.0 + (x * 0.0))))))))))))))))))); // eslint-disable-line max-len + } + return s1 / s2; +} + + +// EXPORTS // + +module.exports = evalrational; + |