@@ -9,19 +9,41 @@ using DynamicPolynomials
99 x_term = MB. term_element (1 , MB. Polynomial {MB.Monomial} (x))
1010 y_term = MB. term_element (1 , MB. Polynomial {MB.Monomial} (y))
1111 p1 = x_term + im * y_term
12- p2 = x_term - im * y_term
12+ q1 = x_term - im * y_term
13+ p2 = im * x_term - 2 y_term
14+ q2 = - im * x_term - 2 y_term
1315 fixed = MB. FixedBasis ([p1, p2])
1416 @test length (fixed) == 2
1517 @test fixed[1 ] ≈ p1
1618 @test fixed[2 ] ≈ p2
1719 @test sprint (show, fixed) == " FixedBasis([$p1 , $p2 ])"
1820
19- semi = MB. SemisimpleBasis ([MB. FixedBasis ([p1]), MB. FixedBasis ([p2])])
20- @test length (semi) == 1
21+ semi =
22+ MB. SemisimpleBasis ([MB. FixedBasis ([p1, p2]), MB. FixedBasis ([q1, q2])])
23+ @test length (semi) == 2
2124 @test sprint (show, semi) ==
22- " Semisimple basis with 2 simple sub-bases:\n FixedBasis([$p1 ])\n FixedBasis([$p2 ])"
25+ " Semisimple basis with 2 simple sub-bases:\n FixedBasis([$p1 , $p2 ])\n FixedBasis([$q1 , $q2 ])"
2326 mult = semi[1 ]
24- @test all (mult. elements .≈ [p1, p2 ])
27+ @test all (mult. elements .≈ [p1, q1 ])
2528 smult = SA. star (mult)
26- @test all (smult. elements .≈ [p2, p1])
29+ @test all (smult. elements .≈ [q1, p1])
30+
31+ elem, state = iterate (semi)
32+ @test elem == semi[1 ]
33+ elem, state = iterate (semi, state)
34+ @test elem == semi[2 ]
35+ @test isnothing (iterate (semi, state))
36+
37+ res = zero (Complex{Int}, MB. algebra (MB. FullBasis {Monomial,typeof(x * y)} ()))
38+ MA. operate! (SA. UnsafeAddMul (* ), res, semi[1 ], semi[2 ], true )
39+ MA. operate! (SA. canonical, res)
40+ @test res == p1 * p2 + q1 * q2
41+ MA. operate! (SA. UnsafeAddMul (* ), res, semi[1 ], semi[2 ], false )
42+ @test res == p1 * p2 + q1 * q2
43+ MA. operate! (SA. UnsafeAddMul (* ), res, semi[2 ], semi[1 ], - 1 )
44+ MA. operate! (SA. canonical, res)
45+ @test iszero (res)
46+ MA. operate! (SA. UnsafeAddMul (* ), res, semi[2 ], semi[2 ], - 1 )
47+ MA. operate! (SA. canonical, res)
48+ @test res == - p2^ 2 - q2^ 2
2749end
0 commit comments