123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778(**************************************************************************)(* This file is part of the Codex semantics library. *)(* *)(* Copyright (C) 2013-2025 *)(* CEA (Commissariat à l'énergie atomique et aux énergies *)(* alternatives) *)(* *)(* you can redistribute it and/or modify it under the terms of the GNU *)(* Lesser General Public License as published by the Free Software *)(* Foundation, version 2.1. *)(* *)(* It is distributed in the hope that it will be useful, *)(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)(* GNU Lesser General Public License for more details. *)(* *)(* See the GNU Lesser General Public License version 2.1 *)(* for more details (enclosed in the file LICENSE). *)(* *)(**************************************************************************)moduletypeUnit=sigtypet=privateintvalcompare:t->t->intvalof_int:int->tvalto_int:t->intval(+):t->t->tval(-):t->t->tval(<=):t->t->boolval(<):t->t->boolval(>=):t->t->boolval(>):t->t->boolvalzero:tvalone:tendmoduleCommon=structtypet=intletcompare(a:int)(b:int)=compareabletof_intx=xletto_intx=xlet(+)=(+)let(-)=(-)let(<)=(<)let(<=)=(<=)let(>)=(>)let(>=)=(>=)letdoublex=2*xletzero=0letone=1endmodulerecIn_bits:sigincludeUnitvalin_bytes:t->In_bytes.tvaldouble:t->tvalzero:tvals32:tend=structincludeCommonletin_bytesx=assert(xland7=0);assert(x>=0);xlsr3lets32=32endandIn_bytes:sigincludeUnitvalin_bits:t->In_bits.tvaltimes:int->t->tend=structincludeCommonletin_bitsx=assert(x<=Int.max_intlsr3);xlsl3lettimesab=a*bend