(in-package :polynomial) (proclaim '(special p0 q0 p q p+q-good p+q-risky)) (setf p0 (alist->poly (nreverse '(((2 0 0) . 2) ((1 1 0) . 1) ((1 0 0) . 1) ((0 1 0) . -1) ((0 0 0) . 2))))) (setf q0 (alist->poly (nreverse '(((2 0 0) . 2) ((0 1 0) . -1) ((0 0 0) . 2))))) (setf p (poly-termlist p0)) (setf q (poly-termlist q0)) (setf p+q-good (mapcar #'->list (slow-add p q #'lex> #'add-to))) (setf p+q-risky (mapcar #'->list (fast-and-risky-add p q #'lex> #'add-to))) ;;(assert (equal p+q-good p+q-risky) nil "Two methods gave different results.")