From 44ebf88b152ee5e046b5ba89d9015379ffa2e33c Mon Sep 17 00:00:00 2001 From: stdlib-bot Date: Fri, 14 Jul 2023 19:23:54 +0000 Subject: [PATCH] Auto-generated commit --- base/special/cphase/README.md | 128 ++++++++-- base/special/cphase/benchmark/benchmark.js | 15 +- .../cphase/benchmark/benchmark.native.js | 65 +++++ .../cphase/benchmark/c/native/Makefile | 146 +++++++++++ .../cphase/benchmark/c/native/benchmark.c | 143 +++++++++++ base/special/cphase/binding.gyp | 170 +++++++++++++ base/special/cphase/docs/repl.txt | 14 +- base/special/cphase/docs/types/index.d.ts | 15 +- base/special/cphase/docs/types/test.ts | 33 +-- base/special/cphase/examples/c/Makefile | 146 +++++++++++ base/special/cphase/examples/c/example.c | 43 ++++ base/special/cphase/examples/index.js | 13 +- base/special/cphase/include.gypi | 53 ++++ .../include/stdlib/math/base/special/cphase.h | 40 +++ base/special/cphase/lib/index.js | 5 +- base/special/cphase/lib/main.js | 15 +- base/special/cphase/lib/native.js | 47 ++++ base/special/cphase/manifest.json | 76 ++++++ base/special/cphase/package.json | 3 +- base/special/cphase/src/Makefile | 70 ++++++ base/special/cphase/src/addon.c | 23 ++ base/special/cphase/src/main.c | 45 ++++ base/special/cphase/test/test.js | 101 ++++---- base/special/cphase/test/test.native.js | 231 ++++++++++++++++++ base/special/cpolar/lib/cpolar.js | 7 +- base/special/cpolar/test/test.js | 8 +- 26 files changed, 1525 insertions(+), 130 deletions(-) create mode 100644 base/special/cphase/benchmark/benchmark.native.js create mode 100644 base/special/cphase/benchmark/c/native/Makefile create mode 100644 base/special/cphase/benchmark/c/native/benchmark.c create mode 100644 base/special/cphase/binding.gyp create mode 100644 base/special/cphase/examples/c/Makefile create mode 100644 base/special/cphase/examples/c/example.c create mode 100644 base/special/cphase/include.gypi create mode 100644 base/special/cphase/include/stdlib/math/base/special/cphase.h create mode 100644 base/special/cphase/lib/native.js create mode 100644 base/special/cphase/manifest.json create mode 100644 base/special/cphase/src/Makefile create mode 100644 base/special/cphase/src/addon.c create mode 100644 base/special/cphase/src/main.c create mode 100644 base/special/cphase/test/test.native.js diff --git a/base/special/cphase/README.md b/base/special/cphase/README.md index 0b93f1b30..a64269cb5 100644 --- a/base/special/cphase/README.md +++ b/base/special/cphase/README.md @@ -20,7 +20,7 @@ limitations under the License. # cphase -> Compute the [argument][complex-number-argument] of a complex number in radians. +> Compute the [argument][complex-number-argument] of a double-precision complex floating-point number in radians.
@@ -38,12 +38,14 @@ The [argument][complex-number-argument] of a complex number, also known as the * var cphase = require( '@stdlib/math/base/special/cphase' ); ``` -#### cphase( re, im ) +#### cphase( z ) -Computes the [argument][complex-number-argument] of a `complex` number comprised of a **real** component `re` and an **imaginary** component `im`. +Computes the [argument][complex-number-argument] of a double-precision complex floating-point number. ```javascript -var phi = cphase( 5.0, 3.0 ); +var Complex128 = require( '@stdlib/complex/float64' ); + +var phi = cphase( new Complex128( 5.0, 3.0 ) ); // returns ~0.5404 ``` @@ -59,22 +61,116 @@ var phi = cphase( 5.0, 3.0 ); ```javascript var Complex128 = require( '@stdlib/complex/float64' ); -var randu = require( '@stdlib/random/base/randu' ); -var round = require( '@stdlib/math/base/special/round' ); -var real = require( '@stdlib/complex/real' ); -var imag = require( '@stdlib/complex/imag' ); +var uniform = require( '@stdlib/random/base/uniform' ); var cphase = require( '@stdlib/math/base/special/cphase' ); -var re; -var im; var z; var i; for ( i = 0; i < 100; i++ ) { - re = round( randu()*100.0 ) - 50.0; - im = round( randu()*100.0 ) - 50.0; - z = new Complex128( re, im ); - console.log( 'arg(%s) = %d', z.toString(), cphase( real(z), imag(z) ) ); + z = new Complex128( uniform( -500.0, 500.0 ), uniform( -500.0, 500.0 ) ); + console.log( 'arg(%s) = %d', z.toString(), cphase( z ) ); +} +``` + +
+ + + + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/cphase.h" +``` + +#### stdlib_base_cphase( z ) + +Computes the [argument][complex-number-argument] of a double-precision complex floating-point number. + +```c +#include "stdlib/complex/float64.h" +#include "stdlib/complex/real.h" +#include "stdlib/complex/imag.h" + +stdlib_complex128_t z = stdlib_complex128( 5.0, 3.0 ); +double out = stdlib_base_cphase( z ); +// returns ~0.5404 +``` + +The function accepts the following arguments: + +- **z**: `[in] stdlib_complex128_t` input value. + +```c +double stdlib_base_cphase( const stdlib_complex128_t z ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/special/cphase.h" +#include "stdlib/complex/float64.h" +#include "stdlib/complex/reim.h" +#include + +int main( void ) { + const stdlib_complex128_t x[] = { + stdlib_complex128( 3.14, 1.5 ), + stdlib_complex128( -3.14, -1.5 ), + stdlib_complex128( 0.0, 0.0 ), + stdlib_complex128( 0.0/0.0, 0.0/0.0 ) + }; + + stdlib_complex128_t v; + stdlib_complex128_t y; + double re1; + double im1; + double re2; + double im2; + int i; + for ( i = 0; i < 4; i++ ) { + v = x[ i ]; + y = stdlib_base_cphase( v ); + stdlib_reim( v, &re1, &im1 ); + stdlib_reim( y, &re2, &im2 ); + printf( "cphase(%lf + %lfi) = %lf\n", re, im, y ); + } } ``` @@ -82,6 +178,10 @@ for ( i = 0; i < 100; i++ ) { +
+ + +