[BACK]Return to strobj.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/strobj.c between version 1.73 and 1.74

version 1.73, 2005/10/14 07:39:38 version 1.74, 2005/10/14 07:49:21
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.72 2005/10/14 06:00:03 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/strobj.c,v 1.73 2005/10/14 07:39:38 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 2225  FNODE fnode_normalize_add(FNODE f1,FNODE f2)
Line 2225  FNODE fnode_normalize_add(FNODE f1,FNODE f2)
                 } else {                  } else {
                         addnum(0,c1,c2,&c);                          addnum(0,c1,c2,&c);
                         if ( c ) {                          if ( c ) {
                                 NEXTNODE(r0,r); BDY(r) = fnode_normalize_mul_coef(c,b1);                                  NEXTNODE(r0,r);
                                   BDY(r) = UNIQ(c) ? b1 : fnode_normalize_mul_coef(c,b1);
                         }                          }
                         n1 = NEXT(n1); n2 = NEXT(n2);                          n1 = NEXT(n1); n2 = NEXT(n2);
                 }                  }
Line 2401  FNODE fnode_normalize_mul_coef(Num c,FNODE f)
Line 2402  FNODE fnode_normalize_mul_coef(Num c,FNODE f)
   
         if ( !c )          if ( !c )
                 return mkfnode(I_FORMULA,0);                  return mkfnode(I_FORMULA,0);
           else if ( UNIQ(c) )
                   return f;
         else if ( fnode_is_number(f) ) {          else if ( fnode_is_number(f) ) {
                 mulnum(0,c,eval(f),&c1); return mkfnode(1,I_FORMULA,c1);                  mulnum(0,c,eval(f),&c1); return mkfnode(1,I_FORMULA,c1);
         } else if ( f->id == I_NARYOP && OPNAME(f) == '*' ) {          } else if ( f->id == I_NARYOP && OPNAME(f) == '*' ) {
                 cc = (FNODE)BDY((NODE)FA1(f));                  cc = (FNODE)BDY((NODE)FA1(f));
                 if ( fnode_is_number(cc) ) {                  if ( fnode_is_number(cc) ) {
                         mulnum(0,c,eval(cc),&c2); cc = mkfnode(1,I_FORMULA,c2);                          mulnum(0,c,eval(cc),&c2);
                         MKNODE(n,cc,NEXT((NODE)FA1(f)));                          if ( UNIQ(c2) )
                                   n = NEXT((NODE)FA1(f));
                           else {
                                   cc = mkfnode(1,I_FORMULA,c2);
                                   MKNODE(n,cc,NEXT((NODE)FA1(f)));
                           }
                 } else {                  } else {
                         cc = mkfnode(1,I_FORMULA,c);                          cc = mkfnode(1,I_FORMULA,c);
                         MKNODE(n,cc,(NODE)FA1(f));                          MKNODE(n,cc,(NODE)FA1(f));
                 }                  }
                 return mkfnode(2,I_NARYOP,FA0(f),n);                  if ( NEXT(n) )
                           return mkfnode(2,I_NARYOP,FA0(f),n);
                   else
                           return (FNODE)BDY(n);
         } else if ( f->id == I_NARYOP && OPNAME(f) == '+' ) {          } else if ( f->id == I_NARYOP && OPNAME(f) == '+' ) {
                 for ( r0 = 0, n = (NODE)FA1(f); n; n = NEXT(n) ) {                  for ( r0 = 0, n = (NODE)FA1(f); n; n = NEXT(n) ) {
                         NEXTNODE(r0,r);                          NEXTNODE(r0,r);

Legend:
Removed from v.1.73  
changed lines
  Added in v.1.74

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>