@@ -25,14 +25,14 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
2525 < div class ='fl pad1y space-right2 '>
2626 < span class ="strong "> 100% </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 67/67 </ span >
28+ < span class ='fraction '> 114/114 </ span >
2929 </ div >
3030
3131
3232 < div class ='fl pad1y space-right2 '>
3333 < span class ="strong "> 100% </ span >
3434 < span class ="quiet "> Branches</ span >
35- < span class ='fraction '> 2/2 </ span >
35+ < span class ='fraction '> 10/10 </ span >
3636 </ div >
3737
3838
@@ -46,7 +46,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
4646 < div class ='fl pad1y space-right2 '>
4747 < span class ="strong "> 100% </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 67/67 </ span >
49+ < span class ='fraction '> 114/114 </ span >
5050 </ div >
5151
5252
@@ -130,7 +130,54 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
130130< a name ='L65 '> </ a > < a href ='#L65 '> 65</ a >
131131< a name ='L66 '> </ a > < a href ='#L66 '> 66</ a >
132132< a name ='L67 '> </ a > < a href ='#L67 '> 67</ a >
133- < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
133+ < a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134+ < a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135+ < a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a >
137+ < a name ='L72 '> </ a > < a href ='#L72 '> 72</ a >
138+ < a name ='L73 '> </ a > < a href ='#L73 '> 73</ a >
139+ < a name ='L74 '> </ a > < a href ='#L74 '> 74</ a >
140+ < a name ='L75 '> </ a > < a href ='#L75 '> 75</ a >
141+ < a name ='L76 '> </ a > < a href ='#L76 '> 76</ a >
142+ < a name ='L77 '> </ a > < a href ='#L77 '> 77</ a >
143+ < a name ='L78 '> </ a > < a href ='#L78 '> 78</ a >
144+ < a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145+ < a name ='L80 '> </ a > < a href ='#L80 '> 80</ a >
146+ < a name ='L81 '> </ a > < a href ='#L81 '> 81</ a >
147+ < a name ='L82 '> </ a > < a href ='#L82 '> 82</ a >
148+ < a name ='L83 '> </ a > < a href ='#L83 '> 83</ a >
149+ < a name ='L84 '> </ a > < a href ='#L84 '> 84</ a >
150+ < a name ='L85 '> </ a > < a href ='#L85 '> 85</ a >
151+ < a name ='L86 '> </ a > < a href ='#L86 '> 86</ a >
152+ < a name ='L87 '> </ a > < a href ='#L87 '> 87</ a >
153+ < a name ='L88 '> </ a > < a href ='#L88 '> 88</ a >
154+ < a name ='L89 '> </ a > < a href ='#L89 '> 89</ a >
155+ < a name ='L90 '> </ a > < a href ='#L90 '> 90</ a >
156+ < a name ='L91 '> </ a > < a href ='#L91 '> 91</ a >
157+ < a name ='L92 '> </ a > < a href ='#L92 '> 92</ a >
158+ < a name ='L93 '> </ a > < a href ='#L93 '> 93</ a >
159+ < a name ='L94 '> </ a > < a href ='#L94 '> 94</ a >
160+ < a name ='L95 '> </ a > < a href ='#L95 '> 95</ a >
161+ < a name ='L96 '> </ a > < a href ='#L96 '> 96</ a >
162+ < a name ='L97 '> </ a > < a href ='#L97 '> 97</ a >
163+ < a name ='L98 '> </ a > < a href ='#L98 '> 98</ a >
164+ < a name ='L99 '> </ a > < a href ='#L99 '> 99</ a >
165+ < a name ='L100 '> </ a > < a href ='#L100 '> 100</ a >
166+ < a name ='L101 '> </ a > < a href ='#L101 '> 101</ a >
167+ < a name ='L102 '> </ a > < a href ='#L102 '> 102</ a >
168+ < a name ='L103 '> </ a > < a href ='#L103 '> 103</ a >
169+ < a name ='L104 '> </ a > < a href ='#L104 '> 104</ a >
170+ < a name ='L105 '> </ a > < a href ='#L105 '> 105</ a >
171+ < a name ='L106 '> </ a > < a href ='#L106 '> 106</ a >
172+ < a name ='L107 '> </ a > < a href ='#L107 '> 107</ a >
173+ < a name ='L108 '> </ a > < a href ='#L108 '> 108</ a >
174+ < a name ='L109 '> </ a > < a href ='#L109 '> 109</ a >
175+ < a name ='L110 '> </ a > < a href ='#L110 '> 110</ a >
176+ < a name ='L111 '> </ a > < a href ='#L111 '> 111</ a >
177+ < a name ='L112 '> </ a > < a href ='#L112 '> 112</ a >
178+ < a name ='L113 '> </ a > < a href ='#L113 '> 113</ a >
179+ < a name ='L114 '> </ a > < a href ='#L114 '> 114</ a >
180+ < a name ='L115 '> </ a > < a href ='#L115 '> 115</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
134181< span class ="cline-any cline-yes "> 1x</ span >
135182< span class ="cline-any cline-yes "> 1x</ span >
136183< span class ="cline-any cline-yes "> 1x</ span >
@@ -189,11 +236,58 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
189236< span class ="cline-any cline-yes "> 1x</ span >
190237< span class ="cline-any cline-yes "> 1x</ span >
191238< span class ="cline-any cline-yes "> 1x</ span >
239+ < span class ="cline-any cline-yes "> 1x</ span >
240+ < span class ="cline-any cline-yes "> 1x</ span >
241+ < span class ="cline-any cline-yes "> 1x</ span >
242+ < span class ="cline-any cline-yes "> 1x</ span >
243+ < span class ="cline-any cline-yes "> 1x</ span >
244+ < span class ="cline-any cline-yes "> 1x</ span >
245+ < span class ="cline-any cline-yes "> 1x</ span >
246+ < span class ="cline-any cline-yes "> 1x</ span >
247+ < span class ="cline-any cline-yes "> 1x</ span >
248+ < span class ="cline-any cline-yes "> 1x</ span >
249+ < span class ="cline-any cline-yes "> 1x</ span >
250+ < span class ="cline-any cline-yes "> 1x</ span >
251+ < span class ="cline-any cline-yes "> 1x</ span >
252+ < span class ="cline-any cline-yes "> 1x</ span >
253+ < span class ="cline-any cline-yes "> 1x</ span >
254+ < span class ="cline-any cline-yes "> 1x</ span >
255+ < span class ="cline-any cline-yes "> 1x</ span >
256+ < span class ="cline-any cline-yes "> 1x</ span >
257+ < span class ="cline-any cline-yes "> 7038x</ span >
258+ < span class ="cline-any cline-yes "> 7038x</ span >
259+ < span class ="cline-any cline-yes "> 7038x</ span >
192260< span class ="cline-any cline-yes "> 7038x</ span >
193261< span class ="cline-any cline-yes "> 7038x</ span >
194262< span class ="cline-any cline-yes "> 7038x</ span >
195263< span class ="cline-any cline-yes "> 1x</ span >
196264< span class ="cline-any cline-yes "> 1x</ span >
265+ < span class ="cline-any cline-yes "> 7038x</ span >
266+ < span class ="cline-any cline-yes "> 3x</ span >
267+ < span class ="cline-any cline-yes "> 3x</ span >
268+ < span class ="cline-any cline-yes "> 7038x</ span >
269+ < span class ="cline-any cline-yes "> 4x</ span >
270+ < span class ="cline-any cline-yes "> 4x</ span >
271+ < span class ="cline-any cline-yes "> 7038x</ span >
272+ < span class ="cline-any cline-yes "> 4x</ span >
273+ < span class ="cline-any cline-yes "> 4x</ span >
274+ < span class ="cline-any cline-yes "> 7026x</ span >
275+ < span class ="cline-any cline-yes "> 7026x</ span >
276+ < span class ="cline-any cline-yes "> 7026x</ span >
277+ < span class ="cline-any cline-yes "> 7026x</ span >
278+ < span class ="cline-any cline-yes "> 7026x</ span >
279+ < span class ="cline-any cline-yes "> 7026x</ span >
280+ < span class ="cline-any cline-yes "> 7026x</ span >
281+ < span class ="cline-any cline-yes "> 7026x</ span >
282+ < span class ="cline-any cline-yes "> 7026x</ span >
283+ < span class ="cline-any cline-yes "> 7026x</ span >
284+ < span class ="cline-any cline-yes "> 7026x</ span >
285+ < span class ="cline-any cline-yes "> 7026x</ span >
286+ < span class ="cline-any cline-yes "> 7026x</ span >
287+ < span class ="cline-any cline-yes "> 7026x</ span >
288+ < span class ="cline-any cline-yes "> 7038x</ span >
289+ < span class ="cline-any cline-yes "> 1x</ span >
290+ < span class ="cline-any cline-yes "> 1x</ span >
197291< span class ="cline-any cline-yes "> 1x</ span >
198292< span class ="cline-any cline-yes "> 1x</ span >
199293< span class ="cline-any cline-yes "> 1x</ span >
@@ -214,6 +308,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
214308* See the License for the specific language governing permissions and
215309* limitations under the License.
216310*
311+ *
217312* ## Notice
218313*
219314* The original C code, long comment, copyright, license, and constants are from [Cephes]{@link http://www.netlib.org/cephes}. The implementation follows the original, but has been modified for JavaScript.
@@ -232,23 +327,40 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
232327
233328// MODULES //
234329
235- var exp10 = require( '@stdlib/math/base/special/exp10' );
236- var float64ToFloat32 = require( '@stdlib/number/float64/base/to-float32' );
330+ var floorf = require( '@stdlib/math/base/special/floorf' );
331+ var ldexpf = require( '@stdlib/math/base/special/ldexpf' );
332+ var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
333+ var PINF = require( '@stdlib/constants/float32/pinf' );
334+ var f32 = require( '@stdlib/number/float64/base/to-float32' );
335+ var toInt32 = require( '@stdlib/number/float64/base/to-int32' );
336+ var polyval = require( './polyval.js' );
337+
338+
339+ // VARIABLES //
340+
341+ var LOG210 = 3.32192809488736234787;
342+ var LG102A = 0.30078125000000000000;
343+ var LG102B = 0.000248745663981195213739;
344+ var MAXL10 = 38.230809449325611792;
237345
238346
239347// MAIN //
240348
241349/**
242- * Computes `10^x` for a single-precision floating-point number .
350+ * Returns `10` raised to the `x` power .
243351*
244352* @param {number} x - input value
245- * @returns {number} single-precision result
353+ * @returns {number} function value
246354*
247355* @example
248356* var v = exp10f( 3.0 );
249357* // returns 1000.0
250358*
251359* @example
360+ * var v = exp10f( -9.0 );
361+ * // returns 9.999999717180685e-10
362+ *
363+ * @example
252364* var v = exp10f( 0.0 );
253365* // returns 1.0
254366*
@@ -257,7 +369,36 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
257369* // returns NaN
258370*/
259371function exp10f( x ) {
260- return float64ToFloat32( exp10( float64ToFloat32( x ) ) );
372+ var xc;
373+ var px;
374+ var n;
375+
376+ if ( isnanf( x ) ) {
377+ return x;
378+ }
379+ if ( x === 0.0 ) {
380+ return 1.0;
381+ }
382+ if ( x > MAXL10 ) {
383+ return PINF;
384+ }
385+ if ( x < (-1 * MAXL10) ) {
386+ return 0.0;
387+ }
388+
389+ // Express 10^x = 10^g 2^n = 10^g 10^( n log10(2) ) = 10^( g + n log10(2) )
390+ px = floorf( ( LOG210 * f32(x) ) + 0.5 );
391+ n = toInt32( px );
392+ xc = f32(x);
393+ xc = xc - ( px * LG102A );
394+ xc = xc - ( px * LG102B );
395+
396+ // Polynomial approximation for fractional part: 10^f ≈ 1 + f * P(f)
397+ px = xc * polyval( xc );
398+ xc = 1.0 + px;
399+
400+ // Multiply by power of 2:
401+ return ldexpf( xc, n );
261402}
262403
263404
@@ -271,7 +412,7 @@ <h1><a href="../../../../../index.html">All files</a> / <a href="index.html">mat
271412 < div class ='footer quiet pad2 space-top1 center small '>
272413 Code coverage generated by
273414 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
274- at 2025-06-17T11:41:40.023Z
415+ at 2025-06-27T10:53:47.899Z
275416 </ div >
276417 < script src ="../../../../../prettify.js "> </ script >
277418 < script >
0 commit comments