{"id":28970128,"url":"https://github.com/stdlib-js/math-base-special-frexpf","last_synced_at":"2026-05-16T18:36:03.427Z","repository":{"id":299019128,"uuid":"1001518407","full_name":"stdlib-js/math-base-special-frexpf","owner":"stdlib-js","description":"Split a single-precision floating-point number into a normalized fraction and an integer power of two.","archived":false,"fork":false,"pushed_at":"2026-05-05T03:23:49.000Z","size":532,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-08T10:30:59.341Z","etag":null,"topics":["dbl","denormalized","double","float","float64","floating-point","frexp","frexpf","ieee754","javascript","math","mathematics","node","node-js","nodejs","normal","normalized","number","stdlib","subnormal"],"latest_commit_sha":null,"homepage":"https://github.com/stdlib-js/stdlib","language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stdlib-js.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["stdlib-js"],"open_collective":"stdlib","tidelift":"npm/@stdlib/stdlib"}},"created_at":"2025-06-13T14:15:30.000Z","updated_at":"2026-05-05T03:23:52.000Z","dependencies_parsed_at":"2025-06-14T07:37:43.897Z","dependency_job_id":"7fee6d86-588b-4b1a-9a3e-c9a1af5a1327","html_url":"https://github.com/stdlib-js/math-base-special-frexpf","commit_stats":null,"previous_names":["stdlib-js/math-base-special-frexpf"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/stdlib-js/math-base-special-frexpf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fmath-base-special-frexpf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fmath-base-special-frexpf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fmath-base-special-frexpf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fmath-base-special-frexpf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stdlib-js","download_url":"https://codeload.github.com/stdlib-js/math-base-special-frexpf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stdlib-js%2Fmath-base-special-frexpf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33114490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-16T04:41:52.686Z","status":"ssl_error","status_checked_at":"2026-05-16T04:41:52.009Z","response_time":115,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbl","denormalized","double","float","float64","floating-point","frexp","frexpf","ieee754","javascript","math","mathematics","node","node-js","nodejs","normal","normalized","number","stdlib","subnormal"],"created_at":"2025-06-24T10:19:55.335Z","updated_at":"2026-05-16T18:36:03.420Z","avatar_url":"https://github.com/stdlib-js.png","language":"JavaScript","funding_links":["https://github.com/sponsors/stdlib-js","https://opencollective.com/stdlib","https://tidelift.com/funding/github/npm/@stdlib/stdlib"],"categories":[],"sub_categories":[],"readme":"\u003c!--\n\n@license Apache-2.0\n\nCopyright (c) 2025 The Stdlib Authors.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n   http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n--\u003e\n\n\n\u003cdetails\u003e\n  \u003csummary\u003e\n    About stdlib...\n  \u003c/summary\u003e\n  \u003cp\u003eWe believe in a future in which the web is a preferred environment for numerical computation. To help realize this future, we've built stdlib. stdlib is a standard library, with an emphasis on numerical and scientific computation, written in JavaScript (and C) for execution in browsers and in Node.js.\u003c/p\u003e\n  \u003cp\u003eThe library is fully decomposable, being architected in such a way that you can swap out and mix and match APIs and functionality to cater to your exact preferences and use cases.\u003c/p\u003e\n  \u003cp\u003eWhen you use stdlib, you can be absolutely certain that you are using the most thorough, rigorous, well-written, studied, documented, tested, measured, and high-quality code out there.\u003c/p\u003e\n  \u003cp\u003eTo join us in bringing numerical computing to the web, get started by checking us out on \u003ca href=\"https://github.com/stdlib-js/stdlib\"\u003eGitHub\u003c/a\u003e, and please consider \u003ca href=\"https://opencollective.com/stdlib\"\u003efinancially supporting stdlib\u003c/a\u003e. We greatly appreciate your continued support!\u003c/p\u003e\n\u003c/details\u003e\n\n# frexpf\n\n[![NPM version][npm-image]][npm-url] [![Build Status][test-image]][test-url] [![Coverage Status][coverage-image]][coverage-url] \u003c!-- [![dependencies][dependencies-image]][dependencies-url] --\u003e\n\n\u003e Split a [single-precision floating-point number][ieee754] into a normalized fraction and an integer power of two.\n\n\u003csection class=\"installation\"\u003e\n\n## Installation\n\n```bash\nnpm install @stdlib/math-base-special-frexpf\n```\n\nAlternatively,\n\n-   To load the package in a website via a `script` tag without installation and bundlers, use the [ES Module][es-module] available on the [`esm`][esm-url] branch (see [README][esm-readme]).\n-   If you are using Deno, visit the [`deno`][deno-url] branch (see [README][deno-readme] for usage intructions).\n-   For use in Observable, or in browser/node environments, use the [Universal Module Definition (UMD)][umd] build available on the [`umd`][umd-url] branch (see [README][umd-readme]).\n\nThe [branches.md][branches-url] file summarizes the available branches and displays a diagram illustrating their relationships.\n\nTo view installation and usage instructions specific to each branch build, be sure to explicitly navigate to the respective README files on each branch, as linked to above.\n\n\u003c/section\u003e\n\n\u003csection class=\"usage\"\u003e\n\n## Usage\n\n```javascript\nvar frexpf = require( '@stdlib/math-base-special-frexpf' );\n```\n\n#### frexpf( x )\n\nSplits a [single-precision floating-point number][ieee754] into a normalized fraction and an integer power of two.\n\n```javascript\nvar out = frexpf( 4.0 );\n// returns [ 0.5, 3 ]\n```\n\nBy default, the function returns the normalized fraction and the exponent as a two-element `array`. The normalized fraction and exponent satisfy the relation `x = frac * 2^exp`.\n\n```javascript\nvar pow = require( '@stdlib/math-base-special-pow' );\n\nvar x = 4.0;\nvar out = frexpf( x );\n// returns [ 0.5, 3 ]\n\nvar frac = out[ 0 ];\nvar exp = out[ 1 ];\n\nvar bool = ( x === frac * pow(2.0, exp) );\n// returns true\n```\n\nIf provided positive or negative zero, `NaN`, or positive or negative `infinity`, the function returns a two-element `array` containing the input value and an exponent equal to `0`.\n\n```javascript\nvar out = frexpf( 0.0 );\n// returns [ 0.0, 0 ]\n\nout = frexpf( -0.0 );\n// returns [ -0.0, 0 ]\n\nout = frexpf( NaN );\n// returns [ NaN, 0 ]\n\nout = frexpf( Infinity );\n// returns [ Infinity, 0 ]\n\nout = frexpf( -Infinity );\n// returns [ -Infinity, 0 ]\n```\n\nFor all other numeric input values, the [absolute value][@stdlib/math/base/special/absf] of the normalized fraction resides on the interval `[0.5,1)`.\n\n#### frexpf.assign( x, out, stride, offset )\n\nSplits a [single-precision floating-point number][ieee754] into a normalized fraction and an integer power of two and assigns results to a provided output array.\n\n```javascript\nvar Float32Array = require( '@stdlib/array-float32' );\n\nvar out = new Float32Array( 2 );\n\nvar y = frexpf.assign( 4.0, out, 1, 0 );\n// returns \u003cFloat32Array\u003e[ 0.5, 3 ]\n\nvar bool = ( y === out );\n// returns true\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.usage --\u003e\n\n\u003csection class=\"notes\"\u003e\n\n## Notes\n\n-   Care should be taken when reconstituting a [single-precision floating-point number][ieee754] from a normalized fraction and an exponent. For example,\n\n    ```javascript\n    var pow = require( '@stdlib/math-base-special-pow' );\n    var f32 = require( '@stdlib/number-float64-base-to-float32' );\n\n    var x = 1.7014118346046923e+38; // x ~ 2^127\n\n    var out = frexpf( x );\n    // returns [ 0.5, 128 ]\n\n    // Naive reconstitution:\n    var y = f32( out[ 0 ] * f32( pow( 2.0, out[ 1 ] ) ) );\n    // returns Infinity\n\n    // Account for 2^128 evaluating as infinity by recognizing 2^128 = 2^1 * 2^127:\n    y = f32( out[ 0 ] * f32( pow( 2.0, out[1]-127 ) ) * f32( pow( 2.0, 127 ) ) );\n    // returns 1.7014118346046923e+38\n    ```\n\n\u003c/section\u003e\n\n\u003c!-- /.notes --\u003e\n\n\u003csection class=\"examples\"\u003e\n\n## Examples\n\n\u003c!-- eslint no-undef: \"error\" --\u003e\n\n```javascript\nvar randu = require( '@stdlib/random-base-randu' );\nvar roundf = require( '@stdlib/math-base-special-roundf' );\nvar pow = require( '@stdlib/math-base-special-pow' );\nvar f32 = require( '@stdlib/number-float64-base-to-float32' );\nvar BIAS = require( '@stdlib/constants-float32-exponent-bias' );\nvar frexpf = require( '@stdlib/math-base-special-frexpf' );\n\nvar sign;\nvar frac;\nvar exp;\nvar x;\nvar f;\nvar v;\nvar i;\n\n// Generate random numbers and break each into a normalized fraction and an integer power of two...\nfor ( i = 0; i \u003c 100; i++ ) {\n    if ( randu() \u003c 0.5 ) {\n        sign = f32( -1.0 );\n    } else {\n        sign = f32( 1.0 );\n    }\n    frac = f32( randu()*10.0 );\n    exp = roundf( randu()*76.0 ) - 38;\n    x = f32( sign * frac * f32( pow( 10.0, exp ) ) );\n    f = frexpf( x );\n    if ( f[ 1 ] \u003e BIAS ) {\n        v = f32( f[ 0 ] * f32( pow(2.0, f[1]-BIAS) ) * f32( pow(2.0, BIAS) ) );\n    } else {\n        v = f32( f[ 0 ] * f32( pow( 2.0, f[ 1 ] ) ) );\n    }\n    console.log( '%d = %d * 2^%d = %d', x, f[ 0 ], f[ 1 ], v );\n}\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.examples --\u003e\n\n\u003c!-- C interface documentation. --\u003e\n\n* * *\n\n\u003csection class=\"c\"\u003e\n\n## C APIs\n\n\u003c!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"intro\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.intro --\u003e\n\n\u003c!-- C usage documentation. --\u003e\n\n\u003csection class=\"usage\"\u003e\n\n### Usage\n\n```c\n#include \"stdlib/math/base/special/frexpf.h\"\n```\n\n#### stdlib_base_frexpf( x, frac, exp )\n\nSplits a [single-precision floating-point number][ieee754] into a normalized fraction and an integer power of two.\n\n```c\n#include \u003cstdint.h\u003e\n\nfloat frac;\nint32_t exp;\nstdlib_base_frexpf( 4.0f, \u0026frac, \u0026exp );\n```\n\nThe function accepts the following arguments:\n\n-   **x**: `[in] float` input value.\n-   **frac**: `[out] float*` destination for the normalized fraction.\n-   **exp**: `[out] int32_t*` destination for the integer power of two.\n\n```c\nvoid stdlib_base_frexpf( const float x, float *frac, int32_t *exp );\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.usage --\u003e\n\n\u003c!-- C API usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"notes\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.notes --\u003e\n\n\u003c!-- C API usage examples. --\u003e\n\n\u003csection class=\"examples\"\u003e\n\n### Examples\n\n```c\n#include \"stdlib/math/base/special/frexpf.h\"\n#include \u003cstdint.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cinttypes.h\u003e\n\nint main( void ) {\n    const float x[] = { 4.0f, 0.0f, -0.0f, 1.0f, -1.0f, 3.14f, -3.14f, 1.0e38f, -1.0e38f, 1.0f/0.0f, -1.0f/0.0f, 0.0f/0.0f };\n\n    float frac;\n    int32_t exp;\n    int i;\n    for ( i = 0; i \u003c 12; i++ ) {\n        stdlib_base_frexpf( x[i], \u0026frac, \u0026exp );\n        printf( \"x: %f =\u003e frac: %f, exp: %\" PRId32 \"\\n\", x[i], frac, exp );\n    }\n}\n```\n\n\u003c/section\u003e\n\n\u003c!-- /.examples --\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.c --\u003e\n\n\u003c!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. --\u003e\n\n\u003csection class=\"related\"\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.related --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\n\u003csection class=\"main-repo\" \u003e\n\n* * *\n\n## Notice\n\nThis package is part of [stdlib][stdlib], a standard library for JavaScript and Node.js, with an emphasis on numerical and scientific computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more.\n\nFor more information on the project, filing bug reports and feature requests, and guidance on how to develop [stdlib][stdlib], see the main project [repository][stdlib].\n\n#### Community\n\n[![Chat][chat-image]][chat-url]\n\n---\n\n## License\n\nSee [LICENSE][stdlib-license].\n\n\n## Copyright\n\nCopyright \u0026copy; 2016-2026. The Stdlib [Authors][stdlib-authors].\n\n\u003c/section\u003e\n\n\u003c!-- /.stdlib --\u003e\n\n\u003c!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. --\u003e\n\n\u003csection class=\"links\"\u003e\n\n[npm-image]: http://img.shields.io/npm/v/@stdlib/math-base-special-frexpf.svg\n[npm-url]: https://npmjs.org/package/@stdlib/math-base-special-frexpf\n\n[test-image]: https://github.com/stdlib-js/math-base-special-frexpf/actions/workflows/test.yml/badge.svg?branch=main\n[test-url]: https://github.com/stdlib-js/math-base-special-frexpf/actions/workflows/test.yml?query=branch:main\n\n[coverage-image]: https://img.shields.io/codecov/c/github/stdlib-js/math-base-special-frexpf/main.svg\n[coverage-url]: https://codecov.io/github/stdlib-js/math-base-special-frexpf?branch=main\n\n\u003c!--\n\n[dependencies-image]: https://img.shields.io/david/stdlib-js/math-base-special-frexpf.svg\n[dependencies-url]: https://david-dm.org/stdlib-js/math-base-special-frexpf/main\n\n--\u003e\n\n[chat-image]: https://img.shields.io/badge/zulip-join_chat-brightgreen.svg\n[chat-url]: https://stdlib.zulipchat.com\n\n[stdlib]: https://github.com/stdlib-js/stdlib\n\n[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors\n\n[umd]: https://github.com/umdjs/umd\n[es-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules\n\n[deno-url]: https://github.com/stdlib-js/math-base-special-frexpf/tree/deno\n[deno-readme]: https://github.com/stdlib-js/math-base-special-frexpf/blob/deno/README.md\n[umd-url]: https://github.com/stdlib-js/math-base-special-frexpf/tree/umd\n[umd-readme]: https://github.com/stdlib-js/math-base-special-frexpf/blob/umd/README.md\n[esm-url]: https://github.com/stdlib-js/math-base-special-frexpf/tree/esm\n[esm-readme]: https://github.com/stdlib-js/math-base-special-frexpf/blob/esm/README.md\n[branches-url]: https://github.com/stdlib-js/math-base-special-frexpf/blob/main/branches.md\n\n[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/math-base-special-frexpf/main/LICENSE\n\n[ieee754]: https://en.wikipedia.org/wiki/IEEE_754-1985\n\n[@stdlib/math/base/special/absf]: https://github.com/stdlib-js/math-base-special-absf\n\n\u003c!-- \u003crelated-links\u003e --\u003e\n\n\u003c!-- \u003c/related-links\u003e --\u003e\n\n\u003c/section\u003e\n\n\u003c!-- /.links --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Fmath-base-special-frexpf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstdlib-js%2Fmath-base-special-frexpf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstdlib-js%2Fmath-base-special-frexpf/lists"}