Test intrinsics: npyv_max_##sfx npyv_maxp_##sfx npyv_maxn_##sfx npyv_min_##sfx npyv_minp_##sfx npyv_minn_##sfx npyv_reduce_max_##sfx npyv_reduce_maxp_##sfx npyv_reduce_maxn_##sfx
(self, intrin)
| 485 | "max", "maxp", "maxn", "min", "minp", "minn" |
| 486 | ]) |
| 487 | def test_max_min(self, intrin): |
| 488 | """ |
| 489 | Test intrinsics: |
| 490 | npyv_max_##sfx |
| 491 | npyv_maxp_##sfx |
| 492 | npyv_maxn_##sfx |
| 493 | npyv_min_##sfx |
| 494 | npyv_minp_##sfx |
| 495 | npyv_minn_##sfx |
| 496 | npyv_reduce_max_##sfx |
| 497 | npyv_reduce_maxp_##sfx |
| 498 | npyv_reduce_maxn_##sfx |
| 499 | npyv_reduce_min_##sfx |
| 500 | npyv_reduce_minp_##sfx |
| 501 | npyv_reduce_minn_##sfx |
| 502 | """ |
| 503 | pinf, ninf, nan = self._pinfinity(), self._ninfinity(), self._nan() |
| 504 | chk_nan = {"xp": 1, "np": 1, "nn": 2, "xn": 2}.get(intrin[-2:], 0) |
| 505 | func = eval(intrin[:3]) |
| 506 | reduce_intrin = getattr(self, "reduce_" + intrin) |
| 507 | intrin = getattr(self, intrin) |
| 508 | hf_nlanes = self.nlanes//2 |
| 509 | |
| 510 | cases = ( |
| 511 | ([0.0, -0.0], [-0.0, 0.0]), |
| 512 | ([10, -10], [10, -10]), |
| 513 | ([pinf, 10], [10, ninf]), |
| 514 | ([10, pinf], [ninf, 10]), |
| 515 | ([10, -10], [10, -10]), |
| 516 | ([-10, 10], [-10, 10]) |
| 517 | ) |
| 518 | for op1, op2 in cases: |
| 519 | vdata_a = self.load(op1*hf_nlanes) |
| 520 | vdata_b = self.load(op2*hf_nlanes) |
| 521 | data = func(vdata_a, vdata_b) |
| 522 | simd = intrin(vdata_a, vdata_b) |
| 523 | assert simd == data |
| 524 | data = func(vdata_a) |
| 525 | simd = reduce_intrin(vdata_a) |
| 526 | assert simd == data |
| 527 | |
| 528 | if not chk_nan: |
| 529 | return |
| 530 | if chk_nan == 1: |
| 531 | test_nan = lambda a, b: ( |
| 532 | b if math.isnan(a) else a if math.isnan(b) else b |
| 533 | ) |
| 534 | else: |
| 535 | test_nan = lambda a, b: ( |
| 536 | nan if math.isnan(a) or math.isnan(b) else b |
| 537 | ) |
| 538 | cases = ( |
| 539 | (nan, 10), |
| 540 | (10, nan), |
| 541 | (nan, pinf), |
| 542 | (pinf, nan), |
| 543 | (nan, nan) |
| 544 | ) |
nothing calls this directly
no test coverage detected