33 Test Basic Polynomial Functions

In this file we test src/poly/distpoly.as.nw.

749* 13+   743  753
-------------------------------------------------------------------
----
---- Combinat
---- Copyright (C) Ralf Hemmecke <ralf@hemmecke.de>
---- svn co svn://svn.risc.uni-linz.ac.at/hemmecke/combinat/
----
-------------------------------------------------------------------

#assert DontNeedLibraryTestCases
#include "testcases"

TestSparseDistributedPolynomial: TestCaseType with {
#include "distpoly.signatures.as"
} == add {
        import from TestCaseTools;
        macro {
                T == SparseIndexedPowerProduct(I, I);
                P == SparseDistributedPolynomial(Q, I, T);
        }
        import from Z, I, T, Q, P;
        test zero 734a
        test one 742a
        test plus 751c
        test times 742b
}

Defines:
TestSparseDistributedPolynomial, never used.

Uses I 47, Q 47, SparseDistributedPolynomial 526, SparseIndexedPowerProduct 506, and Z 47.
750atest zero 734a+   (733 749)  734c  750b
testZero1(): () == {
        p: P := 0;
        assertTrue(zero? p);
}
750btest zero 734a+   (733 749)  750a  750c
testZero2(): () == {
        p: P := 1;
        q: Q := 0;
        assertTrue(zero?(q*p));
}

Uses Q 47.
750ctest zero 734a+   (733 749)  750b  751a
testZero3(): () == {
        p: P := 1;
        z: Z := 0;
        assertTrue(z=0);
        if P has with {*:(Z, %)->%} then assertTrue(zero?(z*p));
}

Uses Z 47.
751atest zero 734a+   (733 749)  750c
testZero4(): () == {
        a: SparseDistributedPolynomial(P, I, T) := 1;
        p: P := 0;
        assertTrue(zero?(p*a));
}

Uses I 47 and SparseDistributedPolynomial 526.
751btest one 742a+   (733 743 749)  744a
testOne1(): () == {
        q: Q := 1;
        p: P := q :: P;
        assertEquals(P, 1, p);
        assertTrue(one? q);
}

Uses Q 47.
751ctest plus 751c  (749)
testPlus1(): () == {
        macro {
                V == CycleIndexVariable;
                S == SparseIndexedPowerProduct(V, I);
                R == SparseDistributedPolynomial(Q, V, S);
        }
        import from V, S;
        r1: R := power(1 :: V, 1) :: R;
        r2: R := power(2 :: V, 1) :: R;
        two: R := 1 + 1;
        r3: R := r1 + r1;
        r4: R := two*r1;
        assertEquals(R, two*r1, r1 + r1);
        assertEquals(R, two*r2, r2 + r2);
        assertEquals(R, r1+r2+r1, r2 + two*r1);
}

Uses CycleIndexVariable 329, I 47, Q 47, SparseDistributedPolynomial 526, and SparseIndexedPowerProduct 506.
752test times 742b+   (733 743 749)  745a
testTimes1(): () == {
        p1: P := power(1, 1) :: P;
        p2: P := power(2, 1) :: P;
        p3: P := power(3, 1) :: P;
        p: P := (4/1)     *p1*p1*p2 + (-3/1)     *p2*p3 + 1;
        q: P := ((4/1)::P)*p1*p1*p2 + ((-3/1)::P)*p2*p3 + 1;
        r: P := (4/1)*p1*p1*p2 - (3/1)*p2*p3 + 1;
        assertEquals(P, p, q);
        assertEquals(P, p, r);
}