Browse Source

param.Dag: handle special functions (+/-inf, NaN) in fromBigRational and asBigRational

git-svn-id: https://www.prismmodelchecker.org/svn/prism/prism/trunk@11650 bbc10eb1-c90d-0410-af57-cb519fbb1720
master
Joachim Klein 9 years ago
parent
commit
777af75ee8
  1. 10
      prism/src/param/DagFunction.java
  2. 12
      prism/src/param/DagFunctionFactory.java

10
prism/src/param/DagFunction.java

@ -134,7 +134,17 @@ public class DagFunction extends Function {
@Override
public BigRational asBigRational() {
switch (type) {
case NORMAL:
return dagFactory.asBigRational(this);
case NAN:
return BigRational.NAN;
case INF:
return BigRational.INF;
case MINF:
return BigRational.MINF;
}
throw new RuntimeException("Illegal type");
}
@Override

12
prism/src/param/DagFunctionFactory.java

@ -221,6 +221,18 @@ class DagFunctionFactory extends FunctionFactory {
@Override
Function fromBigRational(BigRational bigRat) {
if (bigRat.isSpecial()) {
if (bigRat.isNaN()) {
return getNaN();
} else if (bigRat.isInf()) {
return getInf();
} else if (bigRat.isMInf()) {
return getMInf();
} else {
throw new RuntimeException("Unknown special value");
}
}
// normal:
bigRat = bigRat.cancel();
DagOperator num = new Number(bigRat.getNum());
num = makeUnique(num);

Loading…
Cancel
Save