Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 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
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
185 changes: 185 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,185 @@
<!--

@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 numeric value to the nearest power of ten using single-precision floating-point arithmetic.

<section class="usage">

## Usage

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

#### round10f( x )

Rounds a `numeric` value to the nearest power of ten using single-precision floating-point arithmetic.

```javascript
var y;

y = round10f( 3.1415926 );
// returns 1.0

y = round10f( 123.456 );
// returns 100.0

y = round10f( -2.5 );
// returns -1.0

y = round10f( -0.0 );
// returns -0.0
```

</section>

<!-- /.usage -->

<section class="examples">

## Examples

```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 => %0.4f', x, round10f );
```

</section>

<!-- /.examples -->


* * *

<section class="c">

## C APIs

<section class="intro">

This package provides a C API for rounding single-precision floating-point numbers to the nearest power of \\(10\\).

</section>

<!-- /.intro -->

<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 ten.

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

out = stdlib_base_round10f( 123.456f );
// returns 100.0f
```

**Arguments**

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

**Returns**

- `float`: rounded value.

```c
float stdlib_base_round10f( const float x );
```

</section>

<!-- /.usage -->

<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 class="related">

* * *

## See Also

- <span class="package-name">[`@stdlib/math/base/special/ceil10`][@stdlib/math/base/special/ceil10]</span><span class="delimiter">: </span><span class="description">round a numeric value to the nearest power of 10 toward positive infinity.</span>
- <span class="package-name">[`@stdlib/math/base/special/floor10`][@stdlib/math/base/special/floor10]</span><span class="delimiter">: </span><span class="description">round a numeric value to the nearest power of 10 toward negative infinity.</span>
- <span class="package-name">[`@stdlib/math/base/special/round`][@stdlib/math/base/special/round]</span><span class="delimiter">: </span><span class="description">round a numeric value to the nearest integer.</span>
- <span class="package-name">[`@stdlib/math/base/special/round2`][@stdlib/math/base/special/round2]</span><span class="delimiter">: </span><span class="description">round a numeric value to the nearest power of two on a linear scale.</span>

</section>

<!-- /.related -->

<section class="links">

[@stdlib/math/base/special/ceil10]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/ceil10
[@stdlib/math/base/special/floor10]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/floor10
[@stdlib/math/base/special/round]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/round
[@stdlib/math/base/special/round2]: https://github.com/stdlib-js/stdlib/tree/develop/lib/node_modules/%40stdlib/math/base/special/round2

</section>

<!-- /.links -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* @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 toFloat32 = require( '@stdlib/number/float64/base/to-float32' );
var isnanf = require( '@stdlib/math/base/assert/is-nanf' );
var round10f = require( './../lib/main.js' );
var pkg = require( './../package.json' ).name;


// MAIN //

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

// Generate float32 input values:
x = uniform( 100, -5.0e3, 5.0e3 );
for ( i = 0; i < x.length; i++ ) {
x[ i ] = toFloat32( x[ i ] );
}

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,68 @@
/**
* @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 toFloat32 = require( '@stdlib/number/float64/base/to-float32' );
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;

// Generate float32 input data:
x = uniform( 100, -5.0e3, 5.0e3 );
for ( i = 0; i < x.length; i++ ) {
x[ i ] = toFloat32( x[ i ] );
}

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