Skip to content

Commit 596adaf

Browse files
committed
Auto-generated commit
1 parent cf2808b commit 596adaf

File tree

10 files changed

+443
-5
lines changed

10 files changed

+443
-5
lines changed

NOTICE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
Copyright (c) 2016-2023 The Stdlib Authors.
1+
Copyright (c) 2016-2024 The Stdlib Authors.

README.md

+47
Original file line numberDiff line numberDiff line change
@@ -1653,6 +1653,53 @@ var count = context.count;
16531653
// returns 3
16541654
```
16551655

1656+
<a name="method-reverse"></a>
1657+
1658+
#### Complex64Array.prototype.reverse()
1659+
1660+
Reverses an array in-place.
1661+
1662+
```javascript
1663+
var realf = require( '@stdlib/complex-realf' );
1664+
var imagf = require( '@stdlib/complex-imagf' );
1665+
1666+
var arr = new Complex64Array( 3 );
1667+
1668+
arr.set( [ 1.0, 1.0 ], 0 );
1669+
arr.set( [ 2.0, 2.0 ], 1 );
1670+
arr.set( [ 3.0, 3.0 ], 2 );
1671+
1672+
var out = arr.reverse();
1673+
// returns <Complex64Array>
1674+
1675+
var z = out.get( 0 );
1676+
// returns <Complex64>
1677+
1678+
var re = realf( z );
1679+
// returns 3.0
1680+
1681+
var im = imagf( z );
1682+
// returns 3.0
1683+
1684+
z = out.get( 1 );
1685+
// returns <Complex64>
1686+
1687+
re = realf( z );
1688+
// returns 2.0
1689+
1690+
im = imagf( z );
1691+
// returns 2.0
1692+
1693+
z = out.get( 2 );
1694+
// returns <Complex64>
1695+
1696+
re = realf( z );
1697+
// returns 1.0
1698+
1699+
im = imagf( z );
1700+
// returns 1.0
1701+
```
1702+
16561703
<a name="method-set"></a>
16571704

16581705
#### Complex64Array.prototype.set( z\[, i] )

benchmark/benchmark.reverse.js

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2023 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var bench = require( '@stdlib/bench-harness' );
24+
var isComplex64Array = require( '@stdlib/assert-is-complex64array' );
25+
var pkg = require( './../package.json' ).name;
26+
var Complex64Array = require( './../lib' );
27+
28+
29+
// MAIN //
30+
31+
bench( pkg+':reverse', function benchmark( b ) {
32+
var out;
33+
var arr;
34+
var i;
35+
36+
arr = new Complex64Array( [ 1, 2, 3, 4, 5, 6 ] );
37+
38+
b.tic();
39+
for ( i = 0; i < b.iterations; i++ ) {
40+
out = arr.reverse();
41+
if ( typeof out !== 'object' ) {
42+
b.fail( 'should return an object' );
43+
}
44+
}
45+
b.toc();
46+
if ( !isComplex64Array( out ) ) {
47+
b.fail( 'should return a Complex64Array' );
48+
}
49+
b.pass( 'benchmark finished' );
50+
b.end();
51+
});

benchmark/benchmark.reverse.length.js

+103
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/**
2+
* @license Apache-2.0
3+
*
4+
* Copyright (c) 2023 The Stdlib Authors.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
'use strict';
20+
21+
// MODULES //
22+
23+
var bench = require( '@stdlib/bench-harness' );
24+
var isComplex64Array = require( '@stdlib/assert-is-complex64array' );
25+
var pow = require( '@stdlib/math-base-special-pow' );
26+
var Complex64 = require( '@stdlib/complex-float32' );
27+
var pkg = require( './../package.json' ).name;
28+
var Complex64Array = require( './../lib' );
29+
30+
31+
// FUNCTIONS //
32+
33+
/**
34+
* Creates a benchmark function.
35+
*
36+
* @private
37+
* @param {PositiveInteger} len - array length
38+
* @returns {Function} benchmark function
39+
*/
40+
function createBenchmark( len ) {
41+
var arr;
42+
var i;
43+
44+
arr = [];
45+
for ( i = 0; i < len; i++ ) {
46+
arr.push( new Complex64( i, i ) );
47+
}
48+
arr = new Complex64Array( arr );
49+
50+
return benchmark;
51+
52+
/**
53+
* Benchmark function.
54+
*
55+
* @private
56+
* @param {Benchmark} b - benchmark instance
57+
*/
58+
function benchmark( b ) {
59+
var out;
60+
var i;
61+
62+
b.tic();
63+
for ( i = 0; i < b.iterations; i++ ) {
64+
out = arr.reverse();
65+
if ( typeof out !== 'object' ) {
66+
b.fail( 'should return an object' );
67+
}
68+
}
69+
b.toc();
70+
if ( !isComplex64Array( out ) ) {
71+
b.fail( 'should return a Complex64Array' );
72+
}
73+
b.pass( 'benchmark finished' );
74+
b.end();
75+
}
76+
}
77+
78+
79+
// MAIN //
80+
81+
/**
82+
* Main execution sequence.
83+
*
84+
* @private
85+
*/
86+
function main() {
87+
var len;
88+
var min;
89+
var max;
90+
var f;
91+
var i;
92+
93+
min = 1; // 10^min
94+
max = 6; // 10^max
95+
96+
for ( i = min; i <= max; i++ ) {
97+
len = pow( 10, i );
98+
f = createBenchmark( len );
99+
bench( pkg+':reverse:len='+len, f );
100+
}
101+
}
102+
103+
main();

dist/index.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/types/index.d.ts

+47
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,53 @@ declare class Complex64Array implements Complex64ArrayInterface {
813813
*/
814814
map<U = unknown>( fcn: MapFcn<U>, thisArg?: ThisParameterType<MapFcn<U>> ): Complex64Array;
815815

816+
/**
817+
* Reverses an array in-place.
818+
*
819+
* @returns reversed array
820+
*
821+
* @example
822+
* var realf = require( '@stdlib/complex-realf' );
823+
* var imagf = require( '@stdlib/complex-imagf' );
824+
*
825+
* var arr = new Complex64Array( 3 );
826+
*
827+
* arr.set( [ 1.0, 1.0 ], 0 );
828+
* arr.set( [ 2.0, 2.0 ], 1 );
829+
* arr.set( [ 3.0, 3.0 ], 2 );
830+
*
831+
* var out = arr.reverse();
832+
* // returns <Complex64Array>
833+
*
834+
* var z = out.get( 0 );
835+
* // returns <Complex64>
836+
*
837+
* var re = realf( z );
838+
* // returns 3.0
839+
*
840+
* var im = imagf( z );
841+
* // returns 3.0
842+
*
843+
* z = out.get( 1 );
844+
* // returns <Complex64>
845+
*
846+
* re = realf( z );
847+
* // returns 2.0
848+
*
849+
* im = imagf( z );
850+
* // returns 2.0
851+
*
852+
* z = out.get( 2 );
853+
* // returns <Complex64>
854+
*
855+
* re = realf( z );
856+
* // returns 1.0
857+
*
858+
* im = imagf( z );
859+
* // returns 1.0
860+
*/
861+
reverse(): Complex64Array;
862+
816863
/**
817864
* Sets an array element.
818865
*

lib/main.js

+75
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var Complex64 = require( '@stdlib/complex-float32' );
4242
var format = require( '@stdlib/string-format' );
4343
var realf = require( '@stdlib/complex-realf' );
4444
var imagf = require( '@stdlib/complex-imagf' );
45+
var floor = require( '@stdlib/math-base-special-floor' );
4546
var reinterpret64 = require( '@stdlib/strided-base-reinterpret-complex64' );
4647
var reinterpret128 = require( '@stdlib/strided-base-reinterpret-complex128' );
4748
var getter = require( '@stdlib/array-base-getter' );
@@ -1728,6 +1729,80 @@ setReadOnly( Complex64Array.prototype, 'map', function map( fcn, thisArg ) {
17281729
return out;
17291730
});
17301731

1732+
/**
1733+
* Reverses an array in-place.
1734+
*
1735+
* @name reverse
1736+
* @memberof Complex64Array.prototype
1737+
* @type {Function}
1738+
* @throws {TypeError} `this` must be a complex number array
1739+
* @returns {Complex64Array} reversed array
1740+
*
1741+
* @example
1742+
* var realf = require( '@stdlib/complex-realf' );
1743+
* var imagf = require( '@stdlib/complex-imagf' );
1744+
*
1745+
* var arr = new Complex64Array( 3 );
1746+
*
1747+
* arr.set( [ 1.0, 1.0 ], 0 );
1748+
* arr.set( [ 2.0, 2.0 ], 1 );
1749+
* arr.set( [ 3.0, 3.0 ], 2 );
1750+
*
1751+
* var out = arr.reverse();
1752+
* // returns <Complex64Array>
1753+
*
1754+
* var z = out.get( 0 );
1755+
* // returns <Complex64>
1756+
*
1757+
* var re = realf( z );
1758+
* // returns 3.0
1759+
*
1760+
* var im = imagf( z );
1761+
* // returns 3.0
1762+
*
1763+
* z = out.get( 1 );
1764+
* // returns <Complex64>
1765+
*
1766+
* re = realf( z );
1767+
* // returns 2.0
1768+
*
1769+
* im = imagf( z );
1770+
* // returns 2.0
1771+
*
1772+
* z = out.get( 2 );
1773+
* // returns <Complex64>
1774+
*
1775+
* re = realf( z );
1776+
* // returns 1.0
1777+
*
1778+
* im = imagf( z );
1779+
* // returns 1.0
1780+
*/
1781+
setReadOnly( Complex64Array.prototype, 'reverse', function reverse() {
1782+
var buf;
1783+
var tmp;
1784+
var len;
1785+
var N;
1786+
var i;
1787+
var j;
1788+
if ( !isComplexArray( this ) ) {
1789+
throw new TypeError( 'invalid invocation. `this` is not a complex number array.' );
1790+
}
1791+
len = this._length;
1792+
buf = this._buffer;
1793+
N = floor( len / 2 );
1794+
for ( i = 0; i < N; i++ ) {
1795+
j = len - i - 1;
1796+
tmp = buf[ (2*i) ];
1797+
buf[ (2*i) ] = buf[ (2*j) ];
1798+
buf[ (2*j) ] = tmp;
1799+
tmp = buf[ (2*i)+1 ];
1800+
buf[ (2*i)+1 ] = buf[ (2*j)+1 ];
1801+
buf[ (2*j)+1 ] = tmp;
1802+
}
1803+
return this;
1804+
});
1805+
17311806
/**
17321807
* Sets an array element.
17331808
*

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"@stdlib/complex-realf": "^0.1.1",
5656
"@stdlib/math-base-assert-is-even": "^0.1.0",
5757
"@stdlib/math-base-assert-is-integer": "^0.1.1",
58+
"@stdlib/math-base-special-floor": "^0.1.1",
5859
"@stdlib/strided-base-reinterpret-complex128": "^0.1.1",
5960
"@stdlib/strided-base-reinterpret-complex64": "^0.1.1",
6061
"@stdlib/string-format": "^0.1.1",

0 commit comments

Comments
 (0)