# Missing implementations which should be perfectly doable
array_api_tests/test_linalg.py::test_tensordot

# Tests that fail due to lossy ORT workarounds, which are tested elsewhere
array_api_tests/test_statistical_functions.py::test_sum
array_api_tests/test_statistical_functions.py::test_prod

# Failures due to problems in the upstream test suite
# left/right shift tests overflow which is undefined behavior; explicit tests exist in ndonnx
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__ilshift__(x1, x2)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[__lshift__(x1, x2)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_left_shift[bitwise_left_shift(x1, x2)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x, s)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__irshift__(x1, x2)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x, s)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[__rshift__(x1, x2)]
array_api_tests/test_operators_and_elementwise_functions.py::test_bitwise_right_shift[bitwise_right_shift(x1, x2)]

# Trigonometric functions are largely only implemented for float32 and thus fail. They are tested elsewhere.
array_api_tests/test_operators_and_elementwise_functions.py::test_cos
array_api_tests/test_operators_and_elementwise_functions.py::test_tan
array_api_tests/test_operators_and_elementwise_functions.py::test_cosh
array_api_tests/test_operators_and_elementwise_functions.py::test_tanh
array_api_tests/test_operators_and_elementwise_functions.py::test_sinh
array_api_tests/test_operators_and_elementwise_functions.py::test_asin
array_api_tests/test_operators_and_elementwise_functions.py::test_acos
array_api_tests/test_operators_and_elementwise_functions.py::test_atan
array_api_tests/test_operators_and_elementwise_functions.py::test_acosh
array_api_tests/test_operators_and_elementwise_functions.py::test_atanh
array_api_tests/test_operators_and_elementwise_functions.py::test_asinh

# The following tests have no implementation due to lacking operators in the ONNX standard
array_api_tests/test_has_names.py::test_has_names[elementwise-conj]
array_api_tests/test_has_names.py::test_has_names[elementwise-copysign]
array_api_tests/test_has_names.py::test_has_names[elementwise-hypot]
array_api_tests/test_has_names.py::test_has_names[elementwise-imag]
array_api_tests/test_has_names.py::test_has_names[elementwise-real]
array_api_tests/test_has_names.py::test_has_names[elementwise-signbit]
array_api_tests/test_has_names.py::test_has_names[elementwise-atan2]
array_api_tests/test_has_names.py::test_has_names[elementwise-expm1]
array_api_tests/test_has_names.py::test_has_names[elementwise-log1p]
array_api_tests/test_has_names.py::test_has_names[elementwise-nextafter]

array_api_tests/test_operators_and_elementwise_functions.py::test_atan2
array_api_tests/test_operators_and_elementwise_functions.py::test_copysign
array_api_tests/test_operators_and_elementwise_functions.py::test_expm1
array_api_tests/test_operators_and_elementwise_functions.py::test_hypot
array_api_tests/test_operators_and_elementwise_functions.py::test_log1p
array_api_tests/test_operators_and_elementwise_functions.py::test_signbit
array_api_tests/test_operators_and_elementwise_functions.py::test_nextafter

array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[atan2]
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[copysign]
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[hypot]
array_api_tests/test_operators_and_elementwise_functions.py::test_binary_with_scalars_real[nextafter]

array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i < 0) -> NaN]
array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i > 0) -> NaN]
array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is +0) -> NaN]
array_api_tests/test_special_cases.py::test_binary[copysign(x1_i is NaN and x2_i is -0) -> NaN]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is NaN or x2_i is NaN) -> NaN]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i > 0 and x2_i is +0) -> roughly +pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i > 0 and x2_i is -0) -> roughly +pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +0 and x2_i > 0) -> +0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +0 and x2_i is +0) -> +0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +0 and x2_i is -0) -> roughly +pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +0 and x2_i < 0) -> roughly +pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -0 and x2_i > 0) -> -0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -0 and x2_i is +0) -> -0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -0 and x2_i is -0) -> roughly -pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -0 and x2_i < 0) -> roughly -pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i < 0 and x2_i is +0) -> roughly -pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i < 0 and x2_i is -0) -> roughly -pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i > 0 and isfinite(x1_i) and x2_i is +infinity) -> +0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i > 0 and isfinite(x1_i) and x2_i is -infinity) -> roughly +pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i < 0 and isfinite(x1_i) and x2_i is +infinity) -> -0]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i < 0 and isfinite(x1_i) and x2_i is -infinity) -> roughly -pi]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +infinity and isfinite(x2_i)) -> roughly +pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -infinity and isfinite(x2_i)) -> roughly -pi/2]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +infinity and x2_i is +infinity) -> roughly +pi/4]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is +infinity and x2_i is -infinity) -> roughly +3pi/4]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -infinity and x2_i is +infinity) -> roughly -pi/4]
array_api_tests/test_special_cases.py::test_binary[atan2(x1_i is -infinity and x2_i is -infinity) -> roughly -3pi/4]
array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is NaN or x2_i is NaN) -> NaN]
array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is -0 and x2_i is +0) -> +0]
array_api_tests/test_special_cases.py::test_binary[nextafter(x1_i is +0 and x2_i is -0) -> -0]

array_api_tests/test_special_cases.py::test_unary[acos(x_i < -1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[acos(x_i > 1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[acosh(x_i < 1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[asin(x_i < -1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[asin(x_i > 1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[atanh(x_i < -1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[atanh(x_i > 1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[expm1(x_i is +0) -> +0]
array_api_tests/test_special_cases.py::test_unary[expm1(x_i is +infinity) -> +infinity]
array_api_tests/test_special_cases.py::test_unary[expm1(x_i is -0) -> -0]
array_api_tests/test_special_cases.py::test_unary[expm1(x_i is -infinity) -> -1]
array_api_tests/test_special_cases.py::test_unary[expm1(x_i is NaN) -> NaN]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i < -1) -> NaN]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i is +0) -> +0]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i is +infinity) -> +infinity]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i is -0) -> -0]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i is -1) -> -infinity]
array_api_tests/test_special_cases.py::test_unary[log1p(x_i is NaN) -> NaN]
array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i < 0) -> True]
array_api_tests/test_special_cases.py::test_unary[signbit(isfinite(x_i) and x_i > 0) -> False]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +0) -> False]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +NaN) -> False]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is +infinity) -> False]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -0) -> True]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -NaN) -> True]
array_api_tests/test_special_cases.py::test_unary[signbit(x_i is -infinity) -> True]

# Non-implemented extensions (fft and linalg)
array_api_tests/test_has_names.py::test_has_names[fft-fft]
array_api_tests/test_has_names.py::test_has_names[fft-fftfreq]
array_api_tests/test_has_names.py::test_has_names[fft-fftn]
array_api_tests/test_has_names.py::test_has_names[fft-fftshift]
array_api_tests/test_has_names.py::test_has_names[fft-hfft]
array_api_tests/test_has_names.py::test_has_names[fft-ifft]
array_api_tests/test_has_names.py::test_has_names[fft-ifftn]
array_api_tests/test_has_names.py::test_has_names[fft-ifftshift]
array_api_tests/test_has_names.py::test_has_names[fft-ihfft]
array_api_tests/test_has_names.py::test_has_names[fft-irfft]
array_api_tests/test_has_names.py::test_has_names[fft-irfftn]
array_api_tests/test_has_names.py::test_has_names[fft-rfft]
array_api_tests/test_has_names.py::test_has_names[fft-rfftfreq]
array_api_tests/test_has_names.py::test_has_names[fft-rfftn]

array_api_tests/test_has_names.py::test_has_names[linalg-cholesky]
array_api_tests/test_has_names.py::test_has_names[linalg-cross]
array_api_tests/test_has_names.py::test_has_names[linalg-det]
array_api_tests/test_has_names.py::test_has_names[linalg-diagonal]
array_api_tests/test_has_names.py::test_has_names[linalg-eigh]
array_api_tests/test_has_names.py::test_has_names[linalg-eigvalsh]
array_api_tests/test_has_names.py::test_has_names[linalg-inv]
array_api_tests/test_has_names.py::test_has_names[linalg-matmul]
array_api_tests/test_has_names.py::test_has_names[linalg-matrix_norm]
array_api_tests/test_has_names.py::test_has_names[linalg-matrix_power]
array_api_tests/test_has_names.py::test_has_names[linalg-matrix_rank]
array_api_tests/test_has_names.py::test_has_names[linalg-matrix_transpose]
array_api_tests/test_has_names.py::test_has_names[linalg-outer]
array_api_tests/test_has_names.py::test_has_names[linalg-pinv]
array_api_tests/test_has_names.py::test_has_names[linalg-qr]
array_api_tests/test_has_names.py::test_has_names[linalg-slogdet]
array_api_tests/test_has_names.py::test_has_names[linalg-solve]
array_api_tests/test_has_names.py::test_has_names[linalg-svd]
array_api_tests/test_has_names.py::test_has_names[linalg-svdvals]
array_api_tests/test_has_names.py::test_has_names[linalg-tensordot]
array_api_tests/test_has_names.py::test_has_names[linalg-trace]
array_api_tests/test_has_names.py::test_has_names[linalg-vecdot]
array_api_tests/test_has_names.py::test_has_names[linalg-vector_norm]
