Changeset 18 in CGBLisp
- Timestamp:
- Jan 27, 2009, 1:19:13 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/parse.lisp
r17 r18 247 247 ((symbolp expr) 248 248 (nth (position expr vars) basis)) 249 ((eql (car expr ) 'expt) 250 ($poly-expt (poly-eval-1 (cadr expr) vars order ring) 251 (caddr expr) 252 n order ring)) 253 (t 254 (let ((r (mapcar 255 #'(lambda (e) (poly-eval-1 e vars order ring)) 256 (cdr expr)))) 257 (ecase (car expr) 258 (+ (reduce #'(lambda (p q) ($poly+ p q n order ring)) r)) 259 (- 260 (if (endp (cdr r)) 261 ($minus-poly (car r) n ring) 262 ($poly- (car r) 263 (reduce #'(lambda (p q) ($poly+ p q n order ring)) (cdr r)) 264 n 265 order ring))) 266 (* 267 (reduce #'(lambda (p q) ($poly* p q n order ring)) r)) 268 (/ 269 ($poly/ (car r) (cadr r) ring))))))) 249 ((consp expr) 250 (case (car expr) 251 (expt 252 (if (= (length expr) 3) 253 ($poly-expt (poly-eval-1 (cadr expr) vars order ring) 254 (caddr expr) 255 n order ring) 256 (error "Too many arguments to EXPT"))) 257 (/ 258 (if (and (= (length expr) 3) 259 (numberp (caddr expr))) 260 ($poly/ (cadr expr) (caddr expr) ring) 261 (error "The second argument to / must be a number"))) 262 (otherwise 263 (let ((r (mapcar 264 #'(lambda (e) (poly-eval-1 e vars order ring)) 265 (cdr expr)))) 266 (ecase (car expr) 267 (+ (reduce #'(lambda (p q) ($poly+ p q n order ring)) r)) 268 (- 269 (if (endp (cdr r)) 270 ($minus-poly (car r) n ring) 271 ($poly- (car r) 272 (reduce #'(lambda (p q) ($poly+ p q n order ring)) (cdr r)) 273 n 274 order ring))) 275 (* 276 (reduce #'(lambda (p q) ($poly* p q n order ring)) r)) 277 ))))))) 270 278 271 279
Note:
See TracChangeset
for help on using the changeset viewer.