Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0aa9703
feat: add math/base/special/round10f
aryan7071 Jan 3, 2026
f5a68ee
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
3fb5f69
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
7373d1a
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
666c9a0
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
a391f97
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
8e3bc57
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
b15dfe7
feat: add math/base/special/round10f
aryan7071 Jan 5, 2026
fa5b9f4
feat: unary round10f
aryan7071 Jan 5, 2026
97811fc
feat: unary round10f
aryan7071 Jan 5, 2026
fa5042b
feat: unary round10f
aryan7071 Jan 5, 2026
c735e6d
feat: unary round10f
aryan7071 Jan 5, 2026
5a288bb
feat: unary round10f
aryan7071 Jan 6, 2026
26ff1cb
feat: unary round10f
aryan7071 Jan 6, 2026
3097893
feat: unary round10f
aryan7071 Jan 6, 2026
ac44e62
feat: fix round10f
aryan7071 Jan 6, 2026
2839fc0
feat: fix round10f
aryan7071 Jan 6, 2026
21e0582
feat: fix round10f
aryan7071 Jan 6, 2026
f3637a1
fix: update year headers and correct examples/c/Makefile + lib/index.js
aryan7071 Jan 6, 2026
4330a92
fix: main.js + index.d.ts + test.ts + repl.txt
aryan7071 Jan 7, 2026
0077706
fix: address review feedback for round10f C implementation and docs
aryan7071 Jan 10, 2026
514945c
fix: address review feedback for round10f C implementation and docs
aryan7071 Jan 10, 2026
623fe68
docs: fix documentation style and whitespace for round10f
aryan7071 Jan 13, 2026
262df83
chore: address review feedback for round10f
aryan7071 Jan 13, 2026
55c762f
chore: address review feedback for round10f
aryan7071 Jan 13, 2026
360caea
chore: address review feedback for round10f
aryan7071 Jan 13, 2026
b6aa583
fix: update copyright year
aryan7071 Jan 13, 2026
a4b652e
Merge branch 'develop' into add-round10f
anandkaranubc Aug 8, 2026
3807618
chore: code review
anandkaranubc Aug 9, 2026
610ecd2
chore: code review
anandkaranubc Aug 9, 2026
d0e61ab
Merge branch 'develop' into add-round10f
kgryte Aug 10, 2026
9395282
Merge branch 'develop' into add-round10f
anandkaranubc Aug 10, 2026
5b8839a
chore: code review
anandkaranubc Aug 10, 2026
921354a
chore: code review
anandkaranubc Aug 10, 2026
8d1ee5f
chore: code review
anandkaranubc Aug 10, 2026
8188e76
chore: code review
anandkaranubc Aug 10, 2026
d783092
Apply suggestions from code review
kgryte Aug 10, 2026
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
208 changes: 208 additions & 0 deletions lib/node_modules/@stdlib/math/base/special/round10f/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
<!--

@license Apache-2.0

Copyright (c) 2026 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.

-->

# round10f

> Round a single-precision floating-point number to the nearest power of 10 on a linear scale.

<section class="usage">

## Usage

```javascript
var round10f = require( '@stdlib/math/base/special/round10f' );
```

#### round10f( x )

Rounds a single-precision floating-point number to the nearest power of `10` on a linear scale.

```javascript
var v = round10f( -4.2 );
// returns -1.0

v = round10f( -4.5 );
// returns -1.0

v = round10f( -4.6 );
// returns -1.0

v = round10f( 9.99999 );
// returns 10.0

v = round10f( 9.5 );
// returns 10.0

v = round10f( 13.0 );
// returns 10.0

v = round10f( -13.0 );
// returns -10.0

v = round10f( 0.0 );
// returns 0.0

v = round10f( -0.0 );
// returns -0.0

v = round10f( Infinity );
// returns Infinity

v = round10f( -Infinity );
// returns -Infinity

v = round10f( NaN );
// returns NaN
```

</section>

<!-- /.usage -->

<section class="examples">

## Examples

<!-- eslint no-undef: "error" -->

```javascript
var uniform = require( '@stdlib/random/array/uniform' );
var logEachMap = require( '@stdlib/console/log-each-map' );
var round10f = require( '@stdlib/math/base/special/round10f' );

var opts = {
'dtype': 'float32'
};
var x = uniform( 100, -50.0, 50.0, opts );

logEachMap( 'x: %0.4f. Rounded: %0.4f.', x, round10f );
```
Comment thread
aryan7071 marked this conversation as resolved.

</section>

<!-- /.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/round10f.h"
```

#### stdlib_base_round10f( x )

Rounds a single-precision floating-point number to the nearest power of `10` on a linear scale.

```c
float out = stdlib_base_round10f( 3.14f );
// returns 1.0f

out = stdlib_base_round10f( 13.0f );
// returns 10.0f
```

The function accepts the following arguments:

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

```c
float stdlib_base_round10f( const float 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/round10f.h"
#include <stdio.h>

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

float v;
int i;
for ( i = 0; i < 10; i++ ) {
v = stdlib_base_round10f( x[ i ] );
printf( "round10f(%f) = %f\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">

</section>

<!-- /.related -->

<!-- Section for all links. Make sure to keep an empty line after the `section` element and another before the `/section` close. -->

<section class="links">

<!-- <related-links> -->

<!-- </related-links> -->

</section>

<!-- /.links -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 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 bench = require( '@stdlib/bench' );
var uniform = require( '@stdlib/random/array/uniform' );
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
var pkg = require( './../package.json' ).name;
var round10f = require( './../lib' );


// MAIN //

bench( pkg, function benchmark( b ) {
var x;
var y;
var i;

x = uniform( 100, -5.0e6, 5.0e6, {
'dtype': 'float32'
});

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
y = round10f( x[ i%x.length ] );
if ( isnanf( y ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
if ( isnanf( y ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
b.end();
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/**
* @license Apache-2.0
*
* Copyright (c) 2026 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 uniform = require( '@stdlib/random/array/uniform' );
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
var tryRequire = require( '@stdlib/utils/try-require' );
var format = require( '@stdlib/string/format' );
var pkg = require( './../package.json' ).name;


// VARIABLES //

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


// MAIN //

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

x = uniform( 100, -5.0e6, 5.0e6, {
'dtype': 'float32'
});

b.tic();
for ( i = 0; i < b.iterations; i++ ) {
y = round10f( x[ i%x.length ] );
if ( isnanf( y ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
if ( isnanf( y ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
b.end();
});
Loading