From f73b8855a031fda0eb977d3f960fc079366ef051 Mon Sep 17 00:00:00 2001 From: Rutam Kathale Date: Sat, 16 Mar 2024 19:52:00 +0530 Subject: [PATCH 1/6] feat: add C implementation for math/base/assert/is-composite This commit if applied adds the C implementation to @stdlib/math/base/assert/is-composite package --- .../math/base/assert/is-composite/README.md | 87 +++++++++ .../benchmark/benchmark.native.js | 57 ++++++ .../is-composite/benchmark/c/native/Makefile | 146 +++++++++++++++ .../benchmark/c/native/benchmark.c | 137 ++++++++++++++ .../math/base/assert/is-composite/binding.gyp | 170 ++++++++++++++++++ .../assert/is-composite/examples/c/Makefile | 146 +++++++++++++++ .../assert/is-composite/examples/c/example.c | 32 ++++ .../base/assert/is-composite/include.gypi | 53 ++++++ .../stdlib/math/base/assert/is_composite.h | 40 +++++ .../base/assert/is-composite/lib/native.js | 51 ++++++ .../base/assert/is-composite/manifest.json | 77 ++++++++ .../base/assert/is-composite/src/Makefile | 70 ++++++++ .../math/base/assert/is-composite/src/addon.c | 91 ++++++++++ .../math/base/assert/is-composite/src/main.c | 40 +++++ .../assert/is-composite/test/test.native.js | 143 +++++++++++++++ 15 files changed, 1340 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/c/native/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/c/native/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/binding.gyp create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/include.gypi create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/include/stdlib/math/base/assert/is_composite.h create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/lib/native.js create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/manifest.json create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/src/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/src/addon.c create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/src/main.c create mode 100644 lib/node_modules/@stdlib/math/base/assert/is-composite/test/test.native.js diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md index c7c7e06b424..1e0ea7ea596 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md @@ -80,6 +80,93 @@ bool = isComposite( NaN ); + + +* * * + +
+ +## C APIs + + + +
+ +
+ + + + + +
+ +### Usage + +```c +#include "stdlib/math/base/special/is_composite.h" +``` + +#### stdlib_base_is_composite( x ) + +Tests if a finite double-precision floating-point number is a composite number. + +```c +double out = stdlib_base_is_composite( 3 ); +// returns false +``` + +The function accepts the following arguments: + +- **x**: `[in] double` input value. + +```c +double stdlib_base_is_composite( const double x ); +``` + +
+ + + + + +
+ +
+ + + + + +
+ +### Examples + +```c +#include "stdlib/math/base/assert/is_composite.h" +#include +#include + +int main( void ) { + const double x[] = { 0.0, 0.0/0.0, 1.0, -1.0 , 4.0 }; + + bool r; + int i; + for ( i = 0; i < 5; i++ ) { + r = stdlib_base_is_composite( x[ i ] ); + printf( "Value: %lf. Is Composite? %s.\n", x[ i ], ( r ) ? "True" : "False" ); + } +} +``` + +
+ + + +
+ + + + From 0cf457be17a23fee3ebcd68c2d03441613aef2fd Mon Sep 17 00:00:00 2001 From: Rutam <138517416+performant23@users.noreply.github.com> Date: Sat, 16 Mar 2024 22:34:04 +0530 Subject: [PATCH 4/6] Update README.md Signed-off-by: Rutam <138517416+performant23@users.noreply.github.com> --- .../@stdlib/math/base/assert/is-composite/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md index 827c33385cb..4293d07040d 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md @@ -111,6 +111,8 @@ bool = isComposite( NaN ); Tests if a finite double-precision floating-point number is a composite number. ```c +#include + bool out = stdlib_base_is_composite( 3 ); // returns false ``` From 74fd7e09a661f3042f420f1326195e7b38088eab Mon Sep 17 00:00:00 2001 From: Pranav <85227306+Pranavchiku@users.noreply.github.com> Date: Sun, 17 Mar 2024 20:53:07 +0530 Subject: [PATCH 5/6] chore: apply suggestions from code review Signed-off-by: Pranav <85227306+Pranavchiku@users.noreply.github.com> --- .../benchmark/benchmark.native.js | 2 +- .../base/assert/is-composite/manifest.json | 37 +------------------ .../math/base/assert/is-composite/src/main.c | 2 - 3 files changed, 2 insertions(+), 39 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/benchmark.native.js index b5d4c5f41b2..ffc4588b445 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/benchmark.native.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/benchmark/benchmark.native.js @@ -44,7 +44,7 @@ bench( pkg+'::native', opts, function benchmark( b ) { b.tic(); for ( i = 0; i < b.iterations; i++ ) { bool = isComposite( i + 1 ); - if ( typeof bool !== 'boolean' ) { + if ( !isBoolean( bool ) ) { b.fail( 'should return a boolean' ); } } diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/manifest.json b/lib/node_modules/@stdlib/math/base/assert/is-composite/manifest.json index 16d3f08a7c9..e139b0cc68c 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/manifest.json +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/manifest.json @@ -1,7 +1,5 @@ { - "options": { - "task": "build" - }, + "options": {}, "fields": [ { "field": "src", @@ -26,39 +24,6 @@ ], "confs": [ { - "task": "build", - "src": [ - "./src/main.c" - ], - "include": [ - "./include" - ], - "libraries": [], - "libpath": [], - "dependencies": [ - "@stdlib/math/base/assert/is-prime", - "@stdlib/math/base/assert/is-integer", - "@stdlib/constants/float64/pinf" - ] - }, - { - "task": "benchmark", - "src": [ - "./src/main.c" - ], - "include": [ - "./include" - ], - "libraries": [], - "libpath": [], - "dependencies": [ - "@stdlib/math/base/assert/is-prime", - "@stdlib/math/base/assert/is-integer", - "@stdlib/constants/float64/pinf" - ] - }, - { - "task": "examples", "src": [ "./src/main.c" ], diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/src/main.c b/lib/node_modules/@stdlib/math/base/assert/is-composite/src/main.c index b4fbe764bba..f4b932447fa 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/src/main.c +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/src/main.c @@ -20,8 +20,6 @@ #include "stdlib/math/base/assert/is_prime.h" #include "stdlib/math/base/assert/is_integer.h" #include "stdlib/constants/float64/pinf.h" -#include -#include /** * Returns a boolean indicating whether a number is a composite. From a459010f3dda41f02832d4b44b6534ec64025ef9 Mon Sep 17 00:00:00 2001 From: Philipp Burckhardt Date: Sun, 17 Mar 2024 16:06:55 -0400 Subject: [PATCH 6/6] Apply suggestions from code review Signed-off-by: Philipp Burckhardt --- .../@stdlib/math/base/assert/is-composite/README.md | 2 +- .../@stdlib/math/base/assert/is-composite/lib/native.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md index 4293d07040d..71c456907a1 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/README.md @@ -113,7 +113,7 @@ Tests if a finite double-precision floating-point number is a composite number. ```c #include -bool out = stdlib_base_is_composite( 3 ); +bool out = stdlib_base_is_composite( 3.0 ); // returns false ``` diff --git a/lib/node_modules/@stdlib/math/base/assert/is-composite/lib/native.js b/lib/node_modules/@stdlib/math/base/assert/is-composite/lib/native.js index 816fac895f0..3cfb2763915 100644 --- a/lib/node_modules/@stdlib/math/base/assert/is-composite/lib/native.js +++ b/lib/node_modules/@stdlib/math/base/assert/is-composite/lib/native.js @@ -31,7 +31,7 @@ var addon = require( './../src/addon.node' ); * * @private * @param {number} x - value to test -* @returns {boolean} boolean indicating whether the number is composite. +* @returns {boolean} boolean indicating whether the number is composite * * @example * var bool = isComposite( 4.0 );