-
-
Notifications
You must be signed in to change notification settings - Fork 864
add C implementation to @stdlib/math/base/special/ldexp
#652
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
Merged
Merged
Changes from all commits
Commits
Show all changes
60 commits
Select commit
Hold shift + click to select a range
cb334cc
Add c-api documentation in readme.md
Pranavchiku 97ffe05
Add binding.gyp adn include.gypi
Pranavchiku 64422ab
add ldexp.h
Pranavchiku 8056d68
add main.c, addon.c, Makefile in src/
Pranavchiku bfaaa46
Add manifest.json
Pranavchiku 27cc79e
fix indentation in manifest.json
Pranavchiku 19ffc3a
add native.js
Pranavchiku 40b741f
modifications in main.c
Pranavchiku 5e10242
changes in main.c
Pranavchiku 343c2c4
add missing semicolon
Pranavchiku cb38b3b
add example for c
Pranavchiku 5c6dc93
sync examples of readme.md with example.c
Pranavchiku bae1fe2
add native benchmarks for c
Pranavchiku dd4f8b1
Update lib/node_modules/@stdlib/math/base/special/ldexp/README.md
Pranavchiku 9a67427
Update lib/node_modules/@stdlib/math/base/special/ldexp/README.md
Pranavchiku 032ae74
apply suggestion from code review
Pranavchiku 234180c
Update lib/node_modules/@stdlib/math/base/special/ldexp/src/main.c
Pranavchiku 2ab1544
Update lib/node_modules/@stdlib/math/base/special/ldexp/src/main.c
Pranavchiku f6b48fc
Apply suggestions from code review
kgryte 15edd84
add benchmark.native.js
Pranavchiku b314a8c
fixes in main.c
Pranavchiku 429f28c
add test.native.js
Pranavchiku d4e8f8e
Fix missing opts
kgryte 21bb156
add stdlib constants in place of INFINITY
Pranavchiku 0f71a7d
add ninf and pinf in dependencies
Pranavchiku 3d053b1
Add linebreak
kgryte 2a560b5
Order according to length
kgryte fc7f026
change numbers to stdlib constants
Pranavchiku c094df6
Add dependency in manifest.json
Pranavchiku b042af5
Apply suggestions from code review
kgryte 019e332
Update description
kgryte 20c94f1
Add c-api documentation in readme.md
Pranavchiku 5c7764b
add binding.gyp
Pranavchiku 71d52d7
add include.gypi
Pranavchiku 473fa5b
add frexp.h
Pranavchiku ae37fe7
Add makefile and main.c
Pranavchiku d5304ff
Update lib/node_modules/@stdlib/math/base/special/frexp/README.md
Pranavchiku 948afdb
Update lib/node_modules/@stdlib/math/base/special/frexp/src/main.c
Pranavchiku ec6811b
Update lib/node_modules/@stdlib/math/base/special/frexp/src/main.c
Pranavchiku bdbc63d
Update lib/node_modules/@stdlib/math/base/special/frexp/src/main.c
Pranavchiku 1ef3aee
Apply suggestion from code review
Pranavchiku 9a4ab4d
Update lib/node_modules/@stdlib/math/base/special/frexp/src/main.c
Pranavchiku 68decf2
modifications in main.c
Pranavchiku e6686e6
Add addon.c
Pranavchiku 82c4dc0
Remove get-high-word include
Pranavchiku 637db52
add manifest.json
Pranavchiku de7d021
add native.js
Pranavchiku 3338e2d
add example for c
Pranavchiku e3cfb65
add native benchmarks
Pranavchiku b29c82e
update package.json
Pranavchiku d95ec91
add benchmark for c
Pranavchiku 751c9e4
modification in main.c
Pranavchiku 9c02e65
Add missing colon
kgryte a9c63b8
Change type
kgryte 47efddb
Fix invocation
kgryte d8d9c45
add native tests
Pranavchiku 450839e
fix indentation in manifest.json
Pranavchiku 2bdd5c5
Revert "Merge branch 'frexp2' into ldexp1"
Pranavchiku b03de25
Apply suggestions from code review
kgryte 51e1f7a
Update example
kgryte File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
lib/node_modules/@stdlib/math/base/special/ldexp/benchmark/benchmark.native.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
/** | ||
* @license Apache-2.0 | ||
* | ||
* Copyright (c) 2022 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 round = require( '@stdlib/math/base/special/round' ); | ||
var isnan = require( '@stdlib/math/base/assert/is-nan' ); | ||
var tryRequire = require( '@stdlib/utils/try-require' ); | ||
var pkg = require( './../package.json' ).name; | ||
|
||
|
||
// VARIABLES // | ||
|
||
var ldexp = tryRequire( resolve( __dirname, './../lib/native.js' ) ); | ||
var opts = { | ||
'skip': ( ldexp instanceof Error ) | ||
}; | ||
|
||
|
||
// MAIN // | ||
|
||
bench( pkg+'::native', opts, function benchmark( b ) { | ||
var x; | ||
var y; | ||
var z; | ||
var i; | ||
|
||
b.tic(); | ||
for ( i = 0; i < b.iterations; i++ ) { | ||
x = ( randu()*20.0 ) - 10.0; | ||
y = round( randu()*2040.0 ) - 1020.0; | ||
z = ldexp( x, y ); | ||
if ( isnan( z ) ) { | ||
b.fail( 'should not return NaN' ); | ||
} | ||
} | ||
b.toc(); | ||
if ( isnan( z ) ) { | ||
b.fail( 'should not return NaN' ); | ||
} | ||
b.pass( 'benchmark finished' ); | ||
b.end(); | ||
}); |
146 changes: 146 additions & 0 deletions
146
lib/node_modules/@stdlib/math/base/special/ldexp/benchmark/c/native/Makefile
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,146 @@ | ||
#/ | ||
# @license Apache-2.0 | ||
# | ||
# Copyright (c) 2022 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 includes (e.g., `-I /foo/bar -I /beep/boop/include`): | ||
INCLUDE ?= | ||
|
||
# List of source files: | ||
SOURCE_FILES ?= | ||
|
||
# List of libraries (e.g., `-lopenblas -lpthread`): | ||
LIBRARIES ?= | ||
|
||
# List of library paths (e.g., `-L /foo/bar -L /beep/boop`): | ||
LIBPATH ?= | ||
|
||
# List of C targets: | ||
c_targets := benchmark.out | ||
|
||
|
||
# RULES # | ||
|
||
#/ | ||
# Compiles source files. | ||
# | ||
# @param {string} [C_COMPILER] - C compiler (e.g., `gcc`) | ||
# @param {string} [CFLAGS] - C compiler options | ||
# @param {(string|void)} [fPIC] - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) | ||
# @param {string} [INCLUDE] - list of includes (e.g., `-I /foo/bar -I /beep/boop/include`) | ||
# @param {string} [SOURCE_FILES] - list of source files | ||
# @param {string} [LIBPATH] - list of library paths (e.g., `-L /foo/bar -L /beep/boop`) | ||
# @param {string} [LIBRARIES] - list of libraries (e.g., `-lopenblas -lpthread`) | ||
# | ||
# @example | ||
# make | ||
# | ||
# @example | ||
# make all | ||
#/ | ||
all: $(c_targets) | ||
|
||
.PHONY: all | ||
|
||
#/ | ||
# Compiles C source files. | ||
# | ||
# @private | ||
# @param {string} CC - C compiler (e.g., `gcc`) | ||
# @param {string} CFLAGS - C compiler options | ||
# @param {(string|void)} fPIC - compiler flag determining whether to generate position independent code (e.g., `-fPIC`) | ||
# @param {string} INCLUDE - list of includes (e.g., `-I /foo/bar`) | ||
# @param {string} SOURCE_FILES - list of source files | ||
# @param {string} LIBPATH - list of library paths (e.g., `-L /foo/bar`) | ||
# @param {string} LIBRARIES - list of libraries (e.g., `-lopenblas`) | ||
#/ | ||
$(c_targets): %.out: %.c | ||
$(QUIET) $(CC) $(CFLAGS) $(fPIC) $(INCLUDE) -o $@ $(SOURCE_FILES) $< $(LIBPATH) -lm $(LIBRARIES) | ||
|
||
#/ | ||
# 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 |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.