Skip to content

Commit 8e79a61

Browse files
author
BaierD
committed
Replace generic implementation of fromIeeeBitvectorImpl() with CVC4 native implementation
1 parent d344e3a commit 8e79a61

File tree

1 file changed

+5
-14
lines changed

1 file changed

+5
-14
lines changed

src/org/sosy_lab/java_smt/solvers/cvc4/CVC4FloatingPointFormulaManager.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import edu.stanford.CVC4.FloatingPointConvertSort;
1818
import edu.stanford.CVC4.FloatingPointSize;
1919
import edu.stanford.CVC4.FloatingPointToFPFloatingPoint;
20+
import edu.stanford.CVC4.FloatingPointToFPIEEEBitVector;
2021
import edu.stanford.CVC4.FloatingPointToFPSignedBitVector;
2122
import edu.stanford.CVC4.FloatingPointToFPUnsignedBitVector;
2223
import edu.stanford.CVC4.FloatingPointToSBV;
@@ -358,20 +359,10 @@ protected Expr isNegative(Expr pParam) {
358359

359360
@Override
360361
protected Expr fromIeeeBitvectorImpl(Expr bitvector, FloatingPointType pTargetType) {
361-
int mantissaSize = pTargetType.getMantissaSize();
362-
int exponentSize = pTargetType.getExponentSize();
363-
int size = pTargetType.getTotalSize();
364-
assert size == mantissaSize + exponentSize + 1;
365-
366-
Expr signExtract = exprManager.mkConst(new BitVectorExtract(size - 1, size - 1));
367-
Expr exponentExtract = exprManager.mkConst(new BitVectorExtract(size - 2, mantissaSize));
368-
Expr mantissaExtract = exprManager.mkConst(new BitVectorExtract(mantissaSize - 1, 0));
369-
370-
Expr sign = exprManager.mkExpr(Kind.BITVECTOR_EXTRACT, signExtract, bitvector);
371-
Expr exponent = exprManager.mkExpr(Kind.BITVECTOR_EXTRACT, exponentExtract, bitvector);
372-
Expr mantissa = exprManager.mkExpr(Kind.BITVECTOR_EXTRACT, mantissaExtract, bitvector);
373-
374-
return exprManager.mkExpr(Kind.FLOATINGPOINT_FP, sign, exponent, mantissa);
362+
// This is just named weird, but the CVC4 doc say this is IEEE BV -> FP
363+
FloatingPointConvertSort fpConvertSort = new FloatingPointConvertSort(getFPSize(pTargetType));
364+
Expr op = exprManager.mkConst(new FloatingPointToFPIEEEBitVector(fpConvertSort));
365+
return exprManager.mkExpr(op, bitvector);
375366
}
376367

377368
@Override

0 commit comments

Comments
 (0)