Skip to content

Commit d0a0520

Browse files
committed
refactor: modify C implementation to accept double value
--- type: pre_commit_static_analysis_report description: Results of running static analysis checks when committing changes. report: - task: lint_filenames status: passed - task: lint_editorconfig status: passed - task: lint_markdown status: passed - task: lint_package_json status: na - task: lint_repl_help status: na - task: lint_javascript_src status: na - task: lint_javascript_cli status: na - task: lint_javascript_examples status: na - task: lint_javascript_tests status: na - task: lint_javascript_benchmarks status: na - task: lint_python status: na - task: lint_r status: na - task: lint_c_src status: passed - task: lint_c_examples status: passed - task: lint_c_benchmarks status: passed - task: lint_c_tests_fixtures status: na - task: lint_shell status: na - task: lint_typescript_declarations status: na - task: lint_typescript_tests status: na - task: lint_license_headers status: passed ---
1 parent 0002d25 commit d0a0520

File tree

7 files changed

+39
-33
lines changed

7 files changed

+39
-33
lines changed

lib/node_modules/@stdlib/math/base/special/nonfibonacci/README.md

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -154,19 +154,19 @@ for ( i = 1; i < 100; i++ ) {
154154
Computes the nth non-Fibonacci number.
155155

156156
```c
157-
double out = stdlib_base_nonfibonacci( 1 );
158-
// returns 4
157+
double out = stdlib_base_nonfibonacci( 1.0 );
158+
// returns 4.0
159159

160-
out = stdlib_base_nonfibonacci( 2 );
161-
// returns 6
160+
out = stdlib_base_nonfibonacci( 2.0 );
161+
// returns 6.0
162162
```
163163

164164
The function accepts the following arguments:
165165

166-
- **x**: `[in] int32_t` input value.
166+
- **x**: `[in] double` input value.
167167

168168
```c
169-
double stdlib_base_nonfibonacci( const int32_t x );
169+
double stdlib_base_nonfibonacci( const double x );
170170
```
171171
172172
</section>
@@ -190,12 +190,14 @@ double stdlib_base_nonfibonacci( const int32_t x );
190190
```c
191191
#include "stdlib/math/base/special/nonfibonacci.h"
192192
#include <stdio.h>
193-
#include <stdlib.h>
193+
194194
int main( void ) {
195-
int i;
196-
for ( i = 1; i < 12; i++ ) {
197-
double result = stdlib_base_nonfibonacci( i );
198-
printf( "x: %i => result: %lf", i, result );
195+
double i;
196+
double v;
197+
198+
for ( i = 1.0; i < 12.0; i++ ) {
199+
v = stdlib_base_nonfibonacci( i );
200+
printf( "nonfibonacci(%lf) = %lf\n", i, v );
199201
}
200202
}
201203
```

lib/node_modules/@stdlib/math/base/special/nonfibonacci/benchmark/c/native/benchmark.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,13 @@ static double rand_double( void ) {
9090
*/
9191
static double benchmark( void ) {
9292
double elapsed;
93+
double x[ 100 ];
9394
double t;
9495
double y;
95-
int x[ 100 ];
9696
int i;
9797

9898
for ( i = 0; i < 100; i++ ) {
99-
x[ i ] = (int)floor( (100.0*rand_double()) + 1.0 );
99+
x[ i ] = floor( (100.0*rand_double()) + 1.0 );
100100
}
101101

102102
t = tic();

lib/node_modules/@stdlib/math/base/special/nonfibonacci/examples/c/example.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@
2020
#include <stdio.h>
2121

2222
int main( void ) {
23-
int i;
24-
for ( i = 1; i < 12; i++ ) {
25-
double result = stdlib_base_nonfibonacci( i );
26-
printf( "x: %i => result: %lf\n", i, result );
23+
double i;
24+
double v;
25+
26+
for ( i = 1.0; i < 12.0; i++ ) {
27+
v = stdlib_base_nonfibonacci( i );
28+
printf( "nonfibonacci(%lf) = %lf\n", i, v );
2729
}
2830
}

lib/node_modules/@stdlib/math/base/special/nonfibonacci/include/stdlib/math/base/special/nonfibonacci.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
#ifndef STDLIB_MATH_BASE_SPECIAL_NONFIBONACCI_H
2020
#define STDLIB_MATH_BASE_SPECIAL_NONFIBONACCI_H
2121

22-
#include <stdint.h>
23-
2422
/*
2523
* If C++, prevent name mangling so that the compiler emits a binary file having undecorated names, thus mirroring the behavior of a C compiler.
2624
*/
@@ -31,7 +29,7 @@ extern "C" {
3129
/**
3230
* Computes the nth non-Fibonacci number.
3331
*/
34-
double stdlib_base_nonfibonacci( const int32_t n );
32+
double stdlib_base_nonfibonacci( const double n );
3533

3634
#ifdef __cplusplus
3735
}

lib/node_modules/@stdlib/math/base/special/nonfibonacci/manifest.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@
3939
"@stdlib/math/base/napi/unary",
4040
"@stdlib/constants/float64/nan",
4141
"@stdlib/math/base/special/floor",
42-
"@stdlib/math/base/special/ln"
42+
"@stdlib/math/base/special/ln",
43+
"@stdlib/math/base/assert/is-integer"
4344
]
4445
},
4546
{
@@ -55,7 +56,8 @@
5556
"dependencies": [
5657
"@stdlib/constants/float64/nan",
5758
"@stdlib/math/base/special/floor",
58-
"@stdlib/math/base/special/ln"
59+
"@stdlib/math/base/special/ln",
60+
"@stdlib/math/base/assert/is-integer"
5961
]
6062
},
6163
{
@@ -71,7 +73,8 @@
7173
"dependencies": [
7274
"@stdlib/constants/float64/nan",
7375
"@stdlib/math/base/special/floor",
74-
"@stdlib/math/base/special/ln"
76+
"@stdlib/math/base/special/ln",
77+
"@stdlib/math/base/assert/is-integer"
7578
]
7679
}
7780
]

lib/node_modules/@stdlib/math/base/special/nonfibonacci/src/addon.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,4 @@
1919
#include "stdlib/math/base/special/nonfibonacci.h"
2020
#include "stdlib/math/base/napi/unary.h"
2121

22-
STDLIB_MATH_BASE_NAPI_MODULE_I_D( stdlib_base_nonfibonacci )
22+
STDLIB_MATH_BASE_NAPI_MODULE_D_D( stdlib_base_nonfibonacci )

lib/node_modules/@stdlib/math/base/special/nonfibonacci/src/main.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
*/
1818

1919
#include "stdlib/math/base/special/nonfibonacci.h"
20+
#include "stdlib/math/base/assert/is_integer.h"
2021
#include "stdlib/constants/float64/nan.h"
2122
#include "stdlib/math/base/special/floor.h"
2223
#include "stdlib/math/base/special/ln.h"
23-
#include <stdint.h>
2424

2525
static const double SQRT5 = 2.23606797749979;
2626
static const double LN_PHI = 0.48121182506;
@@ -32,31 +32,32 @@ static const double LN_PHI = 0.48121182506;
3232
* @return output value
3333
*
3434
* @example
35-
* double y = stdlib_base_nonfibonacci( 2 );
35+
* double y = stdlib_base_nonfibonacci( 2.0 );
3636
* // returns 6.0
3737
*
3838
* @example
39-
* double y = stdlib_base_nonfibonacci( 1 );
39+
* double y = stdlib_base_nonfibonacci( 1.0 );
4040
* // returns 4.0
4141
*
4242
* @example
43-
* double y = stdlib_base_nonfibonacci( 3 );
43+
* double y = stdlib_base_nonfibonacci( 3.0 );
4444
* // returns 7.0
4545
*
4646
* @example
47-
* double y = stdlib_base_nonfibonacci( -1 );
47+
* double y = stdlib_base_nonfibonacci( -1.0 );
4848
* // returns NaN
4949
*/
50-
double stdlib_base_nonfibonacci( const int32_t n ) {
50+
double stdlib_base_nonfibonacci( const double n ) {
51+
double mut_n;
5152
double a;
5253
double b;
53-
int32_t mut_n = n;
5454

55-
if ( n < 1 ) {
55+
mut_n = n;
56+
if ( !stdlib_base_is_integer( n ) || n < 1.0 ) {
5657
return STDLIB_CONSTANT_FLOAT64_NAN;
5758
}
5859

59-
mut_n += 1;
60+
mut_n += 1.0;
6061
a = stdlib_base_ln( mut_n * SQRT5 ) / LN_PHI;
6162
b = stdlib_base_ln( (SQRT5 * (mut_n + a)) - 5.0 + (3.0 / mut_n) ) / LN_PHI;
6263

0 commit comments

Comments
 (0)