Changeset 1a6b1533 in OpenModelica


Ignore:
Timestamp:
2012-11-16T09:31:33+01:00 (11 years ago)
Author:
Jens Frenkel <jens.frenkel@…>
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:
8a04612
Parents:
2b4587a3
Message:
  • use ab = f(..) -> a = sign(pre(a))*(f(...)(1/b)) only for even integer numbers of b

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Compiler/BackEnd/ExpressionSolve.mo

    r0fda3e2 r1a6b1533  
    314314      list<DAE.Exp> factors;
    315315      list<DAE.Statement> asserts;
     316      Real r;
     317      Integer i;
    316318   
    317319     // cr = (e1(0)-e2(0))/(der(e1-e2,cr))
     
    380382        ((e,(_,false,SOME(a)))) = Expression.traverseExpTopDown(e, traversingVarOnlyinPow, (cr,false,NONE()));
    381383        DAE.BINARY(operator=DAE.POW(ty=tp1),exp2 = a) = a;
     384        // check if a is even number integer
     385        r = Expression.expReal(a);
     386        i = realInt(r);
     387        true = realEq(intReal(i),r);
     388        true = intEq(intMod(i,2),0);
    382389        tp = Expression.typeof(e);
    383390        (z,_) = Expression.makeZeroExpression(Expression.arrayDimension(tp));
Note: See TracChangeset for help on using the changeset viewer.