|
1 | 1 | # Plan for `numpy-quaddtype` v1.0.0 |
2 | 2 |
|
3 | | -| ufunc name | Added | |
4 | | -| ------------- | ----- | |
5 | | -| add | ✅ | |
6 | | -| subtract | ✅ | |
7 | | -| multiply | ✅ | |
8 | | -| matmul | #116 | |
9 | | -| divide | ✅ | |
10 | | -| logaddexp | | |
11 | | -| logaddexp2 | | |
12 | | -| true_divide | | |
13 | | -| floor_divide | | |
14 | | -| negative | ✅ | |
15 | | -| positive | ✅ | |
16 | | -| power | ✅ | |
17 | | -| float_power | | |
18 | | -| remainder | | |
19 | | -| mod | ✅ | |
20 | | -| fmod | | |
21 | | -| divmod | | |
22 | | -| absolute | ✅ | |
23 | | -| fabs | | |
24 | | -| rint | ✅ | |
25 | | -| sign | | |
26 | | -| heaviside | | |
27 | | -| conj | | |
28 | | -| conjugate | | |
29 | | -| exp | ✅ | |
30 | | -| exp2 | ✅ | |
31 | | -| log | ✅ | |
32 | | -| log2 | ✅ | |
33 | | -| log10 | ✅ | |
34 | | -| expm1 | | |
35 | | -| log1p | ✅ | |
36 | | -| sqrt | ✅ | |
37 | | -| square | ✅ | |
38 | | -| cbrt | | |
39 | | -| reciprocal | | |
40 | | -| gcd | | |
41 | | -| lcm | | |
42 | | -| sin | ✅ | |
43 | | -| cos | ✅ | |
44 | | -| tan | ✅ | |
45 | | -| arcsin | ✅ | |
46 | | -| arccos | ✅ | |
47 | | -| arctan | ✅ | |
48 | | -| arctan2 | ✅ | |
49 | | -| hypot | | |
50 | | -| sinh | | |
51 | | -| cosh | | |
52 | | -| tanh | | |
53 | | -| arcsinh | | |
54 | | -| arccosh | | |
55 | | -| arctanh | | |
56 | | -| degrees | | |
57 | | -| radians | | |
58 | | -| deg2rad | | |
59 | | -| rad2deg | | |
60 | | -| bitwise_and | | |
61 | | -| bitwise_or | | |
62 | | -| bitwise_xor | | |
63 | | -| invert | | |
64 | | -| left_shift | | |
65 | | -| right_shift | | |
66 | | -| greater | ✅ | |
67 | | -| greater_equal | ✅ | |
68 | | -| less | ✅ | |
69 | | -| less_equal | ✅ | |
70 | | -| not_equal | ✅ | |
71 | | -| equal | ✅ | |
72 | | -| logical_and | | |
73 | | -| logical_or | | |
74 | | -| logical_xor | | |
75 | | -| logical_not | | |
76 | | -| maximum | ✅ | |
77 | | -| minimum | ✅ | |
78 | | -| fmax | | |
79 | | -| fmin | | |
80 | | -| isfinite | | |
81 | | -| isinf | | |
82 | | -| isnan | | |
83 | | -| isnat | | |
84 | | -| signbit | | |
85 | | -| copysign | | |
86 | | -| nextafter | | |
87 | | -| spacing | | |
88 | | -| modf | | |
89 | | -| ldexp | | |
90 | | -| frexp | | |
91 | | -| floor | ✅ | |
92 | | -| ceil | ✅ | |
93 | | -| trunc | ✅ | |
| 3 | +| ufunc name | Added | Edge Cases Tested\* | |
| 4 | +| ------------- | ----- | ------------------------------------------------------------------------------------- | |
| 5 | +| add | ✅ | ✅ | |
| 6 | +| subtract | ✅ | ✅ | |
| 7 | +| multiply | ✅ | ✅ | |
| 8 | +| matmul | #116 | 🟡 _Need: special values (NaN/inf/-0.0), degenerate cases (0×n, 1×1), extreme values_ | |
| 9 | +| divide | ✅ | ✅ | |
| 10 | +| logaddexp | | | |
| 11 | +| logaddexp2 | | | |
| 12 | +| true_divide | | | |
| 13 | +| floor_divide | | | |
| 14 | +| negative | ✅ | ✅ | |
| 15 | +| positive | ✅ | ✅ | |
| 16 | +| power | ✅ | ✅ | |
| 17 | +| float_power | | | |
| 18 | +| remainder | | | |
| 19 | +| mod | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/-0.0/large values)_ | |
| 20 | +| fmod | | | |
| 21 | +| divmod | | | |
| 22 | +| absolute | ✅ | ✅ | |
| 23 | +| fabs | | | |
| 24 | +| rint | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±0.0/halfway cases)_ | |
| 25 | +| sign | | | |
| 26 | +| heaviside | | | |
| 27 | +| conj | | | |
| 28 | +| conjugate | | | |
| 29 | +| exp | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/large +/- values/overflow)_ | |
| 30 | +| exp2 | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/large +/- values/overflow)_ | |
| 31 | +| log | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/-values/1)_ | |
| 32 | +| log2 | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/-values/1)_ | |
| 33 | +| log10 | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/-values/1)_ | |
| 34 | +| expm1 | | | |
| 35 | +| log1p | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/-1/small values)_ | |
| 36 | +| sqrt | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/-values)_ | |
| 37 | +| square | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/large values)_ | |
| 38 | +| cbrt | | | |
| 39 | +| reciprocal | | | |
| 40 | +| gcd | | | |
| 41 | +| lcm | | | |
| 42 | +| sin | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/π multiples/2π range)_ | |
| 43 | +| cos | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/π multiples/2π range)_ | |
| 44 | +| tan | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/π/2 asymptotes)_ | |
| 45 | +| arcsin | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±1/out-of-domain)_ | |
| 46 | +| arccos | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±1/out-of-domain)_ | |
| 47 | +| arctan | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/asymptotes)_ | |
| 48 | +| arctan2 | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/0/quadrant coverage)_ | |
| 49 | +| hypot | | | |
| 50 | +| sinh | | | |
| 51 | +| cosh | | | |
| 52 | +| tanh | | | |
| 53 | +| arcsinh | | | |
| 54 | +| arccosh | | | |
| 55 | +| arctanh | | | |
| 56 | +| degrees | | | |
| 57 | +| radians | | | |
| 58 | +| deg2rad | | | |
| 59 | +| rad2deg | | | |
| 60 | +| bitwise_and | | | |
| 61 | +| bitwise_or | | | |
| 62 | +| bitwise_xor | | | |
| 63 | +| invert | | | |
| 64 | +| left_shift | | | |
| 65 | +| right_shift | | | |
| 66 | +| greater | ✅ | ✅ | |
| 67 | +| greater_equal | ✅ | ✅ | |
| 68 | +| less | ✅ | ✅ | |
| 69 | +| less_equal | ✅ | ✅ | |
| 70 | +| not_equal | ✅ | ✅ | |
| 71 | +| equal | ✅ | ✅ | |
| 72 | +| logical_and | | | |
| 73 | +| logical_or | | | |
| 74 | +| logical_xor | | | |
| 75 | +| logical_not | | | |
| 76 | +| maximum | ✅ | ✅ | |
| 77 | +| minimum | ✅ | ✅ | |
| 78 | +| fmax | | | |
| 79 | +| fmin | | | |
| 80 | +| isfinite | | | |
| 81 | +| isinf | | | |
| 82 | +| isnan | | | |
| 83 | +| isnat | | | |
| 84 | +| signbit | | | |
| 85 | +| copysign | | | |
| 86 | +| nextafter | | | |
| 87 | +| spacing | | | |
| 88 | +| modf | | | |
| 89 | +| ldexp | | | |
| 90 | +| frexp | | | |
| 91 | +| floor | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±0.0/halfway values)_ | |
| 92 | +| ceil | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±0.0/halfway values)_ | |
| 93 | +| trunc | ✅ | ❌ _Need: basic tests + edge cases (NaN/inf/±0.0/fractional values)_ | |
| 94 | + |
| 95 | +\* **Edge Cases Tested**: Indicates whether the ufunc has parametrized tests that compare QuadPrecision results against `float` and `np.float64` for edge cases including: |
| 96 | + |
| 97 | +- Special values: `0.0`, `-0.0`, `inf`, `-inf`, `nan`, `-nan` |
| 98 | +- For trigonometric functions: Critical points like `0`, `π/2`, `π`, `3π/2`, `2π`, values in `[0, 2π]` |
| 99 | +- For logarithmic functions: Values near `0`, `1`, large values |
| 100 | +- For exponential functions: Large positive/negative values, values near `0` |
| 101 | + |
| 102 | +**Testing Status:** |
| 103 | + |
| 104 | +- ✅ = Comprehensive edge case tests exist in `test_quaddtype.py` with parametrized tests against float64 |
| 105 | +- 🟡 = Good basic testing exists but missing some edge cases (specific missing tests noted in italics) |
| 106 | +- ❌ = Ufunc is implemented but lacks systematic testing (required tests noted in italics) |
| 107 | +- (blank) = Ufunc not yet implemented (implementation needed first) |
0 commit comments