Skip to content

Commit cebefce

Browse files
committed
suggestions applied
1 parent c0b77fa commit cebefce

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

quaddtype/numpy_quaddtype/src/scalar.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,15 @@ QuadPrecision_from_object(PyObject *value, QuadBackendType backend)
9292
}
9393

9494
// this checks arrays and sequences (array, tuple)
95+
// rejects strings; they're parsed below
9596
if (PyArray_Check(value) || (PySequence_Check(value) && !PyUnicode_Check(value) && !PyBytes_Check(value)))
9697
{
9798
QuadPrecDTypeObject *dtype_descr = new_quaddtype_instance(backend);
9899
if (dtype_descr == NULL) {
99100
return NULL;
100101
}
101102

102-
103+
// steals reference to the descriptor
103104
PyObject *result = PyArray_FromAny(
104105
value,
105106
(PyArray_Descr *)dtype_descr,

quaddtype/tests/test_quaddtype.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,21 +23,22 @@ def test_create_array_from_list(self):
2323
assert isinstance(result, np.ndarray)
2424
assert result.dtype.name == "QuadPrecDType128"
2525
assert result.shape == (3,)
26-
assert np.array_equal(result, np.array([3, 4, 5], dtype=QuadPrecDType))
26+
np.testing.assert_array_equal(result, np.array([3, 4, 5], dtype=QuadPrecDType(backend='sleef')))
2727

2828
# Test with float list
2929
result = QuadPrecision([1.5, 2.5, 3.5])
3030
assert isinstance(result, np.ndarray)
3131
assert result.dtype.name == "QuadPrecDType128"
3232
assert result.shape == (3,)
33+
np.testing.assert_array_equal(result, np.array([1.5, 2.5, 3.5], dtype=QuadPrecDType(backend='sleef')))
3334

3435
def test_create_array_from_tuple(self):
3536
"""Test that QuadPrecision can create arrays from tuples."""
3637
result = QuadPrecision((10, 20, 30))
3738
assert isinstance(result, np.ndarray)
3839
assert result.dtype.name == "QuadPrecDType128"
3940
assert result.shape == (3,)
40-
assert np.array_equal(result, np.array([10, 20, 30], dtype=QuadPrecDType))
41+
np.testing.assert_array_equal(result, np.array([10, 20, 30], dtype=QuadPrecDType(backend='sleef')))
4142

4243
def test_create_array_from_ndarray(self):
4344
"""Test that QuadPrecision can create arrays from numpy arrays."""
@@ -46,16 +47,16 @@ def test_create_array_from_ndarray(self):
4647
assert isinstance(result, np.ndarray)
4748
assert result.dtype.name == "QuadPrecDType128"
4849
assert result.shape == (4,)
49-
assert np.array_equal(result, arr.astype(QuadPrecDType))
50+
np.testing.assert_array_equal(result, arr.astype(QuadPrecDType(backend='sleef')))
5051

5152
def test_create_2d_array_from_nested_list(self):
5253
"""Test that QuadPrecision can create 2D arrays from nested lists."""
5354
result = QuadPrecision([[1, 2], [3, 4]])
5455
assert isinstance(result, np.ndarray)
5556
assert result.dtype.name == "QuadPrecDType128"
5657
assert result.shape == (2, 2)
57-
expected = np.array([[1, 2], [3, 4]], dtype=QuadPrecDType)
58-
assert np.array_equal(result, expected)
58+
expected = np.array([[1, 2], [3, 4]], dtype=QuadPrecDType(backend='sleef'))
59+
np.testing.assert_array_equal(result, expected)
5960

6061
def test_create_array_with_backend(self):
6162
"""Test that QuadPrecision respects backend parameter for arrays."""
@@ -80,8 +81,8 @@ def test_quad_precision_array_vs_astype_equivalence(self):
8081

8182
for arr in test_arrays:
8283
result_quad = QuadPrecision(arr)
83-
result_astype = np.array(arr).astype(QuadPrecDType)
84-
assert np.array_equal(result_quad, result_astype)
84+
result_astype = np.array(arr).astype(QuadPrecDType(backend='sleef'))
85+
np.testing.assert_array_equal(result_quad, result_astype)
8586
assert result_quad.dtype == result_astype.dtype
8687

8788
def test_create_empty_array(self):
@@ -90,6 +91,8 @@ def test_create_empty_array(self):
9091
assert isinstance(result, np.ndarray)
9192
assert result.dtype.name == "QuadPrecDType128"
9293
assert result.shape == (0,)
94+
expected = np.array([], dtype=QuadPrecDType(backend='sleef'))
95+
np.testing.assert_array_equal(result, expected)
9396

9497
def test_create_from_numpy_int_scalars(self):
9598
"""Test that QuadPrecision can create scalars from numpy integer types."""
@@ -139,12 +142,16 @@ def test_create_from_zero_dimensional_array(self):
139142
assert isinstance(result, np.ndarray)
140143
assert result.shape == () # 0-d array
141144
assert result.dtype.name == "QuadPrecDType128"
145+
expected = np.array(5.5, dtype=QuadPrecDType(backend='sleef'))
146+
np.testing.assert_array_equal(result, expected)
142147

143148
# Another test with integer
144149
arr_0d = np.array(42)
145150
result = QuadPrecision(arr_0d)
146151
assert isinstance(result, np.ndarray)
147152
assert result.shape == ()
153+
expected = np.array(42, dtype=QuadPrecDType(backend='sleef'))
154+
np.testing.assert_array_equal(result, expected)
148155

149156
def test_numpy_scalar_with_backend(self):
150157
"""Test that numpy scalars respect the backend parameter."""

0 commit comments

Comments
 (0)