|
17 | 17 | import edu.stanford.CVC4.FloatingPointConvertSort; |
18 | 18 | import edu.stanford.CVC4.FloatingPointSize; |
19 | 19 | import edu.stanford.CVC4.FloatingPointToFPFloatingPoint; |
| 20 | +import edu.stanford.CVC4.FloatingPointToFPIEEEBitVector; |
20 | 21 | import edu.stanford.CVC4.FloatingPointToFPSignedBitVector; |
21 | 22 | import edu.stanford.CVC4.FloatingPointToFPUnsignedBitVector; |
22 | 23 | import edu.stanford.CVC4.FloatingPointToSBV; |
@@ -358,20 +359,10 @@ protected Expr isNegative(Expr pParam) { |
358 | 359 |
|
359 | 360 | @Override |
360 | 361 | 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); |
375 | 366 | } |
376 | 367 |
|
377 | 368 | @Override |
|
0 commit comments