Changeset 3597
- Timestamp:
- 2015-09-05T18:30:20-07:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/f4grobner/5am-monom.lisp
r3593 r3597 128 128 (is-false (funcall elim-order-2 p q)))) 129 129 130 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 131 ;; 132 ;; TERM class tests 133 ;; 134 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 135 136 (def-fixture term-context () 137 (symbol-macrolet 138 ((z (make-instance 'term :dimension 3 :coeff 5)) 139 (m (make-instance 'term :dimension 3 :exponents '(1 2 3) :coeff 6)) 140 (n (make-instance 'term :dimension 3 :exponents '(4 5 6) :coeff 12)) 141 (m*n (make-instance 'term :dimension 3 :exponents '(5 7 9) :coeff 72)) 142 (n/m (make-instance 'term :dimension 3 :exponents '(3 3 3) :coeff 2)) 143 (m-tensor-n (make-instance 'term :exponents '(1 2 3 4 5 6) :coeff 72)) 144 (m-uminus (make-instance 'term :dimension 3 :exponents '(1 2 3) :coeff -6))) 145 (&body))) 146 147 (test term-basics 148 "Term basics" 149 (with-fixture term-context () 150 (is (= (r-dimension m) 3)) 151 (is (= (r-elt m 2) 3)) 152 (is (= (r-total-degree m) 6)) 153 (is (= (r-sugar m) 6)) 154 (is (equalp (r->list z) '(0 0 0)) "Trivial term is a vector of 0's") 155 (is (r-equalp (r* m n) m*n)) 156 (is (r-equalp (r/ n m) n/m)) 157 (is (r-equalp (right-tensor-product-by m n) m-tensor-n)) 158 (signals 159 (error "EXPONENTS must have length DIMENSION") 160 (make-instance 'term :dimension 3 :exponents '(1 2 3 4 5 6) :coeff 77)) 161 (is-true (r-divides-p m n)) 162 (is-false (r-divides-p n m)) 163 (is (r-equalp (r-gcd m n) m)) 164 (is (r-equalp (r-lcm m n) n)) 165 (is-true (r-depends-p m 0)) 166 (signals 167 (error "Index out of bounds") 168 (r-depends-p m 3)) 169 ) 170 (with-fixture term-context () 171 (is (r-equalp (multiply-by m n) m*n))) 172 (with-fixture term-context () 173 (is (r-equalp (divide-by n m) n/m))) 174 (with-fixture term-context () 175 (is (r-equalp (unary-minus m) m-uminus)))) 176 177 178 (def-fixture monom/term-conversion-context () 179 (symbol-macrolet 180 ((term (make-instance 'term :exponents '(1 2 3) :coeff 4)) 181 (monom (make-instance 'monom :exponents '(1 2 3))) 182 (promoted-monom (make-instance 'term :exponents '(1 2 3) :coeff 1))) 183 (&body))) 184 185 (test monom/term-conversion 186 "Monom/term conversion" 187 (with-fixture monom/term-conversion-context () 188 (is (r-equalp (change-class term 'monom) monom))) 189 (with-fixture monom/term-conversion-context () 190 (is (r-equalp (change-class monom 'term) promoted-monom)))) 191 192 (test monom/term-copy 193 "Monom/term copy" 194 (with-fixture monom/term-conversion-context () 195 (is (r-equalp (copy-instance monom) monom)) 196 (is (r-equalp (copy-instance term) term))) 197 ) 198 199 (test term-tensor-product 200 "Term tensor product" 201 (let ((term1 (make-instance 'term :exponents '(1 2 3) :coeff 4)) 202 (term2 (make-instance 'term :exponents '(4 5) :coeff 3)) 203 (term1-left-tensor-by-term2 (make-instance 'term :exponents '(4 5 1 2 3) :coeff 12))) 204 (is (r-equalp (left-tensor-product-by term1 term2) term1-left-tensor-by-term2)))) 205 206 (test term-contract 207 "Term contract" 208 (let ((term (make-instance 'term :exponents '(1 2 3) :coeff 4)) 209 (term-contracted (make-instance 'term :exponents '(2 3) :coeff 4))) 210 (is (r-equalp (left-contract term 1) term-contracted)))) 211 212 213 214 130 215 (run! 'monom-suite) 131 216 (format t "All tests done!~%")
Note:
See TracChangeset
for help on using the changeset viewer.