Esempio n. 1
0
  public static DBM mat2matParam(DBM m, DBM paramCoef, Variable paramK) {

    Matrix mat = m.mat();

    Matrix paramCoefMat = (paramCoef == null) ? null : paramCoef.mat();

    if (paramCoefMat != null)
      if (mat.size() != paramCoefMat.size())
        throw new RuntimeException("Operation on matrices of incompatible sizes");

    int size = mat.size();

    FieldStaticInf fs = DeltaClosure.deltaFS();

    Matrix retMat = DBM.newMatrix(size, fs);
    retMat.init();

    for (int i = 0; i < size; ++i) {

      for (int j = 0; j < size; ++j) {

        Field f1 = mat.get(i, j);

        if (!f1.isFinite()) continue;

        int i_f1 = f1.toInt();
        int i_f2 = 0;
        {
          if (paramCoefMat != null) {
            Field f2 = paramCoefMat.get(i, j);
            i_f2 = f2.toInt();
          }
        }

        Field f = DeltaClosure.deltaBound(i_f1, i_f2);
        retMat.set(i, j, f);
      }
    }

    return new DBM(DBM.Encoding.DBC, retMat, fs);
  }