QuadPrecDType.common_instance selects the SLEEF backend for mixed SLEEF and long-double descriptors, since long double can widen to binary128.
Existing operations do not consistently follow that policy:
np.result_type(sleef, longdouble) selects SLEEF.
- Binary ufunc resolvers select long double.
- Comparison resolvers select long double.
matmul rejects non-SLEEF inputs.
This makes result dtype and precision operation-dependent for the same pair of input descriptors.
After lossless inter-backend casting is available (see #112 ) , supported mixed-backend operations should consistently follow common_instance, preferably through a shared backend-selection helper.
Acceptance criteria:
result_type, arithmetic, comparisons, and dot-family loops agree on the common backend wherever both backends are supported.
- Both operand orders produce the same result dtype.
- Precision-sensitive tests verify that promotion does not narrow through long double or double.
- Unsupported operations fail explicitly rather than applying a different promotion rule.
QuadPrecDType.common_instanceselects the SLEEF backend for mixed SLEEF and long-double descriptors, since long double can widen to binary128.Existing operations do not consistently follow that policy:
np.result_type(sleef, longdouble)selects SLEEF.matmulrejects non-SLEEF inputs.This makes result dtype and precision operation-dependent for the same pair of input descriptors.
After lossless inter-backend casting is available (see #112 ) , supported mixed-backend operations should consistently follow
common_instance, preferably through a shared backend-selection helper.Acceptance criteria:
result_type, arithmetic, comparisons, and dot-family loops agree on the common backend wherever both backends are supported.