- Timestamp:
- 2015-06-20T01:38:31-07:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/f4grobner/polynomial.lisp
r2608 r2609 113 113 (setf p (cdr p))))) 114 114 115 (defmethod add-to ((self poly) (other poly)) 116 "Adds to polynomial SELF another polynomial OTHER. 115 (defmacro def-additive-operation-method (method-name) 116 `(defmethod ,method-name ((self poly) (other poly)) 117 "Adds to polynomial SELF another polynomial OTHER. 117 118 This operation destructively modifies both polynomials. 118 119 The result is stored in SELF. This implementation does 119 120 no consing, entirely reusing the sells of SELF and OTHER." 120 (with-slots ((termlist1 termlist) (order1 order)) 121 self 122 (with-slots ((termlist2 termlist) (order2 order)) 123 other 124 ;; Ensure orders are compatible 125 (unless (eq order1 order2) 126 (setf termlist2 (sort termlist2 order1) 127 order2 order1)) 128 ;; Create dummy head 129 (push nil termlist1) 130 (push nil termlist2) 131 (fast-addition termlist1 termlist2 order1 #'add-to) 132 ;; Remove dummy head 133 (pop termlist1))) 134 self) 121 (with-slots ((termlist1 termlist) (order1 order)) 122 self 123 (with-slots ((termlist2 termlist) (order2 order)) 124 other 125 ;; Ensure orders are compatible 126 (unless (eq order1 order2) 127 (setf termlist2 (sort termlist2 order1) 128 order2 order1)) 129 ;; Create dummy head 130 (push nil termlist1) 131 (push nil termlist2) 132 (fast-addition termlist1 termlist2 order1 #',method-name) 133 ;; Remove dummy head 134 (pop termlist1))) 135 self)) 136 137 (def-additive-operation-method 'add-to) 138 (def-additive-operation-method 'subtract-from) 135 139 136 140 (defmethod unary-uminus ((self poly)))
Note:
See TracChangeset
for help on using the changeset viewer.