|
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