From 94b948b66868be4a269a68db7ff673b1f6f33960 Mon Sep 17 00:00:00 2001 From: rajanarahul93 Date: Sun, 26 Oct 2025 13:43:59 +0530 Subject: [PATCH 1/5] feat(@stdlib/math/base/special/gammaincinv): add C implementation --- .../math/base/special/gammaincinv/README.md | 58 ++ .../gammaincinv/benchmark/benchmark.native.js | 76 ++ .../special/gammaincinv/benchmark/c/Makefile | 88 ++ .../gammaincinv/benchmark/c/benchmark.c | 113 +++ .../math/base/special/gammaincinv/binding.gyp | 48 + .../special/gammaincinv/examples/c/Makefile | 84 ++ .../special/gammaincinv/examples/c/example.c | 45 + .../stdlib/math/base/special/gammaincinv.h | 42 + .../base/special/gammaincinv/lib/native.js | 59 ++ .../base/special/gammaincinv/package.json | 2 + .../math/base/special/gammaincinv/src/main.c | 833 ++++++++++++++++++ .../src/stdlib_base_special_gammaincinv.h | 26 + .../special/gammaincinv/test/test.native.js | 92 ++ 13 files changed, 1566 insertions(+) create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/benchmark/benchmark.native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/benchmark/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/benchmark/c/benchmark.c create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/binding.gyp create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/examples/c/Makefile create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/examples/c/example.c create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/include/stdlib/math/base/special/gammaincinv.h create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/lib/native.js create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/src/main.c create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/src/stdlib_base_special_gammaincinv.h create mode 100644 lib/node_modules/@stdlib/math/base/special/gammaincinv/test/test.native.js diff --git a/lib/node_modules/@stdlib/math/base/special/gammaincinv/README.md b/lib/node_modules/@stdlib/math/base/special/gammaincinv/README.md index 7426de70ddd1..c7c676f38ac8 100644 --- a/lib/node_modules/@stdlib/math/base/special/gammaincinv/README.md +++ b/lib/node_modules/@stdlib/math/base/special/gammaincinv/README.md @@ -138,6 +138,64 @@ logEachMap( 'p: %0.4f, \t a: %0.4f, \t P^(-1)(p, a): %0.4f', p, a, gammaincinv ) +
+ +## C API + + +
+
+#include "stdlib/math/base/special/gammaincinv.h"
+#include 
+
+double stdlib_base_special_gammaincinv( const double p, const double a, const bool upper )
+
+
+ +

+Inverts the lower incomplete gamma function. +

+ +
+
+double y = stdlib_base_special_gammaincinv( 0.5, 1.0, false );
+// returns ~0.693
+
+y = stdlib_base_special_gammaincinv( 0.1, 1.0, true );
+// returns ~2.303
+
+
+ +The function accepts the following arguments: + +* p: `[in] double` probability value. +* a: `[in] double` scale parameter. +* upper: `[in] bool` boolean indicating if the function should invert the upper tail of the incomplete gamma function instead. + +
+
+double stdlib_base_special_gammaincinv( const double p, const double a, const bool upper );
+
+
+ +

+ +

+ + +
+
+$ stdlib repl
+> #include "stdlib/math/base/special/gammaincinv.h"
+> #include 
+>
+> double y = stdlib_base_special_gammaincinv( 0.8, 2.0, false );
+> printf( "y = %f\n", y );
+> // => y = 1.213038...
+
+
+ +