Changeset 13472


Ignore:
Timestamp:
2012-10-18T16:10:04+02:00 (12 years ago)
Author:
jfrenkel
Message:
  • Derive.deriveExp add cases for MUL_SCALAR_PRODUCT " {a,b,c} * {c,d,e} => a*c+b*d+c*e", MUL_MATRIX_PRODUCT "M1 * M2, matrix dot product"
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/BackEnd/Derive.mo

    r13380 r13472  
    692692        DAE.BINARY(DAE.BINARY(e1,DAE.MUL_ARRAY_SCALAR(tp),e2_1),DAE.ADD_ARR(tp),
    693693          DAE.BINARY(e1_1,DAE.MUL_ARRAY_SCALAR(tp),e2));
     694
     695    case (DAE.BINARY(exp1 = e1,operator = DAE.MUL_SCALAR_PRODUCT(ty = tp),exp2 = e2),_) /* f\'g + fg\' */
     696      equation
     697        e1_1 = differentiateExpTime(e1, inVariables);
     698        e2_1 = differentiateExpTime(e2, inVariables);
     699      then
     700        DAE.BINARY(DAE.BINARY(e1,DAE.MUL_SCALAR_PRODUCT(tp),e2_1),DAE.ADD_ARR(tp),
     701          DAE.BINARY(e1_1,DAE.MUL_SCALAR_PRODUCT(tp),e2));
     702   
     703    case (DAE.BINARY(exp1 = e1,operator = DAE.MUL_MATRIX_PRODUCT(ty = tp),exp2 = e2),_) /* f\'g + fg\' */
     704      equation
     705        e1_1 = differentiateExpTime(e1, inVariables);
     706        e2_1 = differentiateExpTime(e2, inVariables);
     707      then
     708        DAE.BINARY(DAE.BINARY(e1,DAE.MUL_MATRIX_PRODUCT(tp),e2_1),DAE.ADD_ARR(tp),
     709          DAE.BINARY(e1_1,DAE.MUL_MATRIX_PRODUCT(tp),e2));   
    694710   
    695711    case (DAE.BINARY(exp1 = e1,operator = DAE.ADD_ARRAY_SCALAR(ty = tp),exp2 = e2),_)
     
    747763        DAE.REDUCTION(reductionInfo,e1_1,iters);
    748764
    749     /* We need to expect failures for example for shared array-equations
     765    /* We need to expect failures for example for shared array-equations 
    750766    case (e,_)
    751767      equation
    752         str = ExpressionDump.printExpStr(e);
    753768        print("- Derive.differentiateExpTime on ");
    754         print(str);
    755         print(" failed\n");
    756       then
    757         fail();
    758     */
     769        ExpressionDump.dumpExp(e);
     770        print("\n failed\n");
     771      then
     772        fail(); */
    759773  end matchcontinue;
    760774end differentiateExpTime;
Note: See TracChangeset for help on using the changeset viewer.