From: SourceForge.net <no...@so...> - 2008-06-22 05:51:48
|
Bugs item #872433, was opened at 2004-01-07 15:00 Message generated for change (Comment added) made by guno You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=872433&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: Share Libraries Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Barton Willis (willisbl) Assigned to: Nobody/Anonymous (nobody) Summary: rncombine broken Initial Comment: The function rncombine is broken. (C1) load("rncomb")$ Lines d2 and d3 are okay, but d4 is bogus (C2) rncombine(x+y/x); (D2) y/x+x (C3) rncombine(x+y/x); (D3) y/x+x (C4) rncombine(y+x/y); (D4) y+x (C5) build_info(); Maxima version: 5.9.0 Maxima build date: 19:10 2/9/2003 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL-2-5.0 Notes: 1. The function rncombine is supposed to work like combine, except that it combines terms that have denominators that differ by a numerical factor. 2. When rncombine is fixed, either the function should autoload, or the user documentation should explain that one must first load rncomb.mac. Barton ---------------------------------------------------------------------- Comment By: guno (guno) Date: 2008-06-20 17:14 Message: Logged In: YES user_id=1709853 Originator: NO hi maxima/share/simplification/rncomb.mac contains the function rncombine1 from lineno 35 to lineno 50 this function contains the bug the factor multiplied in line 44 to flist is cancelled out again in line 48 if the "if" branch is taken but it is not cacelled out if the if branch is not taken. this is the bug. one can repair this by deleting line 44 and by changing line 48 to then flist:denomthru(cons(flist*flist_denom,lsplitdum*flist_denom))/flist_denom, now the function will work correct. can anybody do this? 35 rncombine1(list):=block( 36 [flist,splitdum,lsplitdum,flist_denom], 37 if list=[] then return(0), 38 flist:first(list), 39 if length(list)=1 40 then return(if inpart(num(flist),0)="+" 41 then rncombine1(args(num(flist)))/denom(flist) 42 else flist), 43 flist_denom:(flist_denom:denom(flist))/numfactor(flist_denom), 44 flist:flist*flist_denom, 45 splitdum:predpartition(rest(list), 46 lambda([dum],numberp(denom(dum)/flist_denom))), 47 if (lsplitdum:last(splitdum))#[] 48 then flist:denomthru(cons(flist,lsplitdum*flist_denom))/flist_denom, 49 flist+rncombine1(first(splitdum)))$ 50 guenter ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=872433&group_id=4933 |