close Warning: Can't synchronize with repository "(default)" (The repository directory has changed, you should resynchronize the repository with: trac-admin $ENV repository resync '(default)'). Look in the Trac log for more information.

Changeset 3225 for branches


Ignore:
Timestamp:
2015-06-22T19:56:53-07:00 (10 years ago)
Author:
Marek Rychlik
Message:

* empty log message *

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/f4grobner/5am-symbolic-poly.lisp

    r3224 r3225  
    5151(in-package :5am-symbolic-poly)
    5252
    53 (def-suite poly-suite
    54     :description "Monom package suite")
     53(def-suite symbolic-poly-suite
     54    :description "Symbolic polynomial package suite")
    5555
    5656(in-suite poly-suite)
    5757
    58 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    59 ;;
    60 ;;        POLY class tests
    61 ;;
    62 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    6358
    64 (def-fixture poly-add-context ()
    65   (let ((p (make-instance 'poly))
    66         (q (make-instance 'poly :order nil))
    67         (p+q (make-instance 'poly))
    68         (p-q (make-instance 'poly))
    69         (p-uminus (make-instance 'poly)))
    70     ;; Populate the polynomials; the lists of (exponents . coefficient) pairs
    71     ;; must be in increasing order in Q, but Q is unordered (:ORDER NIL)
    72     ;; so it will be automatically sorted.
    73     (dolist (x '( ((2) . 22)  ((4) . 44) ((5) . 55) ((8) . 88) ((9) . 99) ))
    74       (insert-item p (make-instance 'term :exponents (car x) :coeff (cdr x))))
    75     (dolist (x '( ((9) . 90) ((0) . 11)  ((2) . 20) ((3) . 33) ((4) . -44)  ((7) . 77) ((8) . 88) ))
    76       (insert-item q (make-instance 'term :exponents (car x) :coeff (cdr x))))
    77     ;; P+Q
    78     (dolist (x '(((0) . 11) ((2) . 42)  ((3) . 33) ((5) . 55) ((7) . 77) ((8) . 176) ((9) . 189) ))
    79       (insert-item p+q (make-instance 'term :exponents (car x) :coeff (cdr x))))
    80     ;; P-Q
    81     (dolist (x '(((0) . -11) ((2) . 2)  ((3) . -33) ((4) . 88) ((5) . 55) ((7) . -77) ((9) . 9)))
    82       (insert-item p-q (make-instance 'term :exponents (car x) :coeff (cdr x))))
    83     ;; -P
    84     (dolist (x '( ((2) . -22)  ((4) . -44) ((5) . -55) ((8) . -88) ((9) . -99) ))
    85       (insert-item p-uminus (make-instance 'term :exponents (car x) :coeff (cdr x))))
    86     ;;(print p) (print q) (print p+q) (print p-q)
    87     (&body)))
    88 
    89 (test poly-add
    90   "Polynomial addition"
    91   (with-fixture poly-add-context () (is (r-equalp (add-to p q) p+q)))
    92   (with-fixture poly-add-context () (is (r-equalp (subtract-from p q) p-q)))
    93   (with-fixture poly-add-context () (is (r-equalp (unary-minus p) p-uminus)))
    94   )
    95 
    96 (def-fixture poly-multiply-context ()
    97   (let ((p (make-instance 'poly))
    98         (q (make-instance 'poly :order nil))
    99         (p*q (make-instance 'poly)))
    100     ;; Populate the polynomials; the lists of (exponents . coefficient) pairs
    101     ;; must be in increasing order in Q, but Q is unordered (:ORDER NIL)
    102     ;; so it will be automatically sorted.
    103     (dolist (x '( ((0) . 1)  ((1) . 2) ))
    104       (insert-item p (make-instance 'term :exponents (car x) :coeff (cdr x))))
    105     (dolist (x '( ((0) . 1)  ((1) . 3) ))
    106       (insert-item q (make-instance 'term :exponents (car x) :coeff (cdr x))))
    107     ;; P*Q
    108     (dolist (x '( ((0) . 1) ((1) . 5) ((2) . 6)))
    109       (insert-item p*q (make-instance 'term :exponents (car x) :coeff (cdr x))))
    110     (&body)))
    111 
    112 
    113 (test poly-multiply
    114   "Polynomial multiplication"
    115   (with-fixture poly-multiply-context () (is (r-equalp (r* p q) p*q)))
    116   )
    117 
    118 (test poly-standard-extension
    119   "Standard extension"
    120   (let* ((p (alist->poly '( ((0) . 1) ((1) . 2))))
    121          (q (alist->poly '( ((0) . 1) ((2) . 3))))
    122          (plist (list p q))
    123          (p-ext (alist->poly '( ((1 0 0) . 1) ((1 0 1) . 2))))
    124          (q-ext (alist->poly '( ((0 1 0) . 1) ((0 1 2) . 3))))
    125          (plist-st-ext (list p-ext q-ext)))
    126     (is (r-equalp (standard-extension plist) plist-st-ext))))
    127 
    128 (test poly-standard-extension-1
    129   "Standard extension 1"
    130   (let* ((p (alist->poly '( ((0) . 1) ((1) . 2))))
    131          (q (alist->poly '( ((0) . 1) ((2) . 3))))
    132          (plist (list p q))
    133          (p-ext (alist->poly '( ((0 0 0) . -1) ((1 0 0) . 1) ((1 0 1) . 2))))
    134          (q-ext (alist->poly '( ((0 0 0) . -1) ((0 1 0) . 1) ((0 1 2) . 3))))
    135          (plist-st-ext (list p-ext q-ext)))
    136     (is (r-equalp (standard-extension-1 plist) plist-st-ext))))
    137 
    138 (test poly-standard-sum
    139   "Standard sum"
    140   (let* ((p (alist->poly '( ((0) . 1) ((1) . 2))))
    141          (q (alist->poly '( ((0) . 1) ((2) . 3))))
    142          (plist (list p q))
    143          (std-sum (alist->poly '(((0 0 0) . -1) ((0 1 0) . 1) ((0 1 2) . 3)
    144                                  ((1 0 0) . 1) ((1 0 1) . 2)))))
    145     (is (r-equalp (standard-sum plist) std-sum))))
    146 
    147 (run! 'poly-suite)
     59(run! 'symbolic-poly-suite)
    14860(format t "All tests done!~%")
    14961
Note: See TracChangeset for help on using the changeset viewer.