22
22
23
23
var MAX_SAFE_INTEGER = require ( '@stdlib/constants/float32/max-safe-integer' ) ;
24
24
var PINF = require ( '@stdlib/constants/float32/pinf' ) ;
25
- var isIntegerf = require ( '@stdlib/math/base/assert/is-integer ' ) ;
26
- var isnanf = require ( '@stdlib/math/base/assert/is-nan ' ) ;
27
- var isOddf = require ( '@stdlib/math/base/assert/is-odd ' ) ;
25
+ var isIntegerf = require ( '@stdlib/math/base/assert/is-integerf ' ) ;
26
+ var isnanf = require ( '@stdlib/math/base/assert/is-nanf ' ) ;
27
+ var isOddf = require ( '@stdlib/math/base/assert/is-oddf ' ) ;
28
28
var floorf = require ( '@stdlib/math/base/special/floorf' ) ;
29
29
var gcdf = require ( '@stdlib/math/base/special/gcdf' ) ;
30
30
var float64ToFloat32 = require ( '@stdlib/number/float64/base/to-float32' ) ;
@@ -78,23 +78,23 @@ function binomcoeff( n, k ) {
78
78
return NaN ;
79
79
}
80
80
if ( k < 0 ) {
81
- return float64ToFloat32 ( 0.0 ) ;
81
+ return 0.0 ;
82
82
}
83
83
sgn = float64ToFloat32 ( 1.0 ) ;
84
84
if ( n < 0 ) {
85
85
n = - n + k - 1 ;
86
86
if ( isOddf ( k ) ) {
87
- sgn * = float64ToFloat32 ( - 1.0 ) ;
87
+ sgn = float64ToFloat32 ( sgn * - 1.0 ) ;
88
88
}
89
89
}
90
90
if ( k > n ) {
91
- return float64ToFloat32 ( 0.0 ) ;
91
+ return 0.0 ;
92
92
}
93
93
if ( k === 0 || k === n ) {
94
- return float64ToFloat32 ( sgn ) ;
94
+ return sgn ;
95
95
}
96
96
if ( k === 1 || k === n - 1 ) {
97
- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( n ) ) ;
97
+ return float64ToFloat32 ( sgn * n ) ;
98
98
}
99
99
// Minimize the number of computed terms by leveraging symmetry:
100
100
if ( n - k < k ) {
@@ -109,13 +109,13 @@ function binomcoeff( n, k ) {
109
109
if ( res > s ) {
110
110
break ;
111
111
}
112
- res * = float64ToFloat32 ( n ) ;
113
- res / = float64ToFloat32 ( d ) ;
112
+ res = float64ToFloat32 ( res * n ) ;
113
+ res = float64ToFloat32 ( res / d ) ;
114
114
n -= 1 ;
115
115
}
116
116
// If we did not early exit from the previous loop, the answer is exact, and we can simply return...
117
117
if ( d > k ) {
118
- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( res ) ) ;
118
+ return float64ToFloat32 ( sgn * res ) ;
119
119
}
120
120
/*
121
121
* Let `N` equal the provided `n`.
@@ -135,7 +135,7 @@ function binomcoeff( n, k ) {
135
135
*/
136
136
b = binomcoeff ( n , k - d + 1 ) ;
137
137
if ( b === PINF ) {
138
- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( b ) ) ;
138
+ return float64ToFloat32 ( sgn * float64ToFloat32 ( b ) ) ;
139
139
}
140
140
c = binomcoeff ( k , k - d + 1 ) ;
141
141
@@ -145,10 +145,10 @@ function binomcoeff( n, k ) {
145
145
* To help guard against overflow and precision loss, we calculate the greatest common divisor (gcdf). In this case, we pick `b`, as `b` should be less than `res` in most (if not all) cases.
146
146
*/
147
147
g = gcdf ( b , c ) ;
148
- b /= g ;
149
- c /= g ;
150
- res /= c ;
151
- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( res ) * float64ToFloat32 ( b ) ) ;
148
+ b = float64ToFloat32 ( b / g ) ;
149
+ c = float64ToFloat32 ( c / g ) ;
150
+ res = float64ToFloat32 ( res / c ) ;
151
+ return float64ToFloat32 ( sgn * res * b ) ;
152
152
}
153
153
154
154
0 commit comments