diff --git a/CHANGELOG.md b/CHANGELOG.md index 881f8ee5e..98d478dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3774,6 +3774,28 @@ This release closes the following issue: +
+ +#### [@stdlib/math/base/special/rempio2](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/rempio2) + +
+ +
+ +##### Features + +- [`0b633eb`](https://github.com/stdlib-js/stdlib/commit/0b633eb2afe0641b963621048a3ce93795c8d92b) - add C implementation for `math/base/special/rempio2` + +
+ + + +
+ +
+ + +
#### [@stdlib/math/base/special/round](https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/round) @@ -4352,6 +4374,7 @@ A total of 24 people contributed to this release. Thank you to the following con
+- [`0b633eb`](https://github.com/stdlib-js/stdlib/commit/0b633eb2afe0641b963621048a3ce93795c8d92b) - **feat:** add C implementation for `math/base/special/rempio2` _(by Gunj Joshi, Philipp Burckhardt, Athan Reines)_ - [`1b5abe6`](https://github.com/stdlib-js/stdlib/commit/1b5abe6cb97ca371aeeae5ef5e39e9ef20898e52) - **chore:** update package meta data [(#2344)](https://github.com/stdlib-js/stdlib/pull/2344) _(by stdlib-bot, Athan Reines)_ - [`e612af5`](https://github.com/stdlib-js/stdlib/commit/e612af58d0e5374e3ed17f0278d2538aec9b37e1) - **docs:** update namespace table of contents [(#2314)](https://github.com/stdlib-js/stdlib/pull/2314) _(by stdlib-bot, Athan Reines)_ - [`95cd4ef`](https://github.com/stdlib-js/stdlib/commit/95cd4ef83e181ffbf50aeef1a6e44e14338d1261) - **docs:** update namespace TypeScript declarations [(#2312)](https://github.com/stdlib-js/stdlib/pull/2312) _(by stdlib-bot, Athan Reines)_ diff --git a/base/special/rempio2/README.md b/base/special/rempio2/README.md index 32551ba1d..978033ba6 100644 --- a/base/special/rempio2/README.md +++ b/base/special/rempio2/README.md @@ -32,7 +32,7 @@ var rempio2 = require( '@stdlib/math/base/special/rempio2' ); #### rempio2( x, y ) -Computes `x - nπ/2 = r`. The function returns `n` and stores the remainder `r` as two numbers in `y`, such that `y[0]+y[1] = r`. +Computes `x - nπ/2 = r`. ```javascript var y = [ 0.0, 0.0 ]; @@ -46,7 +46,7 @@ var y2 = y[ 1 ]; // returns ~3.618e-17 ``` -When `x` is `NaN` or infinite, the function returns zero and sets the elements of `y` to `NaN`. +When `x` is `NaN` or infinite, the function returns `0` and sets the elements of `y` to `NaN`. ```javascript var y = [ 0.0, 0.0 ]; @@ -80,6 +80,7 @@ y2 = y[ 1 ]; ## Notes +- The function returns `n` and stores the remainder `r` as two numbers in `y`, such that `y[0]+y[1] = r`. - For input values larger than `2^20*π/2` in magnitude, the function **only** returns the last three binary digits of `n` and not the full result.
@@ -111,6 +112,105 @@ for ( i = 0; i < x.length; i++ ) { + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/rempio2.h" +``` + +#### stdlib_base_rempio2( x, &rem1, &rem2 ) + +Computes `x - nπ/2 = r`. + +```c +#include + +double rem1; +double rem2; + +int32_t n = stdlib_base_rempio2( 4.0, &rem1, &rem2 ); +``` + +The function accepts the following arguments: + +- **x**: `[in] double` input value. +- **rem1**: `[out] double*` destination for first remainder number. +- **rem2**: `[out] double*` destination for second remainder number. + +```c +int32_t stdlib_base_rempio2( const double x, double *rem1, double *rem2 ); +``` + +
+ + + + + +
+ +### Notes + +- The function returns `n` and stores the remainder `r` as two numbers in `rem1` and `rem2`, respectively, such that `rem1+rem2 = r`. + +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/rempio2.h" +#include +#include +#include + +int main( void ) { + const double x[] = { 0.0, 1.0, 4.0, 128.0 }; + + double rem1; + double rem2; + int32_t n; + int i; + for ( i = 0; i < 4; i++ ) { + n = stdlib_base_rempio2( x[ i ], &rem1, &rem2 ); + printf( "%lf - %"PRId32"π/2 = %lf + %lf\n", x[ i ], n, rem1, rem2 ); + } +} +``` + +
+ + + +
+ + +