diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/README.md b/lib/node_modules/@stdlib/math/base/special/cfloor/README.md
index cf4484bf022d..a05c6d04cb53 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/README.md
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/README.md
@@ -18,9 +18,9 @@ limitations under the License.
-->
-# Floor
+# cfloor
-> Round a double-precision complex floating-point number toward negative infinity.
+> Round each component of a double-precision complex floating-point number toward negative infinity.
@@ -51,7 +51,7 @@ var cfloor = require( '@stdlib/math/base/special/cfloor' );
#### cfloor( z )
-Rounds a double-precision complex floating-point number toward negative infinity.
+Rounds each component of a double-precision complex floating-point number toward negative infinity.
```javascript
var Complex128 = require( '@stdlib/complex/float64/ctor' );
@@ -69,6 +69,55 @@ v = cfloor( new Complex128( NaN, NaN ) );
// returns [ NaN, NaN ]
```
+#### cfloor.assign( re, im, out, strideOut, offsetOut )
+
+Rounds each component of a double-precision complex floating-point number toward negative infinity and assigns results to a provided output array.
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+
+var out = new Float64Array( 2 );
+var v = cfloor.assign( -1.5, 2.5, out, 1, 0 );
+// returns [ -2.0, 2.0 ]
+
+var bool = ( out === v );
+// returns true
+```
+
+The function supports the following parameters:
+
+- **re**: real component.
+- **im**: imaginary component.
+- **out**: output array.
+- **strideOut**: stride length for `out`.
+- **offsetOut**: starting index for `out`.
+
+#### cfloor.strided( z, sz, oz, out, so, oo )
+
+Rounds each component of a double-precision complex floating-point number stored in a real-valued strided array view toward negative infinity and assigns results to a provided strided output array.
+
+```javascript
+var Float64Array = require( '@stdlib/array/float64' );
+
+var z = new Float64Array( [ -1.5, 2.5 ] );
+var out = new Float64Array( 2 );
+
+var v = cfloor.strided( z, 1, 0, out, 1, 0 );
+// returns [ -2.0, 2.0 ]
+
+var bool = ( out === v );
+// returns true
+```
+
+The function supports the following parameters:
+
+- **z**: complex number strided array view.
+- **sz**: stride length for `z`.
+- **oz**: starting index for `z`.
+- **out**: output array.
+- **so**: stride length for `out`.
+- **oo**: starting index for `out`.
+
@@ -80,23 +129,16 @@ v = cfloor( new Complex128( NaN, NaN ) );
```javascript
-var Complex128 = require( '@stdlib/complex/float64/ctor' );
-var randu = require( '@stdlib/random/base/randu' );
+var Complex128Array = require( '@stdlib/array/complex128' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var logEachMap = require( '@stdlib/console/log-each-map' );
var cfloor = require( '@stdlib/math/base/special/cfloor' );
-var re;
-var im;
-var z;
-var w;
-var i;
-
-for ( i = 0; i < 100; i++ ) {
- re = ( randu()*100.0 ) - 50.0;
- im = ( randu()*100.0 ) - 50.0;
- z = new Complex128( re, im );
- w = cfloor( z );
- console.log( 'floor(%s) = %s', z.toString(), w.toString() );
-}
+// Create an array of random numbers:
+var arr = new Complex128Array( uniform( 200, -50.0, 50.0 ) );
+
+// Round each component of each complex number toward negative infinity:
+logEachMap( 'cfloor(%s) = %s', arr, cfloor );
```
@@ -131,7 +173,7 @@ for ( i = 0; i < 100; i++ ) {
#### stdlib_base_cfloor( z )
-Rounds a double-precision complex floating-point number toward negative infinity.
+Rounds each component of a double-precision complex floating-point number toward negative infinity.
```c
#include "stdlib/complex/float64/ctor.h"
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.assign.js b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.assign.js
new file mode 100644
index 000000000000..0319c98c8dfb
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.assign.js
@@ -0,0 +1,69 @@
+/**
+* @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 isnan = require( '@stdlib/math/base/assert/is-nan' );
+var Float64Array = require( '@stdlib/array/float64' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var assign = require( './../lib' ).assign;
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float64'
+};
+
+
+// MAIN //
+
+bench( format( '%s:assign', pkg ), function benchmark( b ) {
+ var out;
+ var re;
+ var im;
+ var N;
+ var i;
+ var j;
+
+ N = 100;
+ re = uniform( N, -500.0, 500.0, options );
+ im = uniform( N, -500.0, 500.0, options );
+
+ out = new Float64Array( 2 );
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ j = i % N;
+ out = assign( re[ j ], im[ j ], out, 1, 0 );
+ if ( typeof out !== 'object' ) {
+ b.fail( 'should return an object' );
+ }
+ }
+ b.toc();
+ if ( isnan( out[ 0 ] ) || isnan( out[ 1 ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.js b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.js
index f9447ab92fb7..2af503c1f7a2 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.js
@@ -21,34 +21,36 @@
// MODULES //
var bench = require( '@stdlib/bench' );
-var randu = require( '@stdlib/random/array/uniform' );
+var uniform = require( '@stdlib/random/array/uniform' );
var isnan = require( '@stdlib/math/base/assert/is-nan' );
-var Complex128 = require( '@stdlib/complex/float64/ctor' );
+var Complex128Array = require( '@stdlib/array/complex128' );
var real = require( '@stdlib/complex/float64/real' );
var imag = require( '@stdlib/complex/float64/imag' );
-var uniform = require( '@stdlib/random/base/uniform' );
-var isArray = require( '@stdlib/assert/is-array' );
-var floor = require( '@stdlib/math/base/special/floor' );
-var format = require( '@stdlib/string/format' );
var pkg = require( './../package.json' ).name;
var cfloor = require( './../lib' );
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float64'
+};
+
+
// MAIN //
bench( pkg, function benchmark( b ) {
- var values;
+ var zbuf;
+ var z;
var y;
var i;
- values = [
- new Complex128( uniform( -500.0, 500.0 ), uniform( -500.0, 500.0 ) ),
- new Complex128( uniform( -500.0, 500.0 ), uniform( -500.0, 500.0 ) )
- ];
+ zbuf = uniform( 200, -500.0, 500.0, options );
+ z = new Complex128Array( zbuf.buffer );
b.tic();
for ( i = 0; i < b.iterations; i++ ) {
- y = cfloor( ( values[ i%values.length ] ) );
+ y = cfloor( z.get( i%100 ) );
if ( isnan( real( y ) ) ) {
b.fail( 'should not return NaN' );
}
@@ -60,27 +62,3 @@ bench( pkg, function benchmark( b ) {
b.pass( 'benchmark finished' );
b.end();
});
-
-bench( format( '%s::manual', pkg ), function benchmark( b ) {
- var re;
- var im;
- var y;
- var i;
-
- re = randu( 10, -500.0, 500.0 );
- im = randu( 10, -500.0, 500.0 );
-
- b.tic();
- for ( i = 0; i < b.iterations; i++ ) {
- y = [ floor( re[ i%re.length ] ), floor( im[ i%im.length ] ) ];
- if ( y.length === 0 ) {
- b.fail( 'should not be empty' );
- }
- }
- b.toc();
- if ( !isArray( y ) ) {
- b.fail( 'should return an array' );
- }
- b.pass( 'benchmark finished' );
- b.end();
-});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.native.js b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.native.js
index 459811e603ef..ed0637ab5dfc 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.native.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.native.js
@@ -22,10 +22,11 @@
var resolve = require( 'path' ).resolve;
var bench = require( '@stdlib/bench' );
-var uniform = require( '@stdlib/random/base/uniform' );
+var uniform = require( '@stdlib/random/array/uniform' );
var isnan = require( '@stdlib/math/base/assert/is-nan' );
-var Complex128 = require( '@stdlib/complex/float64/ctor' );
+var Complex128Array = require( '@stdlib/array/complex128' );
var real = require( '@stdlib/complex/float64/real' );
+var imag = require( '@stdlib/complex/float64/imag' );
var tryRequire = require( '@stdlib/utils/try-require' );
var format = require( '@stdlib/string/format' );
var pkg = require( './../package.json' ).name;
@@ -37,29 +38,31 @@ var cfloor = tryRequire( resolve( __dirname, './../lib/native.js' ) );
var opts = {
'skip': ( cfloor instanceof Error )
};
+var options = {
+ 'dtype': 'float64'
+};
// MAIN //
bench( format( '%s::native', pkg ), opts, function benchmark( b ) {
- var values;
+ var zbuf;
+ var z;
var y;
var i;
- values = [
- new Complex128( uniform( -500.0, 500.0 ), uniform( -500.0, 500.0 ) ),
- new Complex128( uniform( -500.0, 500.0 ), uniform( -500.0, 500.0 ) )
- ];
+ zbuf = uniform( 200, -500.0, 500.0, options );
+ z = new Complex128Array( zbuf.buffer );
b.tic();
for ( i = 0; i < b.iterations; i++ ) {
- y = cfloor( values[ i%values.length ] );
+ y = cfloor( z.get( i%100 ) );
if ( isnan( real( y ) ) ) {
b.fail( 'should not return NaN' );
}
}
b.toc();
- if ( isnan( real( y ) ) ) {
+ if ( isnan( imag( y ) ) ) {
b.fail( 'should not return NaN' );
}
b.pass( 'benchmark finished' );
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.strided.js b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.strided.js
new file mode 100644
index 000000000000..d04b1022d627
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/benchmark.strided.js
@@ -0,0 +1,67 @@
+/**
+* @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 isnan = require( '@stdlib/math/base/assert/is-nan' );
+var Float64Array = require( '@stdlib/array/float64' );
+var format = require( '@stdlib/string/format' );
+var pkg = require( './../package.json' ).name;
+var strided = require( './../lib' ).strided;
+
+
+// VARIABLES //
+
+var options = {
+ 'dtype': 'float64'
+};
+
+
+// MAIN //
+
+bench( format( '%s:strided', pkg ), function benchmark( b ) {
+ var out;
+ var z;
+ var N;
+ var i;
+ var j;
+
+ N = 50;
+ z = uniform( N*2, -500.0, 500.0, options );
+
+ out = new Float64Array( 2 );
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ j = ( i % N ) * 2;
+ out = strided( z, 1, j, out, 1, 0 );
+ if ( typeof out !== 'object' ) {
+ b.fail( 'should return an object' );
+ }
+ }
+ b.toc();
+ if ( isnan( out[ 0 ] ) || isnan( out[ 1 ] ) ) {
+ b.fail( 'should not return NaN' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/c/benchmark.c b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/c/benchmark.c
index b9cf18d81742..698e0520d4d5 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/c/benchmark.c
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/benchmark/c/benchmark.c
@@ -20,9 +20,10 @@
#include
#include
#include
+#include
#include
-#define NAME "floor"
+#define NAME "cfloor"
#define ITERATIONS 1000000
#define REPEATS 3
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/repl.txt b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/repl.txt
index f172d7a0c816..1d0b7ee130cb 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/repl.txt
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/repl.txt
@@ -1,7 +1,7 @@
{{alias}}( z )
- Rounds a double-precision complex floating-point number toward negative
- infinity.
+ Rounds each component of a double-precision complex floating-point number
+ toward negative infinity.
Parameters
----------
@@ -18,6 +18,77 @@
> var v = {{alias}}( new {{alias:@stdlib/complex/float64/ctor}}( 5.5, 3.3 ) )
[ 5.0, 3.0 ]
+
+{{alias}}.assign( re, im, out, strideOut, offsetOut )
+ Rounds each component of a double-precision complex floating-point number
+ toward negative infinity and assigns results to a provided output array.
+
+ Parameters
+ ----------
+ re: number
+ Real component.
+
+ im: number
+ Imaginary component.
+
+ out: ArrayLikeObject
+ Output array.
+
+ strideOut: integer
+ Stride length.
+
+ offsetOut: integer
+ Starting index.
+
+ Returns
+ -------
+ out: ArrayLikeObject
+ Output array.
+
+ Examples
+ --------
+ > var out = new {{alias:@stdlib/array/float64}}( 2 );
+ > {{alias}}.assign( -1.5, 2.5, out, 1, 0 )
+ [ -2.0, 2.0 ]
+
+
+{{alias}}.strided( z, sz, oz, out, so, oo )
+ Rounds each component of a double-precision complex floating-point number
+ stored in a real-valued strided array view toward negative infinity and
+ assigns results to a provided strided output array.
+
+ Parameters
+ ----------
+ z: ArrayLikeObject
+ Complex number view.
+
+ sz: integer
+ Stride length for `z`.
+
+ oz: integer
+ Starting index for `z`.
+
+ out: ArrayLikeObject
+ Output array.
+
+ so: integer
+ Stride length for `out`.
+
+ oo: integer
+ Starting index for `out`.
+
+ Returns
+ -------
+ out: ArrayLikeObject
+ Output array.
+
+ Examples
+ --------
+ > var z = new {{alias:@stdlib/array/float64}}( [ -1.5, 2.5 ] );
+ > var out = new {{alias:@stdlib/array/float64}}( 2 );
+ > {{alias}}.strided( z, 1, 0, out, 1, 0 )
+ [ -2.0, 2.0 ]
+
See Also
--------
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/index.d.ts b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/index.d.ts
index f1ba06b80bac..d0b6cc63a905 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/index.d.ts
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/index.d.ts
@@ -21,20 +21,101 @@
///
import { Complex128 } from '@stdlib/types/complex';
+import { Collection, NumericArray } from '@stdlib/types/array';
/**
-* Rounds a double-precision complex floating-point number toward negative infinity.
+* Interface for rounding each component of a double-precision complex floating-point number toward negative infinity.
+*/
+interface Cfloor {
+ /**
+ * Rounds each component of a double-precision complex floating-point number toward negative infinity.
+ *
+ * @param z - complex number
+ * @returns result
+ *
+ * @example
+ * var Complex128 = require( '@stdlib/complex/float64/ctor' );
+ *
+ * var v = cfloor( new Complex128( -1.5, 2.5 ) );
+ * // returns [ -2.0, 2.0 ]
+ */
+ ( z: Complex128 ): Complex128;
+
+ /**
+ * Rounds each component of a double-precision complex floating-point number toward negative infinity and assigns results to a provided output array.
+ *
+ * @param re - real component
+ * @param im - imaginary component
+ * @param out - output array
+ * @param strideOut - stride length
+ * @param offsetOut - starting index
+ * @returns output array
+ *
+ * @example
+ * var Float64Array = require( '@stdlib/array/float64' );
+ *
+ * var out = new Float64Array( 2 );
+ * var v = cfloor.assign( -1.5, 2.5, out, 1, 0 );
+ * // returns [ -2.0, 2.0 ]
+ *
+ * var bool = ( out === v );
+ * // returns true
+ */
+ assign>( re: number, im: number, out: T, strideOut: number, offsetOut: number ): T;
+
+ /**
+ * Rounds each component of a double-precision complex floating-point number stored in a real-valued strided array view toward negative infinity and assigns results to a provided strided output array.
+ *
+ * @param z - complex number view
+ * @param strideZ - stride length for `z`
+ * @param offsetZ - starting index for `z`
+ * @param out - output array
+ * @param strideOut - stride length for `out`
+ * @param offsetOut - starting index for `out`
+ * @returns output array
+ *
+ * @example
+ * var Float64Array = require( '@stdlib/array/float64' );
+ *
+ * var z = new Float64Array( [ -1.5, 2.5 ] );
+ *
+ * var out = cfloor.strided( z, 1, 0, new Float64Array( 2 ), 1, 0 );
+ * // returns [ -2.0, 2.0 ]
+ */
+ strided, U extends NumericArray | Collection>( z: T, strideZ: number, offsetZ: number, out: U, strideOut: number, offsetOut: number ): U;
+}
+
+/**
+* Rounds each component of a double-precision complex floating-point number toward negative infinity.
*
-* @param z - input value
+* @param z - complex number
* @returns result
*
* @example
* var Complex128 = require( '@stdlib/complex/float64/ctor' );
*
-* var v = cfloor( new Complex128( 5.5, 3.3 ) );
-* // returns [ 5.0, 3.0 ]
+* var v = cfloor( new Complex128( -1.5, 2.5 ) );
+* // returns [ -2.0, 2.0 ]
+*
+* @example
+* var Float64Array = require( '@stdlib/array/float64' );
+*
+* var out = new Float64Array( 2 );
+* var v = cfloor.assign( -1.5, 2.5, out, 1, 0 );
+* // returns [ -2.0, 2.0 ]
+*
+* var bool = ( out === v );
+* // returns true
+*
+* @example
+* var Float64Array = require( '@stdlib/array/float64' );
+*
+* var z = new Float64Array( [ -1.5, 2.5 ] );
+*
+* var out = cfloor.strided( z, 1, 0, new Float64Array( 2 ), 1, 0 );
+* // returns [ -2.0, 2.0 ]
*/
-declare function cfloor( z: Complex128 ): Complex128;
+declare var cfloor: Cfloor;
// EXPORTS //
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/test.ts b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/test.ts
index c19e21f1d18b..eef5d2fc70ef 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/test.ts
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/docs/types/test.ts
@@ -22,7 +22,7 @@ import cfloor = require( './index' );
// TESTS //
-// The function returns an array of numbers...
+// The function returns a complex number...
{
cfloor( new Complex128( 1.0, 2.0 ) ); // $ExpectType Complex128
}
@@ -44,3 +44,203 @@ import cfloor = require( './index' );
{
cfloor(); // $ExpectError
}
+
+// Attached to the main export is an `assign` method which returns a collection...
+{
+ cfloor.assign( 1.0, 1.0, new Float64Array( 2 ), 1, 0 ); // $ExpectType Float64Array
+ cfloor.assign( 1.0, 1.0, new Float32Array( 2 ), 1, 0 ); // $ExpectType Float32Array
+ cfloor.assign( 1.0, 1.0, [ 0.0, 0.0 ], 1, 0 ); // $ExpectType number[]
+}
+
+// The compiler throws an error if the `assign` method is provided a first argument which is not a number...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.assign( true, 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( false, 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( null, 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( undefined, 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( '5', 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( [], 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( {}, 2.0, out, 1, 0 ); // $ExpectError
+ cfloor.assign( ( x: number ): number => x, 2.0, out, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `assign` method is provided a second argument which is not a number...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.assign( 1.0, true, out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, false, out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, null, out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, undefined, out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, '5', out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, [], out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, {}, out, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, ( x: number ): number => x, out, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `assign` method is provided a third argument which is not a collection...
+{
+ cfloor.assign( 1.0, 2.0, 1, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, true, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, false, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, null, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, undefined, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, '5', 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, [ '5' ], 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, {}, 1, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, ( x: number ): number => x, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `assign` method is provided a fourth argument which is not a number...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.assign( 1.0, 2.0, out, true, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, false, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, null, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, undefined, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, '5', 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, [], 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, {}, 0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, ( x: number ): number => x, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `assign` method is provided a fifth argument which is not a number...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.assign( 1.0, 2.0, out, 1, true ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, false ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, null ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, undefined ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, '5' ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, [] ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, {} ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, ( x: number ): number => x ); // $ExpectError
+}
+
+// The compiler throws an error if the `assign` method is provided an unsupported number of arguments...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.assign(); // $ExpectError
+ cfloor.assign( 1.0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1 ); // $ExpectError
+ cfloor.assign( 1.0, 2.0, out, 1, 0, {} ); // $ExpectError
+}
+
+// Attached to the main export is a `strided` method which returns a collection...
+{
+ const z = new Float64Array( 2 );
+
+ cfloor.strided( z, 1, 0, new Float64Array( 2 ), 1, 0 ); // $ExpectType Float64Array
+ cfloor.strided( z, 1, 0, new Float32Array( 2 ), 1, 0 ); // $ExpectType Float32Array
+ cfloor.strided( z, 1, 0, [ 0.0, 0.0 ], 1, 0 ); // $ExpectType number[]
+}
+
+// The compiler throws an error if the `strided` method is provided a first argument which is not a collection...
+{
+ const out = new Float64Array( 2 );
+
+ cfloor.strided( true, 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( false, 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( null, 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( undefined, 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( '5', 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( [ '5' ], 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( {}, 1, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( ( x: number ): number => x, 1, 0, out, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided a second argument which is not a number...
+{
+ const z = new Float64Array( 2 );
+ const out = new Float64Array( 2 );
+
+ cfloor.strided( z, true, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, false, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, null, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, undefined, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, '5', 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, [], 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, {}, 0, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, ( x: number ): number => x, 0, out, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided a third argument which is not a number...
+{
+ const z = new Float64Array( 2 );
+ const out = new Float64Array( 2 );
+
+ cfloor.strided( z, 1, true, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, false, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, null, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, undefined, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, '5', out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, [], out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, {}, out, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, ( x: number ): number => x, out, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided a fourth argument which is not a collection...
+{
+ const z = new Float64Array( 2 );
+
+ cfloor.strided( z, 1, 0, 1, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, true, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, false, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, null, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, undefined, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, '5', 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, [ '5' ], 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, {}, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, ( x: number ): number => x, 1, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided a fifth argument which is not a number...
+{
+ const z = new Float64Array( 2 );
+ const out = new Float64Array( 2 );
+
+ cfloor.strided( z, 1, 0, out, true, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, false, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, null, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, undefined, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, '5', 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, [], 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, {}, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, ( x: number ): number => x, 0 ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided a sixth argument which is not a number...
+{
+ const z = new Float64Array( 2 );
+ const out = new Float64Array( 2 );
+
+ cfloor.strided( z, 1, 0, out, 1, true ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, false ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, null ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, undefined ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, '5' ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, [] ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, {} ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, ( x: number ): number => x ); // $ExpectError
+}
+
+// The compiler throws an error if the `strided` method is provided an unsupported number of arguments...
+{
+ const z = new Float64Array( 2 );
+ const out = new Float64Array( 2 );
+
+ cfloor.strided(); // $ExpectError
+ cfloor.strided( z ); // $ExpectError
+ cfloor.strided( z, 1 ); // $ExpectError
+ cfloor.strided( z, 1, 0 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1 ); // $ExpectError
+ cfloor.strided( z, 1, 0, out, 1, 0, {} ); // $ExpectError
+}
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/examples/index.js b/lib/node_modules/@stdlib/math/base/special/cfloor/examples/index.js
index 91777edde7fc..2a29e57c3714 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/examples/index.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/examples/index.js
@@ -18,20 +18,13 @@
'use strict';
-var Complex128 = require( '@stdlib/complex/float64/ctor' );
-var randu = require( '@stdlib/random/base/randu' );
+var Complex128Array = require( '@stdlib/array/complex128' );
+var uniform = require( '@stdlib/random/array/uniform' );
+var logEachMap = require( '@stdlib/console/log-each-map' );
var cfloor = require( './../lib' );
-var re;
-var im;
-var z;
-var w;
-var i;
+// Create an array of random numbers:
+var arr = new Complex128Array( uniform( 200, -50.0, 50.0 ) );
-for ( i = 0; i < 100; i++ ) {
- re = ( randu()*100.0 ) - 50.0;
- im = ( randu()*100.0 ) - 50.0;
- z = new Complex128( re, im );
- w = cfloor( z );
- console.log( 'floor(%s) = %s', z.toString(), w.toString() );
-}
+// Round each component of each complex number toward negative infinity:
+logEachMap( 'cfloor(%s) = %s', arr, cfloor );
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/include/stdlib/math/base/special/cfloor.h b/lib/node_modules/@stdlib/math/base/special/cfloor/include/stdlib/math/base/special/cfloor.h
index 77b3f03fb9a6..f49ada473b9d 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/include/stdlib/math/base/special/cfloor.h
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/include/stdlib/math/base/special/cfloor.h
@@ -29,7 +29,7 @@ extern "C" {
#endif
/**
-* Rounds a double-precision complex floating-point number toward negative infinity.
+* Rounds each component of a double-precision complex floating-point number toward negative infinity.
*/
stdlib_complex128_t stdlib_base_cfloor( const stdlib_complex128_t z );
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/assign.js b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/assign.js
new file mode 100644
index 000000000000..5cb08b597dc7
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/assign.js
@@ -0,0 +1,53 @@
+/**
+* @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 floor = require( '@stdlib/math/base/special/floor' );
+
+
+// MAIN //
+
+/**
+* Rounds each component of a double-precision complex floating-point number toward negative infinity and assigns results to a provided output array.
+*
+* @param {number} re - real component
+* @param {number} im - imaginary component
+* @param {Collection} out - output array
+* @param {integer} strideOut - stride length
+* @param {NonNegativeInteger} offsetOut - starting index
+* @returns {Collection} output array
+*
+* @example
+* var Float64Array = require( '@stdlib/array/float64' );
+*
+* var out = assign( -1.5, 2.5, new Float64Array( 2 ), 1, 0 );
+* // returns [ -2.0, 2.0 ]
+*/
+function assign( re, im, out, strideOut, offsetOut ) {
+ out[ offsetOut ] = floor( re );
+ out[ offsetOut+strideOut ] = floor( im );
+ return out;
+}
+
+
+// EXPORTS //
+
+module.exports = assign;
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/index.js b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/index.js
index 1d6c92a17688..edec1b389c8e 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/index.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/index.js
@@ -19,7 +19,7 @@
'use strict';
/**
-* Round a double-precision floating-point complex number toward negative infinity.
+* Round each component of a double-precision complex floating-point number toward negative infinity.
*
* @module @stdlib/math/base/special/cfloor
*
@@ -54,9 +54,20 @@
// MODULES //
+var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
var main = require( './main.js' );
+var assign = require( './assign.js' );
+var strided = require( './strided.js' );
+
+
+// MAIN //
+
+setReadOnly( main, 'assign', assign );
+setReadOnly( main, 'strided', strided );
// EXPORTS //
module.exports = main;
+
+// exports: { "assign": "main.assign", "strided": "main.strided" }
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/main.js b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/main.js
index 08b59e848e11..31810c856d22 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/main.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/main.js
@@ -21,15 +21,21 @@
// MODULES //
var Complex128 = require( '@stdlib/complex/float64/ctor' );
-var floor = require( '@stdlib/math/base/special/floor' );
+var Float64Array = require( '@stdlib/array/float64' );
var real = require( '@stdlib/complex/float64/real' );
var imag = require( '@stdlib/complex/float64/imag' );
+var assign = require( './assign.js' );
+
+
+// VARIABLES //
+
+var out = new Float64Array( 2 );
// MAIN //
/**
-* Rounds a double-precision floating-point complex number toward negative infinity.
+* Rounds each component of a double-precision complex floating-point number toward negative infinity.
*
* @param {Complex128} z - complex number
* @returns {Complex128} result
@@ -59,7 +65,8 @@ var imag = require( '@stdlib/complex/float64/imag' );
* // returns [ NaN, NaN ]
*/
function cfloor( z ) {
- return new Complex128( floor( real( z ) ), floor( imag( z ) ) );
+ assign( real( z ), imag( z ), out, 1, 0 );
+ return new Complex128( out[ 0 ], out[ 1 ] );
}
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/native.js b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/native.js
index a64c48688d8d..01eaba021a13 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/native.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/native.js
@@ -27,7 +27,7 @@ var addon = require( './../src/addon.node' );
// MAIN //
/**
-* Rounds a double-precision floating-point complex number toward negative infinity.
+* Rounds each component of a double-precision complex floating-point number toward negative infinity.
*
* @private
* @param {Complex128} z - complex number
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/lib/strided.js b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/strided.js
new file mode 100644
index 000000000000..9869ab376e80
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/lib/strided.js
@@ -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 assign = require( './assign.js' );
+
+
+// MAIN //
+
+/**
+* Rounds each component of a double-precision complex floating-point number stored in a real-valued strided array view toward negative infinity and assigns results to a provided strided output array.
+*
+* @param {Float64Array} z - complex number view
+* @param {integer} strideZ - stride length for `z`
+* @param {NonNegativeInteger} offsetZ - starting index for `z`
+* @param {Collection} out - output array
+* @param {integer} strideOut - stride length for `out`
+* @param {NonNegativeInteger} offsetOut - starting index for `out`
+* @returns {Collection} output array
+*
+* @example
+* var Float64Array = require( '@stdlib/array/float64' );
+*
+* var z = new Float64Array( [ -1.5, 2.5 ] );
+*
+* var out = strided( z, 1, 0, new Float64Array( 2 ), 1, 0 );
+* // returns [ -2.0, 2.0 ]
+*/
+function strided( z, strideZ, offsetZ, out, strideOut, offsetOut ) {
+ return assign( z[ offsetZ ], z[ offsetZ+strideZ ], out, strideOut, offsetOut ); // eslint-disable-line max-len
+}
+
+
+// EXPORTS //
+
+module.exports = strided;
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/package.json b/lib/node_modules/@stdlib/math/base/special/cfloor/package.json
index e6c055cc3ddc..f2c81c7a1d3a 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/package.json
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/package.json
@@ -73,7 +73,7 @@
"base_alias": "cfloor",
"alias": "cfloor",
"pkg_desc": "round each component of a double-precision complex floating-point number toward negative infinity",
- "desc": "rounds each component a double-precision complex floating-point number toward negative infinity",
+ "desc": "rounds each component of a double-precision complex floating-point number toward negative infinity",
"short_desc": "",
"parameters": [
{
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/src/main.c b/lib/node_modules/@stdlib/math/base/special/cfloor/src/main.c
index 6abc5b8480b2..ec0ab65744f3 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/src/main.c
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/src/main.c
@@ -22,7 +22,7 @@
#include "stdlib/complex/float64/reim.h"
/**
-* Rounds a double-precision complex floating-point number toward negative infinity.
+* Rounds each component of a double-precision complex floating-point number toward negative infinity.
*
* @param z input value
* @return result
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.assign.js b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.assign.js
new file mode 100644
index 000000000000..c4303450768d
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.assign.js
@@ -0,0 +1,167 @@
+/**
+* @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 tape = require( 'tape' );
+var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' );
+var isnan = require( '@stdlib/math/base/assert/is-nan' );
+var PINF = require( '@stdlib/constants/float64/pinf' );
+var NINF = require( '@stdlib/constants/float64/ninf' );
+var Float64Array = require( '@stdlib/array/float64' );
+var cfloor = require( './../lib/assign.js' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof cfloor, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function rounds each component of a double-precision complex floating-point number toward negative infinity', function test( t ) {
+ var expected;
+ var out;
+ var v;
+
+ out = new Float64Array( 2 );
+ v = cfloor( -1.5, 2.5, out, 1, 0 );
+
+ expected = new Float64Array( [ -2.0, 2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ out = new Float64Array( 4 );
+ v = cfloor( -1.5, 2.5, out, 2, 0 );
+
+ expected = new Float64Array( [ -2.0, 0.0, 2.0, 0.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ out = new Float64Array( 4 );
+ v = cfloor( -1.5, 2.5, out, 2, 1 );
+
+ expected = new Float64Array( [ 0.0, -2.0, 0.0, 2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ out = new Float64Array( 4 );
+ v = cfloor( -1.5, 2.5, out, -2, 3 );
+
+ expected = new Float64Array( [ 0.0, 2.0, 0.0, -2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function rounds real and imaginary components to the largest integer smaller than or equal to a given number', function test( t ) {
+ var expected;
+ var out;
+
+ out = new Float64Array( 2 );
+ cfloor( -4.2, 5.5, out, 1, 0 );
+
+ expected = new Float64Array( [ -5.0, 5.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ out = new Float64Array( 2 );
+ cfloor( 9.99999, 0.1, out, 1, 0 );
+
+ expected = new Float64Array( [ 9.0, 0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ out = new Float64Array( 2 );
+ cfloor( 0.0, 0.0, out, 1, 0 );
+
+ expected = new Float64Array( [ 0.0, 0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns a `NaN` if provided a `NaN`', function test( t ) {
+ var out = new Float64Array( 2 );
+
+ cfloor( NaN, NaN, out, 1, 0 );
+ t.strictEqual( isnan( out[ 0 ] ), true, 'returns expected value' );
+ t.strictEqual( isnan( out[ 1 ] ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `-0` if provided `-0`', function test( t ) {
+ var expected;
+ var out;
+
+ out = new Float64Array( 2 );
+ cfloor( -0.0, -0.0, out, 1, 0 );
+
+ expected = new Float64Array( [ -0.0, -0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `+0` if provided `+0`', function test( t ) {
+ var expected;
+ var out;
+
+ out = new Float64Array( 2 );
+ cfloor( +0.0, +0.0, out, 1, 0 );
+
+ expected = new Float64Array( [ +0.0, +0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
+ var expected;
+ var out;
+
+ out = new Float64Array( 2 );
+ cfloor( PINF, PINF, out, 1, 0 );
+
+ expected = new Float64Array( [ PINF, PINF ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `-infinity` if provided `-infinity`', function test( t ) {
+ var expected;
+ var out;
+
+ out = new Float64Array( 2 );
+ cfloor( NINF, NINF, out, 1, 0 );
+
+ expected = new Float64Array( [ NINF, NINF ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.js b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.js
index a06708bc8c22..c712c81db7a8 100644
--- a/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.js
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.js
@@ -21,14 +21,7 @@
// MODULES //
var tape = require( 'tape' );
-var PINF = require( '@stdlib/constants/float64/pinf' );
-var NINF = require( '@stdlib/constants/float64/ninf' );
-var isnan = require( '@stdlib/math/base/assert/is-nan' );
-var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
-var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' );
-var Complex128 = require( '@stdlib/complex/float64/ctor' );
-var real = require( '@stdlib/complex/float64/real' );
-var imag = require( '@stdlib/complex/float64/imag' );
+var isMethod = require( '@stdlib/assert/is-method' );
var cfloor = require( './../lib' );
@@ -40,70 +33,12 @@ tape( 'main export is a function', function test( t ) {
t.end();
});
-tape( 'the function rounds real and imaginary components to the largest integer smaller than or equal to a given number', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( -4.2, 5.5 ) );
- t.strictEqual( real( v ), -5.0, 'returns expected value' );
- t.strictEqual( imag( v ), 5.0, 'returns expected value' );
-
- v = cfloor( new Complex128( 9.99999, 0.1 ) );
- t.strictEqual( real( v ), 9.0, 'returns expected value' );
- t.strictEqual( imag( v ), 0.0, 'returns expected value' );
-
- v = cfloor( new Complex128( 0.0, 0.0 ) );
- t.strictEqual( real( v ), 0.0, 'returns expected value' );
- t.strictEqual( imag( v ), 0.0, 'returns expected value' );
-
- t.end();
-});
-
-tape( 'the function returns a `NaN` if provided a `NaN`', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( NaN, NaN ) );
- t.strictEqual( isnan( real( v ) ), true, 'returns expected value' );
- t.strictEqual( isnan( imag( v ) ), true, 'returns expected value' );
-
- t.end();
-});
-
-tape( 'the function returns `-0` if provided `-0`', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( -0.0, -0.0 ) );
- t.strictEqual( isNegativeZero( real( v ) ), true, 'returns expected value' );
- t.strictEqual( isNegativeZero( imag( v ) ), true, 'returns expected value' );
-
+tape( 'attached to the main export is an `assign` method', function test( t ) {
+ t.strictEqual( isMethod( cfloor, 'assign' ), true, 'returns expected value' );
t.end();
});
-tape( 'the function returns `+0` if provided `+0`', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( +0.0, +0.0 ) );
- t.strictEqual( isPositiveZero( real( v ) ), true, 'returns expected value' );
- t.strictEqual( isPositiveZero( imag( v ) ), true, 'returns expected value' );
-
- t.end();
-});
-
-tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( PINF, PINF ) );
- t.strictEqual( real( v ), PINF, 'returns expected value' );
- t.strictEqual( imag( v ), PINF, 'returns expected value' );
-
- t.end();
-});
-
-tape( 'the function returns `-infinity` if provided `-infinity`', function test( t ) {
- var v;
-
- v = cfloor( new Complex128( NINF, NINF ) );
- t.strictEqual( real( v ), NINF, 'returns expected value' );
- t.strictEqual( imag( v ), NINF, 'returns expected value' );
-
+tape( 'attached to the main export is a `strided` method', function test( t ) {
+ t.strictEqual( isMethod( cfloor, 'strided' ), true, 'returns expected value' );
t.end();
});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.main.js b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.main.js
new file mode 100644
index 000000000000..d3c51ef5a443
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.main.js
@@ -0,0 +1,109 @@
+/**
+* @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 tape = require( 'tape' );
+var PINF = require( '@stdlib/constants/float64/pinf' );
+var NINF = require( '@stdlib/constants/float64/ninf' );
+var isnan = require( '@stdlib/math/base/assert/is-nan' );
+var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' );
+var isPositiveZero = require( '@stdlib/math/base/assert/is-positive-zero' );
+var Complex128 = require( '@stdlib/complex/float64/ctor' );
+var real = require( '@stdlib/complex/float64/real' );
+var imag = require( '@stdlib/complex/float64/imag' );
+var cfloor = require( './../lib' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof cfloor, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function rounds real and imaginary components to the largest integer smaller than or equal to a given number', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( -4.2, 5.5 ) );
+ t.strictEqual( real( v ), -5.0, 'returns expected value' );
+ t.strictEqual( imag( v ), 5.0, 'returns expected value' );
+
+ v = cfloor( new Complex128( 9.99999, 0.1 ) );
+ t.strictEqual( real( v ), 9.0, 'returns expected value' );
+ t.strictEqual( imag( v ), 0.0, 'returns expected value' );
+
+ v = cfloor( new Complex128( 0.0, 0.0 ) );
+ t.strictEqual( real( v ), 0.0, 'returns expected value' );
+ t.strictEqual( imag( v ), 0.0, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns a `NaN` if provided a `NaN`', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( NaN, NaN ) );
+ t.strictEqual( isnan( real( v ) ), true, 'returns expected value' );
+ t.strictEqual( isnan( imag( v ) ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns `-0` if provided `-0`', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( -0.0, -0.0 ) );
+ t.strictEqual( isNegativeZero( real( v ) ), true, 'returns expected value' );
+ t.strictEqual( isNegativeZero( imag( v ) ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns `+0` if provided `+0`', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( +0.0, +0.0 ) );
+ t.strictEqual( isPositiveZero( real( v ) ), true, 'returns expected value' );
+ t.strictEqual( isPositiveZero( imag( v ) ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( PINF, PINF ) );
+ t.strictEqual( real( v ), PINF, 'returns expected value' );
+ t.strictEqual( imag( v ), PINF, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns `-infinity` if provided `-infinity`', function test( t ) {
+ var v;
+
+ v = cfloor( new Complex128( NINF, NINF ) );
+ t.strictEqual( real( v ), NINF, 'returns expected value' );
+ t.strictEqual( imag( v ), NINF, 'returns expected value' );
+
+ t.end();
+});
diff --git a/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.strided.js b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.strided.js
new file mode 100644
index 000000000000..ff4cabbe459b
--- /dev/null
+++ b/lib/node_modules/@stdlib/math/base/special/cfloor/test/test.strided.js
@@ -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.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var isSameFloat64Array = require( '@stdlib/assert/is-same-float64array' );
+var isnan = require( '@stdlib/math/base/assert/is-nan' );
+var PINF = require( '@stdlib/constants/float64/pinf' );
+var NINF = require( '@stdlib/constants/float64/ninf' );
+var Float64Array = require( '@stdlib/array/float64' );
+var cfloor = require( './../lib/strided.js' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof cfloor, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function rounds each component of a double-precision complex floating-point number toward negative infinity', function test( t ) {
+ var expected;
+ var out;
+ var z;
+ var v;
+
+ z = new Float64Array( [ -1.5, 2.5 ] );
+ out = new Float64Array( 2 );
+ v = cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ -2.0, 2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ z = new Float64Array( [ -1.5, 0.0, 2.5, 0.0 ] );
+ out = new Float64Array( 4 );
+ v = cfloor( z, 2, 0, out, 2, 0 );
+
+ expected = new Float64Array( [ -2.0, 0.0, 2.0, 0.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ z = new Float64Array( [ 0.0, -1.5, 0.0, 2.5 ] );
+ out = new Float64Array( 4 );
+ v = cfloor( z, 2, 1, out, 2, 1 );
+
+ expected = new Float64Array( [ 0.0, -2.0, 0.0, 2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ z = new Float64Array( [ 2.5, -1.5 ] );
+ out = new Float64Array( 4 );
+ v = cfloor( z, -1, 1, out, -2, 3 );
+
+ expected = new Float64Array( [ 0.0, 2.0, 0.0, -2.0 ] );
+
+ t.strictEqual( v, out, 'returns expected value' );
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function rounds real and imaginary components to the largest integer smaller than or equal to a given number', function test( t ) {
+ var expected;
+ var out;
+ var z;
+
+ z = new Float64Array( [ -4.2, 5.5 ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ -5.0, 5.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ z = new Float64Array( [ 9.99999, 0.1 ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ 9.0, 0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ z = new Float64Array( [ 0.0, 0.0 ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ 0.0, 0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function returns a `NaN` if provided a `NaN`', function test( t ) {
+ var out = new Float64Array( 2 );
+ var z = new Float64Array( [ NaN, NaN ] );
+
+ cfloor( z, 1, 0, out, 1, 0 );
+ t.strictEqual( isnan( out[ 0 ] ), true, 'returns expected value' );
+ t.strictEqual( isnan( out[ 1 ] ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `-0` if provided `-0`', function test( t ) {
+ var expected;
+ var out;
+ var z;
+
+ z = new Float64Array( [ -0.0, -0.0 ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ -0.0, -0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `+0` if provided `+0`', function test( t ) {
+ var expected;
+ var out;
+ var z;
+
+ z = new Float64Array( [ +0.0, +0.0 ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ +0.0, +0.0 ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `+infinity` if provided `+infinity`', function test( t ) {
+ var expected;
+ var out;
+ var z;
+
+ z = new Float64Array( [ PINF, PINF ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ PINF, PINF ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns `-infinity` if provided `-infinity`', function test( t ) {
+ var expected;
+ var out;
+ var z;
+
+ z = new Float64Array( [ NINF, NINF ] );
+ out = new Float64Array( 2 );
+ cfloor( z, 1, 0, out, 1, 0 );
+
+ expected = new Float64Array( [ NINF, NINF ] );
+
+ t.strictEqual( isSameFloat64Array( out, expected ), true, 'returns expected value' );
+ t.end();
+});