Skip to content

Commit 7e04d9e

Browse files
authored
refactor: use max-safe-nth-factorial package
PR-URL: #2676 Reviewed-by: Philipp Burckhardt <[email protected]>
1 parent 7ee91a5 commit 7e04d9e

File tree

3 files changed

+10
-11
lines changed

3 files changed

+10
-11
lines changed

lib/node_modules/@stdlib/math/base/special/factorial/lib/main.js

+2-6
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,10 @@ var isnan = require( '@stdlib/math/base/assert/is-nan' );
2424
var isInteger = require( '@stdlib/math/base/assert/is-integer' );
2525
var gamma = require( '@stdlib/math/base/special/gamma' );
2626
var PINF = require( '@stdlib/constants/float64/pinf' );
27+
var FLOAT64_MAX_SAFE_NTH_FACTORIAL = require( '@stdlib/constants/float64/max-safe-nth-factorial' );
2728
var FACTORIALS = require( './factorials.json' );
2829

2930

30-
// VARIABLES //
31-
32-
var MAX_FACTORIAL = 170; // TODO: consider extracting as a constant
33-
34-
3531
// MAIN //
3632

3733
/**
@@ -76,7 +72,7 @@ function factorial( x ) {
7672
if ( x < 0 ) {
7773
return NaN;
7874
}
79-
if ( x <= MAX_FACTORIAL ) {
75+
if ( x <= FLOAT64_MAX_SAFE_NTH_FACTORIAL ) {
8076
return FACTORIALS[ x ];
8177
}
8278
return PINF;

lib/node_modules/@stdlib/math/base/special/factorial/manifest.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@
4040
"@stdlib/math/base/assert/is-nan",
4141
"@stdlib/math/base/assert/is-integer",
4242
"@stdlib/math/base/special/gamma",
43-
"@stdlib/constants/float64/pinf"
43+
"@stdlib/constants/float64/pinf",
44+
"@stdlib/constants/float64/max-safe-nth-factorial"
4445
]
4546
},
4647
{
@@ -57,7 +58,8 @@
5758
"@stdlib/math/base/assert/is-nan",
5859
"@stdlib/math/base/assert/is-integer",
5960
"@stdlib/math/base/special/gamma",
60-
"@stdlib/constants/float64/pinf"
61+
"@stdlib/constants/float64/pinf",
62+
"@stdlib/constants/float64/max-safe-nth-factorial"
6163
]
6264
},
6365
{
@@ -74,7 +76,8 @@
7476
"@stdlib/math/base/assert/is-nan",
7577
"@stdlib/math/base/assert/is-integer",
7678
"@stdlib/math/base/special/gamma",
77-
"@stdlib/constants/float64/pinf"
79+
"@stdlib/constants/float64/pinf",
80+
"@stdlib/constants/float64/max-safe-nth-factorial"
7881
]
7982
}
8083
]

lib/node_modules/@stdlib/math/base/special/factorial/src/main.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
#include "stdlib/math/base/assert/is_integer.h"
2222
#include "stdlib/math/base/special/gamma.h"
2323
#include "stdlib/constants/float64/pinf.h"
24+
#include "stdlib/constants/float64/max_safe_nth_factorial.h"
2425
#include <stdint.h>
2526

26-
static const double MAX_FACTORIAL = 170.0;
2727
static const double FACTORIALS[ 171 ] = {
2828
1.0,
2929
1.0,
@@ -217,7 +217,7 @@ double stdlib_base_factorial( const double x ) {
217217
if ( x < 0.0 ) {
218218
return 0.0 / 0.0; // NaN
219219
}
220-
if ( x <= MAX_FACTORIAL ) {
220+
if ( x <= STDLIB_CONSTANT_FLOAT64_MAX_SAFE_NTH_FACTORIAL ) {
221221
return FACTORIALS[ (int32_t)x ];
222222
}
223223
return STDLIB_CONSTANT_FLOAT64_PINF;

0 commit comments

Comments
 (0)