From: <noreply@so...>  20021030 19:54:27

Bugs item #631216, was opened at 20021030 14:54 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: horner([...],x)/FIX Initial Comment: Horner of a list/matrix/equation returns the argument. Looking at the code shows that it is intended to map across these aggregates (or bags as they're called). The problem is that it is putting the argument in rational form *before* checking whether it is a bag. There are two possible ways to fix it. First is to modify Horner. (defmfun $horner (expr &rest vars) (if (mbagp expr) (cons (car expr) (mapcar #'(lambda (u) (apply '$horner u vars)) (cdr expr))) (let* (($ratfac nil) (varlist (cdr $ratvars)) (genvar nil) (x (apply '$rat (taychk2rat expr) vars))) (mapc #'(lambda (y z) (putprop y z 'disrep)) (cadddr (car x)) (caddar x)) (div* (hornrep (cadr x)) (hornrep (cddr x)))))) The cleaner way is to modify taychk2rat to use $rat instead of ratf. In that case, ratnumer and ratdenom also need to be modified to explicity check mbagp. The only other use of taychk2rat is in partfrac, and this change doesn't bother it. The only risk to doing this is if there is user code that depends on (e.g) ratnumer([x/y]) returning [x/y] rather than [x], which seems highly unlikely. (DEFMFUN $RATNUMER (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATNUMER (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CADR X) 1)))) (DEFMFUN $RATDENOM (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATDENOM (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CDDR X) 1)))) (DEFUN TAYCHK2RAT (X) (COND ((AND ($RATP X) (MEMQ 'TRUNC (CDAR X))) ($TAYTORAT X)) (T ($RAT X))))  You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 
From: SourceForge.net <noreply@so...>  20060701 02:58:24

Bugs item #631216, was opened at 20021030 12:54 Message generated for change (Settings changed) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: Lisp Core Group: None Status: Open Resolution: None Priority: 5 Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: horner([...],x)/FIX Initial Comment: Horner of a list/matrix/equation returns the argument. Looking at the code shows that it is intended to map across these aggregates (or bags as they're called). The problem is that it is putting the argument in rational form *before* checking whether it is a bag. There are two possible ways to fix it. First is to modify Horner. (defmfun $horner (expr &rest vars) (if (mbagp expr) (cons (car expr) (mapcar #'(lambda (u) (apply '$horner u vars)) (cdr expr))) (let* (($ratfac nil) (varlist (cdr $ratvars)) (genvar nil) (x (apply '$rat (taychk2rat expr) vars))) (mapc #'(lambda (y z) (putprop y z 'disrep)) (cadddr (car x)) (caddar x)) (div* (hornrep (cadr x)) (hornrep (cddr x)))))) The cleaner way is to modify taychk2rat to use $rat instead of ratf. In that case, ratnumer and ratdenom also need to be modified to explicity check mbagp. The only other use of taychk2rat is in partfrac, and this change doesn't bother it. The only risk to doing this is if there is user code that depends on (e.g) ratnumer([x/y]) returning [x/y] rather than [x], which seems highly unlikely. (DEFMFUN $RATNUMER (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATNUMER (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CADR X) 1)))) (DEFMFUN $RATDENOM (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATDENOM (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CDDR X) 1)))) (DEFUN TAYCHK2RAT (X) (COND ((AND ($RATP X) (MEMQ 'TRUNC (CDAR X))) ($TAYTORAT X)) (T ($RAT X))))  You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 
From: SourceForge.net <noreply@so...>  20060909 14:51:19

Bugs item #631216, was opened at 20021030 12:54 Message generated for change (Comment added) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. >Category: Lisp Core  Polynomials Group: None Status: Open Resolution: None Priority: 5 Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: horner([...],x)/FIX Initial Comment: Horner of a list/matrix/equation returns the argument. Looking at the code shows that it is intended to map across these aggregates (or bags as they're called). The problem is that it is putting the argument in rational form *before* checking whether it is a bag. There are two possible ways to fix it. First is to modify Horner. (defmfun $horner (expr &rest vars) (if (mbagp expr) (cons (car expr) (mapcar #'(lambda (u) (apply '$horner u vars)) (cdr expr))) (let* (($ratfac nil) (varlist (cdr $ratvars)) (genvar nil) (x (apply '$rat (taychk2rat expr) vars))) (mapc #'(lambda (y z) (putprop y z 'disrep)) (cadddr (car x)) (caddar x)) (div* (hornrep (cadr x)) (hornrep (cddr x)))))) The cleaner way is to modify taychk2rat to use $rat instead of ratf. In that case, ratnumer and ratdenom also need to be modified to explicity check mbagp. The only other use of taychk2rat is in partfrac, and this change doesn't bother it. The only risk to doing this is if there is user code that depends on (e.g) ratnumer([x/y]) returning [x/y] rather than [x], which seems highly unlikely. (DEFMFUN $RATNUMER (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATNUMER (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CADR X) 1)))) (DEFMFUN $RATDENOM (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATDENOM (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CDDR X) 1)))) (DEFUN TAYCHK2RAT (X) (COND ((AND ($RATP X) (MEMQ 'TRUNC (CDAR X))) ($TAYTORAT X)) (T ($RAT X))))  >Comment By: Robert Dodier (robert_dodier) Date: 20060909 08:51 Message: Logged In: YES user_id=501686 Observed in Maxima 5.9.3cvs.  You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 
From: SourceForge.net <noreply@so...>  20060909 15:11:07

Bugs item #631216, was opened at 20021030 12:54 Message generated for change (Settings changed) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core  Polynomials >Group: Includes proposed fix Status: Open Resolution: None Priority: 5 Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: horner([...],x)/FIX Initial Comment: Horner of a list/matrix/equation returns the argument. Looking at the code shows that it is intended to map across these aggregates (or bags as they're called). The problem is that it is putting the argument in rational form *before* checking whether it is a bag. There are two possible ways to fix it. First is to modify Horner. (defmfun $horner (expr &rest vars) (if (mbagp expr) (cons (car expr) (mapcar #'(lambda (u) (apply '$horner u vars)) (cdr expr))) (let* (($ratfac nil) (varlist (cdr $ratvars)) (genvar nil) (x (apply '$rat (taychk2rat expr) vars))) (mapc #'(lambda (y z) (putprop y z 'disrep)) (cadddr (car x)) (caddar x)) (div* (hornrep (cadr x)) (hornrep (cddr x)))))) The cleaner way is to modify taychk2rat to use $rat instead of ratf. In that case, ratnumer and ratdenom also need to be modified to explicity check mbagp. The only other use of taychk2rat is in partfrac, and this change doesn't bother it. The only risk to doing this is if there is user code that depends on (e.g) ratnumer([x/y]) returning [x/y] rather than [x], which seems highly unlikely. (DEFMFUN $RATNUMER (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATNUMER (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CADR X) 1)))) (DEFMFUN $RATDENOM (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATDENOM (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CDDR X) 1)))) (DEFUN TAYCHK2RAT (X) (COND ((AND ($RATP X) (MEMQ 'TRUNC (CDAR X))) ($TAYTORAT X)) (T ($RAT X))))  Comment By: Robert Dodier (robert_dodier) Date: 20060909 08:51 Message: Logged In: YES user_id=501686 Observed in Maxima 5.9.3cvs.  You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 
From: SourceForge.net <noreply@so...>  20090701 20:26:45

Bugs item #631216, was opened at 20021030 20:54 Message generated for change (Comment added) made by crategus You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core  Polynomials Group: Includes proposed fix >Status: Closed >Resolution: Fixed Priority: 5 Private: No Submitted By: Stavros Macrakis (macrakis) Assigned to: Nobody/Anonymous (nobody) Summary: horner([...],x)/FIX Initial Comment: Horner of a list/matrix/equation returns the argument. Looking at the code shows that it is intended to map across these aggregates (or bags as they're called). The problem is that it is putting the argument in rational form *before* checking whether it is a bag. There are two possible ways to fix it. First is to modify Horner. (defmfun $horner (expr &rest vars) (if (mbagp expr) (cons (car expr) (mapcar #'(lambda (u) (apply '$horner u vars)) (cdr expr))) (let* (($ratfac nil) (varlist (cdr $ratvars)) (genvar nil) (x (apply '$rat (taychk2rat expr) vars))) (mapc #'(lambda (y z) (putprop y z 'disrep)) (cadddr (car x)) (caddar x)) (div* (hornrep (cadr x)) (hornrep (cddr x)))))) The cleaner way is to modify taychk2rat to use $rat instead of ratf. In that case, ratnumer and ratdenom also need to be modified to explicity check mbagp. The only other use of taychk2rat is in partfrac, and this change doesn't bother it. The only risk to doing this is if there is user code that depends on (e.g) ratnumer([x/y]) returning [x/y] rather than [x], which seems highly unlikely. (DEFMFUN $RATNUMER (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATNUMER (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CADR X) 1)))) (DEFMFUN $RATDENOM (X) (IF (MBAGP X) (CONS (CAR X) (MAPCAR '$RATDENOM (CDR X))) (SETQ X (TAYCHK2RAT X)) (CONS (CAR X) (CONS (CDDR X) 1)))) (DEFUN TAYCHK2RAT (X) (COND ((AND ($RATP X) (MEMQ 'TRUNC (CDAR X))) ($TAYTORAT X)) (T ($RAT X))))  >Comment By: Dieter Kaiser (crategus) Date: 20090701 22:26 Message: The suggested tix to the functions $ratnumer, $ratdenom, and taychk2rat have been applied with revision 1.24 of rat3e.lisp. Closing this bug report as fixed. Dieter Kaiser  Comment By: Robert Dodier (robert_dodier) Date: 20060909 16:51 Message: Logged In: YES user_id=501686 Observed in Maxima 5.9.3cvs.  You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=631216&group_id=4933 