feature. See also
. The project being documented here (as the example) is the Zig library itself.
gamma.series
fn series(comptime T: type, abs: T) T
File
Code
fn series(comptime T: type, abs: T) T {
const numerator = [_]T{
23531376880.410759688572007674451636754734846804940,
42919803642.649098768957899047001988850926355848959,
35711959237.355668049440185451547166705960488635843,
17921034426.037209699919755754458931112671403265390,
6039542586.3520280050642916443072979210699388420708,
1439720407.3117216736632230727949123939715485786772,
248874557.86205415651146038641322942321632125127801,
31426415.585400194380614231628318205362874684987640,
2876370.6289353724412254090516208496135991145378768,
186056.26539522349504029498971604569928220784236328,
8071.6720023658162106380029022722506138218516325024,
210.82427775157934587250973392071336271166969580291,
2.5066282746310002701649081771338373386264310793408,
};
const denominator = [_]T{
0.0,
39916800.0,
120543840.0,
150917976.0,
105258076.0,
45995730.0,
13339535.0,
2637558.0,
357423.0,
32670.0,
1925.0,
66.0,
1.0,
};
var num: T = 0;
var den: T = 0;
if (abs < 8) {
for (0..numerator.len) |i| {
num = num * abs + numerator[numerator.len - 1 - i];
den = den * abs + denominator[numerator.len - 1 - i];
}
} else {
for (0..numerator.len) |i| {
num = num / abs + numerator[i];
den = den / abs + denominator[i];
}
}
return num / den;
}