Skip to content

Commit a0d8ec8

Browse files
agilotvkuncak
authored andcommitted
Serialization for fp arithmetic
1 parent 539e794 commit a0d8ec8

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

src/main/scala/inox/utils/Serialization.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ class InoxSerializer(val trees: ast.Trees, serializeProducts: Boolean = false) e
476476
* The `Serializer[_]` identifiers in this mapping range from 10 to 105
477477
* (ignoring special identifiers that are smaller than 10).
478478
*
479-
* NEXT ID: 106
479+
* NEXT ID: 109
480480
*/
481481
protected def classSerializers: Map[Class[?], Serializer[?]] = Map(
482482
// Inox Expressions
@@ -550,6 +550,10 @@ class InoxSerializer(val trees: ast.Trees, serializeProducts: Boolean = false) e
550550
classSerializer[MapUpdated] (74),
551551
classSerializer[BVUnsignedToSigned](104),
552552
classSerializer[BVSignedToUnsigned](105),
553+
// FPLiteral id=107
554+
// Floating Point literals are treated specially to avoid having to serialize BitSets
555+
mappingSerializer[FPLiteral](107)(fp => (fp.exponent, fp.significand, fp.value))(p => FPLiteral(p._1, p._2, p._3)),
556+
classSerializer[FPEquals] (108),
553557

554558
// Inox Types
555559
classSerializer[Untyped.type] (75),
@@ -571,6 +575,7 @@ class InoxSerializer(val trees: ast.Trees, serializeProducts: Boolean = false) e
571575
classSerializer[RefinementType](100),
572576
classSerializer[PiType] (101),
573577
classSerializer[SigmaType] (102),
578+
classSerializer[FPType] (106),
574579

575580
// Identifier
576581
mappingSerializer[Identifier](90)

src/test/scala/inox/solvers/SemanticsSuite.scala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -406,15 +406,11 @@ class SemanticsSuite extends AnyFunSuite {
406406
check(s, Float32Literal(i), Float32Literal(i))
407407
}
408408

409-
check(s, Float32Literal(0), Float32Literal(0))
410-
check(s, Float32Literal(-0), Float32Literal(-0))
411409

412410
for (i <- doubleValues) {
413411
check(s, Float64Literal(i), Float64Literal(i))
414412
}
415413

416-
check(s, Float64Literal(0), Float64Literal(0))
417-
check(s, Float64Literal(-0), Float64Literal(-0))
418414
}
419415

420416
test("Floating Point Arithmetic", filterSolvers(_, princess = true)) { ctx =>

0 commit comments

Comments
 (0)