Changeset 6650324 in OpenModelica


Ignore:
Timestamp:
2014-12-17T22:35:19+01:00 (9 years ago)
Author:
Vitalij Ruge <vitalij.ruge@…>
Branches:
Added-citation-metadata, maintenance/v1.14, maintenance/v1.15, maintenance/v1.16, maintenance/v1.17, maintenance/v1.18, maintenance/v1.19, maintenance/v1.20, maintenance/v1.21, maintenance/v1.22, maintenance/v1.23, master, omlib-staging
Children:
0312dda
Parents:
2c02aad5
Message:

ExpressionSolve: added case for quadratic equation

  • a*xn - b*xm

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@23839 f25d12d1-65f4-0310-ae8a-bbce733d8d8e

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Compiler/BackEnd/ExpressionSolve.mo

    r2c02aad5 r6650324  
    14281428  then(lhs, rhs, true, eqnForNewVars_, newVarsCrefs_, idepth + 1);
    14291429
     1430  // a*x^n - b*x^m = c
     1431  case(DAE.BINARY(ee1, DAE.SUB(), ee2),_)
     1432  equation
     1433    (z1, z2) = List.split1OnTrue(Expression.factors(ee1), expHasCref, inExp3);
     1434    (z3, z4) = List.split1OnTrue(Expression.factors(ee2), expHasCref, inExp3);
     1435
     1436    x1 = makeProductLstSort(z1);
     1437    a1 = makeProductLstSort(z2);
     1438
     1439    x2 = makeProductLstSort(z3);
     1440    a2 = Expression.negate(makeProductLstSort(z4));
     1441/*
     1442    print("\nx1 = ");print(ExpressionDump.printExpStr(x1));
     1443    print("\nx2 = ");print(ExpressionDump.printExpStr(x2));
     1444    print("\na1 = ");print(ExpressionDump.printExpStr(a1));
     1445    print("\na2 = ");print(ExpressionDump.printExpStr(a2));
     1446*/
     1447    a = simplifyBinaryMulCoeff(x1);
     1448    c = simplifyBinaryMulCoeff(x2);
     1449    (e2 ,e3) = a;
     1450    (e5, e6) = c;
     1451    (lhs, rhs, eqnForNewVars_, newVarsCrefs_) = solveQE(a1,e2,e3,a2,e5,e6,inExp2,inExp3,ieqnForNewVars,inewVarsCrefs,uniqueEqIndex,idepth);
     1452  then(lhs, rhs, true, eqnForNewVars_, newVarsCrefs_, idepth + 1);
     1453
    14301454
    14311455  else (inExp1, inExp2, false, ieqnForNewVars, inewVarsCrefs, idepth);
Note: See TracChangeset for help on using the changeset viewer.