@@ -13,6 +13,85 @@ def test_create_scalar_simple():
1313 assert isinstance (QuadPrecision (1 ), QuadPrecision )
1414
1515
16+ class TestQuadPrecisionArrayCreation :
17+ """Test suite for QuadPrecision array creation from sequences and arrays."""
18+
19+ def test_create_array_from_list (self ):
20+ """Test that QuadPrecision can create arrays from lists."""
21+ # Test with simple list
22+ result = QuadPrecision ([3 , 4 , 5 ])
23+ assert isinstance (result , np .ndarray )
24+ assert result .dtype .name == "QuadPrecDType128"
25+ assert result .shape == (3 ,)
26+ assert np .array_equal (result , np .array ([3 , 4 , 5 ], dtype = QuadPrecDType ))
27+
28+ # Test with float list
29+ result = QuadPrecision ([1.5 , 2.5 , 3.5 ])
30+ assert isinstance (result , np .ndarray )
31+ assert result .dtype .name == "QuadPrecDType128"
32+ assert result .shape == (3 ,)
33+
34+ def test_create_array_from_tuple (self ):
35+ """Test that QuadPrecision can create arrays from tuples."""
36+ result = QuadPrecision ((10 , 20 , 30 ))
37+ assert isinstance (result , np .ndarray )
38+ assert result .dtype .name == "QuadPrecDType128"
39+ assert result .shape == (3 ,)
40+ assert np .array_equal (result , np .array ([10 , 20 , 30 ], dtype = QuadPrecDType ))
41+
42+ def test_create_array_from_ndarray (self ):
43+ """Test that QuadPrecision can create arrays from numpy arrays."""
44+ arr = np .array ([1 , 2 , 3 , 4 ])
45+ result = QuadPrecision (arr )
46+ assert isinstance (result , np .ndarray )
47+ assert result .dtype .name == "QuadPrecDType128"
48+ assert result .shape == (4 ,)
49+ assert np .array_equal (result , arr .astype (QuadPrecDType ))
50+
51+ def test_create_2d_array_from_nested_list (self ):
52+ """Test that QuadPrecision can create 2D arrays from nested lists."""
53+ result = QuadPrecision ([[1 , 2 ], [3 , 4 ]])
54+ assert isinstance (result , np .ndarray )
55+ assert result .dtype .name == "QuadPrecDType128"
56+ assert result .shape == (2 , 2 )
57+ expected = np .array ([[1 , 2 ], [3 , 4 ]], dtype = QuadPrecDType )
58+ assert np .array_equal (result , expected )
59+
60+ def test_create_array_with_backend (self ):
61+ """Test that QuadPrecision respects backend parameter for arrays."""
62+ # Test with sleef backend (default)
63+ result_sleef = QuadPrecision ([1 , 2 , 3 ], backend = 'sleef' )
64+ assert isinstance (result_sleef , np .ndarray )
65+ assert result_sleef .dtype == QuadPrecDType (backend = 'sleef' )
66+
67+ # Test with longdouble backend
68+ result_ld = QuadPrecision ([1 , 2 , 3 ], backend = 'longdouble' )
69+ assert isinstance (result_ld , np .ndarray )
70+ assert result_ld .dtype == QuadPrecDType (backend = 'longdouble' )
71+
72+ def test_quad_precision_array_vs_astype_equivalence (self ):
73+ """Test that QuadPrecision(array) is equivalent to array.astype(QuadPrecDType)."""
74+ test_arrays = [
75+ [1 , 2 , 3 ],
76+ [1.5 , 2.5 , 3.5 ],
77+ [[1 , 2 ], [3 , 4 ]],
78+ np .array ([10 , 20 , 30 ]),
79+ ]
80+
81+ for arr in test_arrays :
82+ result_quad = QuadPrecision (arr )
83+ result_astype = np .array (arr ).astype (QuadPrecDType )
84+ assert np .array_equal (result_quad , result_astype )
85+ assert result_quad .dtype == result_astype .dtype
86+
87+ def test_create_empty_array (self ):
88+ """Test that QuadPrecision can create arrays from empty sequences."""
89+ result = QuadPrecision ([])
90+ assert isinstance (result , np .ndarray )
91+ assert result .dtype .name == "QuadPrecDType128"
92+ assert result .shape == (0 ,)
93+
94+
1695def test_string_roundtrip ():
1796 # Test with various values that require full quad precision
1897 test_values = [
0 commit comments