Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: minor clean-up of math/base/special/acsc #1298

Merged
merged 27 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
07005bd
enh: document c api in readme
Pranavchiku Jan 30, 2024
64c3cbe
chore: add include.gypi and binding.gyp
Pranavchiku Jan 30, 2024
88e8d9c
chore: add acsc.h
Pranavchiku Jan 30, 2024
bdde66a
chore: add c src directory
Pranavchiku Jan 30, 2024
9867e33
chore: add manifest.json
Pranavchiku Jan 30, 2024
1eb652c
chore: add lib/native.js
Pranavchiku Jan 30, 2024
df92cfb
chore: add C examples
Pranavchiku Jan 30, 2024
c0c5324
chore: add native js and C benchmarks
Pranavchiku Jan 30, 2024
6e13916
chore: add native js test
Pranavchiku Jan 30, 2024
760d265
chore: update benchmarks
Pranavchiku Jan 30, 2024
0219779
fix: incorrect implementation in main.c
Pranavchiku Jan 30, 2024
f6f1458
chore: fix year in binding.gyp
Pranavchiku Jan 30, 2024
39c89d8
chore: update package and manifest files
Pranavchiku Jan 30, 2024
fe323b8
Apply suggestions from code review
kgryte Jan 31, 2024
1ce7469
Apply suggestions from code review
kgryte Jan 31, 2024
f27085d
Apply suggestions from code review
kgryte Jan 31, 2024
861964d
chore: add gypfile entry to package.json
Planeshifter Jun 25, 2024
4a0f1a0
Delete lib/node_modules/@stdlib/math/base/special/acsc/benchmark/c/be…
Planeshifter Jun 25, 2024
001f7e2
Delete lib/node_modules/@stdlib/math/base/special/acsc/benchmark/c/Ma…
Planeshifter Jun 25, 2024
4ac6bea
chore: move files
Planeshifter Jun 25, 2024
f33829d
Merge branch 'develop' into gh859
Planeshifter Jun 25, 2024
8263705
Delete lib/node_modules/@stdlib/math/base/special/acsc/benchmark/benc…
Planeshifter Jun 25, 2024
603ce78
Delete lib/node_modules/@stdlib/math/base/special/acsc/benchmark/c/Ma…
Planeshifter Jun 25, 2024
c4e88a2
chore: restore file
Planeshifter Jun 25, 2024
c2e34ca
chore: delete file
Planeshifter Jun 25, 2024
2f62de1
chore: convert to tab indentation
Planeshifter Jun 25, 2024
aaf7ff7
chore: change copyright year
Planeshifter Jun 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions lib/node_modules/@stdlib/math/base/special/acsc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,91 @@ for ( i = 0; i < x.length; i++ ) {

<!-- /.examples -->

<!-- C interface documentation. -->

* * *

<section class="c">

## C APIs

<!-- Section to include introductory text. Make sure to keep an empty line after the intro `section` element and another before the `/section` close. -->

<section class="intro">

</section>

<!-- /.intro -->

<!-- C usage documentation. -->

<section class="usage">

### Usage

```c
#include "stdlib/math/base/special/acsc.h"
```

#### stdlib_base_acsc( x )

Computes the [arccosecant][arccosecant] of a double-precision floating-point number.

```c
double out = stdlib_base_acsc( 1.0 );
// returns ~1.57
```

The function accepts the following arguments:

- **x**: `[in] double` input value.

```c
double stdlib_base_acsc( const double x );
```

</section>

<!-- /.usage -->

<!-- C API usage notes. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->

<section class="notes">

</section>

<!-- /.notes -->

<!-- C API usage examples. -->

<section class="examples">

### Examples

```c
#include "stdlib/math/base/special/acsc.h"
#include <stdio.h>

int main( void ) {
const double x[] = { -5.0, -3.89, -2.78, -1.67, -0.56, 0.56, 1.67, 2.78, 3.89, 5.0 };

double v;
int i;
for ( i = 0; i < 10; i++ ) {
v = stdlib_base_asc( x[ i ] );
printf( "acsc(%lf) = %lf\n", x[ i ], v );
}
}
```

</section>

<!-- /.examples -->

</section>

<!-- /.c -->

<!-- Section for related `stdlib` packages. Do not manually edit this section, as it is automatically populated. -->

<section class="related">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2024 The Stdlib Authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

'use strict';

// MODULES //

var resolve = require( 'path' ).resolve;
var bench = require( '@stdlib/bench' );
var randu = require( '@stdlib/random/base/randu' );
var isnan = require( '@stdlib/math/base/assert/is-nan' );
var tryRequire = require( '@stdlib/utils/try-require' );
var pkg = require( './../package.json' ).name;


// VARIABLES //

var acsc = tryRequire( resolve( __dirname, './../lib/native.js' ) );
var opts = {
'skip': ( acsc instanceof Error )
};


// MAIN //

bench( pkg+'::native', opts, function benchmark( b ) {
var x;
var y;
var i;

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
x = ( randu()*2.0 ) + 1.0;
y = acsc( x );
if ( isnan( y ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
if ( isnan( y ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
b.end();
});
126 changes: 126 additions & 0 deletions lib/node_modules/@stdlib/math/base/special/acsc/benchmark/c/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
#/
# @license Apache-2.0
#
# Copyright (c) 2024 The Stdlib Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#/

# VARIABLES #

ifndef VERBOSE
QUIET := @
else
QUIET :=
endif

# Determine the OS ([1][1], [2][2]).
#
# [1]: https://en.wikipedia.org/wiki/Uname#Examples
# [2]: http://stackoverflow.com/a/27776822/2225624
OS ?= $(shell uname)
ifneq (, $(findstring MINGW,$(OS)))
OS := WINNT
else
ifneq (, $(findstring MSYS,$(OS)))
OS := WINNT
else
ifneq (, $(findstring CYGWIN,$(OS)))
OS := WINNT
else
ifneq (, $(findstring Windows_NT,$(OS)))
OS := WINNT
endif
endif
endif
endif

# Define the program used for compiling C source files:
ifdef C_COMPILER
CC := $(C_COMPILER)
else
CC := gcc
endif

# Define the command-line options when compiling C files:
CFLAGS ?= \
-std=c99 \
-O3 \
-Wall \
-pedantic

# Determine whether to generate position independent code ([1][1], [2][2]).
#
# [1]: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options
# [2]: http://stackoverflow.com/questions/5311515/gcc-fpic-option
ifeq ($(OS), WINNT)
fPIC ?=
else
fPIC ?= -fPIC
endif

# List of C targets:
c_targets := benchmark.out


# RULES #

#/
# Compiles C source files.
#
# @param {string} [C_COMPILER] - C compiler
# @param {string} [CFLAGS] - C compiler flags
# @param {(string|void)} [fPIC] - compiler flag indicating whether to generate position independent code
#
# @example
# make
#
# @example
# make all
#/
all: $(c_targets)

.PHONY: all

#/
# Compiles C source files.
#
# @private
# @param {string} CC - C compiler
# @param {string} CFLAGS - C compiler flags
# @param {(string|void)} fPIC - compiler flag indicating whether to generate position independent code
#/
$(c_targets): %.out: %.c
$(QUIET) $(CC) $(CFLAGS) $(fPIC) -o $@ $< -lm

#/
# Runs compiled benchmarks.
#
# @example
# make run
#/
run: $(c_targets)
$(QUIET) ./$<

.PHONY: run

#/
# Removes generated files.
#
# @example
# make clean
#/
clean:
$(QUIET) -rm -f *.o *.out

.PHONY: clean
Loading
Loading