|
1 | 1 | /** |
2 | 2 | * @license Apache-2.0 |
3 | 3 | * |
4 | | -* Copyright (c) 2020 The Stdlib Authors. |
| 4 | +* Copyright (c) 2025 The Stdlib Authors. |
5 | 5 | * |
6 | 6 | * Licensed under the Apache License, Version 2.0 (the "License"); |
7 | 7 | * you may not use this file except in compliance with the License. |
|
21 | 21 | // MODULES // |
22 | 22 |
|
23 | 23 | var tape = require( 'tape' ); |
24 | | -var floor = require( '@stdlib/math/base/special/floor' ); |
25 | 24 | var isnan = require( '@stdlib/math/base/assert/is-nan' ); |
26 | 25 | var isNegativeZero = require( '@stdlib/math/base/assert/is-negative-zero' ); |
27 | 26 | var Float64Array = require( '@stdlib/array/float64' ); |
@@ -100,6 +99,64 @@ tape( 'the function calculates the minimum value of a strided array according to |
100 | 99 | t.end(); |
101 | 100 | }); |
102 | 101 |
|
| 102 | +tape( 'the function calculates the maximum value of a strided array according to a mask (accessor)', function test( t ) { |
| 103 | + var mask; |
| 104 | + var x; |
| 105 | + var v; |
| 106 | + |
| 107 | + x = [ 1.0, -2.0, -4.0, NaN, 5.0, 0.0, 3.0 ]; |
| 108 | + mask = [ 0, 0, 0, 1, 0, 0, 0 ]; |
| 109 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 110 | + t.strictEqual( v, -4.0, 'returns expected value' ); |
| 111 | + |
| 112 | + x = [ -4.0, NaN, -5.0 ]; |
| 113 | + mask = [ 0, 1, 0 ]; |
| 114 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 115 | + t.strictEqual( v, -5.0, 'returns expected value' ); |
| 116 | + |
| 117 | + x = [ -0.0, 0.0, NaN, -0.0 ]; |
| 118 | + mask = [ 0, 0, 1, 0 ]; |
| 119 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 120 | + t.strictEqual( isNegativeZero( v ), true, 'returns expected value' ); |
| 121 | + |
| 122 | + x = [ -4.0, 0.0, NaN, 5.0 ]; |
| 123 | + mask = [ 0, 0, 0, 0 ]; |
| 124 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 125 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 126 | + |
| 127 | + x = [ NaN ]; |
| 128 | + mask = [ 0 ]; |
| 129 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 130 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 131 | + |
| 132 | + x = [ NaN ]; |
| 133 | + mask = [ 1 ]; |
| 134 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 135 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 136 | + |
| 137 | + x = [ NaN, NaN ]; |
| 138 | + mask = [ 1, 1 ]; |
| 139 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 140 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 141 | + |
| 142 | + x = [ NaN, NaN ]; |
| 143 | + mask = [ 1, 0 ]; |
| 144 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 145 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 146 | + |
| 147 | + x = [ NaN, NaN ]; |
| 148 | + mask = [ 0, 1 ]; |
| 149 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 150 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 151 | + |
| 152 | + x = [ NaN, NaN ]; |
| 153 | + mask = [ 0, 0 ]; |
| 154 | + v = nanmskmin( x.length, toAccessorArray( x ), 1, toAccessorArray( mask ), 1 ); |
| 155 | + t.strictEqual( isnan( v ), true, 'returns expected value' ); |
| 156 | + |
| 157 | + t.end(); |
| 158 | +}); |
| 159 | + |
103 | 160 | tape( 'if provided an `N` parameter less than or equal to `0`, the function returns `NaN`', function test( t ) { |
104 | 161 | var mask; |
105 | 162 | var x; |
|
0 commit comments