2222
2323var MAX_SAFE_INTEGER = require ( '@stdlib/constants/float32/max-safe-integer' ) ;
2424var 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 ' ) ;
2828var floorf = require ( '@stdlib/math/base/special/floorf' ) ;
2929var gcdf = require ( '@stdlib/math/base/special/gcdf' ) ;
3030var float64ToFloat32 = require ( '@stdlib/number/float64/base/to-float32' ) ;
@@ -78,23 +78,23 @@ function binomcoeff( n, k ) {
7878 return NaN ;
7979 }
8080 if ( k < 0 ) {
81- return float64ToFloat32 ( 0.0 ) ;
81+ return 0.0 ;
8282 }
8383 sgn = float64ToFloat32 ( 1.0 ) ;
8484 if ( n < 0 ) {
8585 n = - n + k - 1 ;
8686 if ( isOddf ( k ) ) {
87- sgn * = float64ToFloat32 ( - 1.0 ) ;
87+ sgn = float64ToFloat32 ( sgn * - 1.0 ) ;
8888 }
8989 }
9090 if ( k > n ) {
91- return float64ToFloat32 ( 0.0 ) ;
91+ return 0.0 ;
9292 }
9393 if ( k === 0 || k === n ) {
94- return float64ToFloat32 ( sgn ) ;
94+ return sgn ;
9595 }
9696 if ( k === 1 || k === n - 1 ) {
97- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( n ) ) ;
97+ return float64ToFloat32 ( sgn * n ) ;
9898 }
9999 // Minimize the number of computed terms by leveraging symmetry:
100100 if ( n - k < k ) {
@@ -109,13 +109,13 @@ function binomcoeff( n, k ) {
109109 if ( res > s ) {
110110 break ;
111111 }
112- res * = float64ToFloat32 ( n ) ;
113- res / = float64ToFloat32 ( d ) ;
112+ res = float64ToFloat32 ( res * n ) ;
113+ res = float64ToFloat32 ( res / d ) ;
114114 n -= 1 ;
115115 }
116116 // If we did not early exit from the previous loop, the answer is exact, and we can simply return...
117117 if ( d > k ) {
118- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( res ) ) ;
118+ return float64ToFloat32 ( sgn * res ) ;
119119 }
120120 /*
121121 * Let `N` equal the provided `n`.
@@ -135,7 +135,7 @@ function binomcoeff( n, k ) {
135135 */
136136 b = binomcoeff ( n , k - d + 1 ) ;
137137 if ( b === PINF ) {
138- return float64ToFloat32 ( float64ToFloat32 ( sgn ) * float64ToFloat32 ( b ) ) ;
138+ return float64ToFloat32 ( sgn * float64ToFloat32 ( b ) ) ;
139139 }
140140 c = binomcoeff ( k , k - d + 1 ) ;
141141
@@ -145,10 +145,10 @@ function binomcoeff( n, k ) {
145145 * 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.
146146 */
147147 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 ) ;
152152}
153153
154154
0 commit comments