Commit 0dd92f60 authored by Raphaël Rieu-Helft's avatar Raphaël Rieu-Helft

Merge branch 'fxp_sqrt2' into 'master'

GMP square root

See merge request !106
parents 8ecd13e9 bac70072
......@@ -16,6 +16,10 @@ module ref.Ref
syntax val (:=) "%1 = %2" prec 14 13 14
end
module mach.int.Bounded_int
syntax val of_int "%1" prec 0
end
module mach.int.Int32
syntax type int32 "int32_t"
......@@ -66,7 +70,7 @@ module mach.int.UInt32GMP
prelude
"
#define LOW_MASK 0x00000000FFFFFFFFULL
#define LOW_MASK 0x00000000FFFFFFFFUL
struct __add32_with_carry_result
{ uint32_t __field_0;
......@@ -205,8 +209,8 @@ struct __lsld32_result lsld32(uint32_t x, uint32_t cnt);
"(uint32_t)((((uint64_t)%1) | (((uint64_t)%2) << 32))/(uint64_t)(%3))"
prec 2
syntax val lsl "%1 << %2" prec 5 5 4
syntax val lsr "%1 >> %2" prec 5 5 4
syntax val lsl "%1 << %2" prec 5 5 2
syntax val lsr "%1 >> %2" prec 5 5 2
syntax val is_msb_set "%1 & 0x80000000U" prec 8 8
......@@ -219,7 +223,7 @@ end
module mach.int.Int64
syntax type int64 "int64_t"
syntax literal int64 "%dLL"
syntax literal int64 "%dL"
syntax val (+) "%1 + %2" prec 4 4 3
syntax val (-) "%1 - %2" prec 4 4 3
......@@ -246,7 +250,7 @@ end
module mach.int.UInt64
syntax literal uint64 "0x%16xULL"
syntax literal uint64 "0x%16xUL"
syntax val (+) "%1 + %2" prec 4 4 3
syntax val (-) "%1 - %2" prec 4 4 3
......@@ -501,9 +505,9 @@ static struct __lsld64_result lsld64(uint64_t x, uint64_t cnt)
return result;
}
"
syntax literal uint64 "0x%16xULL"
syntax literal uint64 "0x%16xUL"
syntax val uint64_max "0xffffffffffffffffULL" prec 0
syntax val uint64_max "0xffffffffffffffffUL" prec 0
syntax val (+) "%1 + %2" prec 4 4 3
syntax val (-) "%1 - %2" prec 4 4 3
......@@ -534,17 +538,22 @@ static struct __lsld64_result lsld64(uint64_t x, uint64_t cnt)
syntax val sub_mod "%1 - %2" prec 4 4 3
syntax val mul_mod "%1 * %2" prec 3 3 2
syntax val lsl "%1 << %2" prec 5 5 4
syntax val lsr "%1 >> %2" prec 5 5 4
syntax val lsl "%1 << %2" prec 5 5 2
syntax val lsr "%1 >> %2" prec 5 5 2
syntax val lsl_mod "%1 << %2" prec 5 5 2
syntax val lsr_mod "%1 >> %2" prec 5 5 2
syntax val is_msb_set "%1 & 0x8000000000000000ULL" prec 8 7
syntax val is_msb_set "%1 & 0x8000000000000000UL" prec 8 7
syntax val count_leading_zeros "__builtin_clzll(%1)" prec 1 15
syntax val to_int32 "(int32_t)%1" prec 2 2
syntax val of_int32 "(uint64_t)%1" prec 2 2
syntax val to_int64 "(int64_t)%1" prec 2 2
syntax val of_int64 "(uint64_t)%1" prec 2 2
syntax val of_int "%1" prec 0
end
module mach.array.Array32
......@@ -593,3 +602,15 @@ module mach.c.C
syntax val print_uint32 "printf(\"%#010x\",%1)" prec 1 15
end
module mach.fxp.Fxp
syntax val fxp_add "%1 + %2" prec 4 4 3
syntax val fxp_sub "%1 - %2" prec 4 4 3
syntax val fxp_mul "%1 * %2" prec 3 3 2
syntax val fxp_lsl "%1 << %2" prec 5 5 2
syntax val fxp_lsr "%1 >> %2" prec 5 5 2
syntax val fxp_asr "(uint64_t)((int64_t)%1 >> %2)" prec 2 1 2
syntax val fxp_asr' "(uint64_t)((int64_t)%1 >> %2)" prec 2 1 2
end
\ No newline at end of file
......@@ -23,6 +23,7 @@ transformation "eliminate_let"
transformation "simplify_formula"
transformation "simplify_unknown_lsymbols"
transformation "simplify_trivial_quantification"
transformation "simplify_computations"
transformation "introduce_premises"
transformation "instantiate_predicate"
transformation "abstract_unknown_lsymbols"
......@@ -43,7 +44,7 @@ theory int.Int
syntax function (+) "(%1 + %2)"
syntax function (-) "(%1 - %2)"
syntax function ( * ) "(%1 * %2)"
syntax function (*) "(%1 * %2)"
syntax function (-_) "(-%1)"
syntax predicate (<=) "dummy"
......@@ -56,6 +57,7 @@ theory int.Int
meta "gappa arith" predicate (<), "not ", ">=", "<="
meta "gappa arith" predicate (>), "not ", "<=", ">="
meta "inline:no" function (-)
meta "inline:no" predicate (<=)
meta "inline:no" predicate (>=)
meta "inline:no" predicate (>)
......@@ -87,7 +89,7 @@ theory real.Real
syntax function (+) "(%1 + %2)"
syntax function (-) "(%1 - %2)"
syntax function ( * ) "(%1 * %2)"
syntax function (*) "(%1 * %2)"
syntax function (/) "(%1 / %2)"
syntax function (-_) "(-%1)"
syntax function inv "(1.0 / %1)"
......@@ -102,6 +104,7 @@ theory real.Real
meta "gappa arith" predicate (<), "not ", ">=", "<="
meta "gappa arith" predicate (>), "not ", "<=", ">="
meta "inline:no" function (-)
meta "inline:no" predicate (<=)
meta "inline:no" predicate (>=)
meta "inline:no" predicate (>)
......@@ -215,3 +218,9 @@ theory floating_point.DoubleMultiRounding
meta "instantiate:auto" prop Bounded_value
end
theory mach.fxp.Fxp
syntax function trunc_at "fixed<%2,dn>(%1)"
end
......@@ -29,35 +29,35 @@ why3:
dir:
mkdir -p build
MLWFILES= $(addsuffix .mlw, toom logical div mul sub add compare util)
MLWFILES= $(addsuffix .mlw, sqrtrem sqrt toom logical div mul sub add compare util)
cfiles: why3 dir
$(WHY3) extract -D c -L . --recursive --modular --interface -o build/ \
$(WHY3) extract -D wmpn.drv -D c -L . --recursive --modular --interface -o build/ \
wmpn.mlw
#$(MLWFILES)
extract: why3 dir cfiles
CFILES = build/uint64gmp.c build/toom.c build/div.c build/logical.c build/mul.c build/sub.c build/add.c build/compare.c build/util.c build/int32.c
CFILES = build/uint64gmp.c build/fxp.c build/sqrt.c build/sqrt1.c build/toom.c build/div.c build/logical.c build/mul.c build/sub.c build/add.c build/compare.c build/util.c build/int32.c
tests: extract check-gmp
gcc $(CFLAGS) tests.c $(CFILES) -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o build/tests
gcc $(CFLAGS) -DCOMPARE_MINI tests.c $(CFILES) -I$(GMP_DIR) -Irandom -Imini-gmp -o build/minitests
gcc $(CFLAGS) tests.c $(CFILES) -Iinclude -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o build/tests
gcc $(CFLAGS) -DCOMPARE_MINI tests.c $(CFILES) -Iinclude -I$(GMP_DIR) -Irandom -Imini-gmp -o build/minitests
./build/tests
./build/minitests
bench-tests: extract
gcc $(CFLAGS) tests.c $(CFILES) -Ibench-include -Irandom -lgmp -o build/bench-tests
gcc $(CFLAGS) tests.c $(CFILES) -Iinclude -Ibench-include -Irandom -lgmp -o build/bench-tests
build/why3%bench: extract check-gmp
gcc $(CFLAGS) -DTEST_WHY3 -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o $@
gcc $(CFLAGS) -DTEST_WHY3 -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -Iinclude -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o $@
build/gmp%bench: extract check-gmp
gcc $(CFLAGS) -DTEST_GMP -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o $@
gcc $(CFLAGS) -DTEST_GMP -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -Iinclude -I$(GMP_DIR) -Irandom -L$(GMP_LIB) -lgmp -o $@
build/minigmp%bench: extract
gcc $(CFLAGS) -DTEST_MINIGMP -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -I$(GMP_DIR) -Imini-gmp -Irandom -o $@
gcc $(CFLAGS) -DTEST_MINIGMP -DTEST_`echo $* | tr [:lower:] [:upper:]` tests.c $(CFILES) -Iinclude -I$(GMP_DIR) -Imini-gmp -Irandom -o $@
alltests: tests build/why3addbench build/why3mulbench build/why3toombench build/why3divbench build/gmpaddbench build/gmpmulbench build/gmptoombench build/gmpdivbench build/minigmpaddbench build/minigmpmulbench build/minigmpdivbench build/minigmptoombench
......
......@@ -23,8 +23,8 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_add_1.3" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="21"/></proof>
<proof prover="3"><result status="valid" time="0.06"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.08" steps="21"/></proof>
</goal>
<goal name="VC wmpn_add_1.4" expl="loop invariant init" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.01" steps="23"/></proof>
......@@ -34,7 +34,7 @@
<proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="26"/></proof>
</goal>
<goal name="VC wmpn_add_1.6" expl="loop invariant init" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="94"/></proof>
<proof prover="2"><result status="valid" time="0.16"/></proof>
</goal>
<goal name="VC wmpn_add_1.7" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
......@@ -75,7 +75,7 @@
<proof prover="2"><result status="valid" time="0.11"/></proof>
</goal>
<goal name="VC wmpn_add_1.16" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.68" steps="52"/></proof>
<proof prover="5"><result status="valid" time="0.43" steps="52"/></proof>
</goal>
<goal name="VC wmpn_add_1.17" expl="loop invariant init" proved="true">
<proof prover="2"><result status="valid" time="0.08"/></proof>
......@@ -96,7 +96,7 @@
<proof prover="2"><result status="valid" time="0.11"/></proof>
</goal>
<goal name="VC wmpn_add_1.23" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="1.13" steps="197"/></proof>
<proof prover="5"><result status="valid" time="0.82" steps="197"/></proof>
</goal>
<goal name="VC wmpn_add_1.24" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.04"/></proof>
......@@ -117,7 +117,7 @@
<proof prover="2"><result status="valid" time="0.09"/></proof>
</goal>
<goal name="VC wmpn_add_1.30" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.81" steps="77"/></proof>
<proof prover="5"><result status="valid" time="0.55" steps="77"/></proof>
</goal>
<goal name="VC wmpn_add_1.31" expl="loop invariant preservation" proved="true">
<proof prover="2"><result status="valid" time="0.24"/></proof>
......@@ -214,11 +214,11 @@
<proof prover="2"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_add_1.62" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.06"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.08" steps="19"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="19"/></proof>
</goal>
<goal name="VC wmpn_add_1.63" expl="loop invariant init" proved="true">
<proof prover="2"><result status="valid" time="0.16"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.06" steps="83"/></proof>
</goal>
<goal name="VC wmpn_add_1.64" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -272,21 +272,21 @@
<goal name="VC wmpn_add_n" expl="VC for wmpn_add_n" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add_n.0" expl="loop invariant init" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add_n.0.0" expl="VC for wmpn_add_n" proved="true">
<proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.03" steps="10"/></proof>
</goal>
<goal name="VC wmpn_add_n.0.1" expl="VC for wmpn_add_n" proved="true">
<proof prover="0"><result status="valid" time="0.02"/></proof>
</goal>
</transf>
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.10" steps="11"/></proof>
</goal>
<goal name="VC wmpn_add_n.1" expl="loop invariant init" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.03" steps="67"/></proof>
</goal>
<goal name="VC wmpn_add_n.2" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.10" steps="13"/></proof>
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add_n.2.0" expl="VC for wmpn_add_n" proved="true">
<proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.03" steps="13"/></proof>
</goal>
<goal name="VC wmpn_add_n.2.1" expl="VC for wmpn_add_n" proved="true">
<proof prover="0"><result status="valid" time="0.02"/></proof>
</goal>
</transf>
</goal>
<goal name="VC wmpn_add_n.3" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
......@@ -379,13 +379,13 @@
<goal name="VC wmpn_add" expl="VC for wmpn_add" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add.0" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.07" steps="12"/></proof>
</goal>
<goal name="VC wmpn_add.1" expl="loop invariant init" proved="true">
<proof prover="5"><result status="valid" time="0.03" steps="75"/></proof>
</goal>
<goal name="VC wmpn_add.2" expl="loop invariant init" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.07" steps="14"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_add.3" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
......@@ -488,7 +488,7 @@
<goal name="VC wmpn_add.26" expl="precondition" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add.26.0" expl="VC for wmpn_add" proved="true">
<proof prover="0"><result status="valid" time="5.27"/></proof>
<proof prover="0"><result status="valid" time="4.39"/></proof>
</goal>
<goal name="VC wmpn_add.26.1" expl="VC for wmpn_add" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
......@@ -505,7 +505,7 @@
<proof prover="2"><result status="valid" time="0.10"/></proof>
</goal>
<goal name="VC wmpn_add.30" expl="integer overflow" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.18" steps="67"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="67"/></proof>
</goal>
<goal name="VC wmpn_add.31" expl="assertion" proved="true">
<proof prover="2"><result status="valid" time="0.21"/></proof>
......@@ -529,7 +529,7 @@
<proof prover="2"><result status="valid" time="0.11"/></proof>
</goal>
<goal name="VC wmpn_add.38" expl="precondition" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.40" steps="82"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.25" steps="82"/></proof>
</goal>
<goal name="VC wmpn_add.39" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.14"/></proof>
......@@ -541,10 +541,10 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_add.42" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="1.08"/></proof>
<proof prover="0"><result status="valid" time="0.85"/></proof>
</goal>
<goal name="VC wmpn_add.43" expl="assertion" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.42" steps="78"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.26" steps="78"/></proof>
</goal>
<goal name="VC wmpn_add.44" expl="integer overflow" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.28" steps="96"/></proof>
......@@ -563,7 +563,7 @@
</transf>
</goal>
<goal name="VC wmpn_add.48" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.51" steps="83"/></proof>
<proof prover="5"><result status="valid" time="0.32" steps="83"/></proof>
</goal>
<goal name="VC wmpn_add.49" expl="loop invariant preservation" proved="true">
<proof prover="2"><result status="valid" time="0.13"/></proof>
......@@ -633,7 +633,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_add.70" expl="assertion" proved="true">
<proof prover="0"><result status="valid" time="1.26"/></proof>
<proof prover="0"><result status="valid" time="0.86"/></proof>
</goal>
<goal name="VC wmpn_add.71" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.07" steps="59"/></proof>
......@@ -700,13 +700,13 @@
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_add.90" expl="assertion" proved="true">
<proof prover="0" timelimit="10"><result status="valid" time="1.10"/></proof>
<proof prover="0" timelimit="10"><result status="valid" time="0.85"/></proof>
</goal>
<goal name="VC wmpn_add.91" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.02" steps="47"/></proof>
</goal>
<goal name="VC wmpn_add.92" expl="integer overflow" proved="true">
<proof prover="5" timelimit="5"><result status="valid" time="0.02" steps="65"/></proof>
<proof prover="5" timelimit="5"><result status="valid" time="0.04" steps="65"/></proof>
</goal>
<goal name="VC wmpn_add.93" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -737,13 +737,13 @@
<goal name="VC wmpn_add_in_place" expl="VC for wmpn_add_in_place" proved="true">
<transf name="split_goal_right" proved="true" >
<goal name="VC wmpn_add_in_place.0" expl="loop invariant init" proved="true">
<proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
<proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.07"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.1" expl="loop invariant init" proved="true">
<proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.04" steps="62"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.2" expl="loop invariant init" proved="true">
<proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.07"/></proof>
<proof prover="2" timelimit="5" memlimit="2000"><result status="valid" time="0.06"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.3" expl="loop invariant init" proved="true">
<proof prover="0"><result status="valid" time="0.01"/></proof>
......@@ -908,7 +908,7 @@
<proof prover="5" timelimit="5" memlimit="2000"><result status="valid" time="0.38" steps="60"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.42.2" expl="VC for wmpn_add_in_place" proved="true">
<proof prover="5"><result status="valid" time="0.40" steps="85"/></proof>
<proof prover="5"><result status="valid" time="0.25" steps="85"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.42.3" expl="VC for wmpn_add_in_place" proved="true">
<proof prover="2"><result status="valid" time="0.03"/></proof>
......@@ -955,7 +955,7 @@
<proof prover="2"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.56" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.32" steps="85"/></proof>
<proof prover="5"><result status="valid" time="0.18" steps="85"/></proof>
</goal>
<goal name="VC wmpn_add_in_place.57" expl="loop invariant preservation" proved="true">
<proof prover="2"><result status="valid" time="0.10"/></proof>
......@@ -1087,7 +1087,7 @@
</transf>
</goal>
<goal name="VC wmpn_incr.21" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.60" steps="56"/></proof>
<proof prover="5"><result status="valid" time="0.43" steps="56"/></proof>
</goal>
<goal name="VC wmpn_incr.22" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.12"/></proof>
......@@ -1115,7 +1115,7 @@
<proof prover="2"><result status="valid" time="0.10"/></proof>
</goal>
<goal name="VC wmpn_incr.26" expl="postcondition" proved="true">
<proof prover="5"><result status="valid" time="0.70" steps="60"/></proof>
<proof prover="5"><result status="valid" time="0.52" steps="60"/></proof>
</goal>
<goal name="VC wmpn_incr.27" expl="postcondition" proved="true">
<proof prover="2"><result status="valid" time="0.26"/></proof>
......@@ -1190,10 +1190,10 @@
<proof prover="2"><result status="valid" time="0.09"/></proof>
</goal>
<goal name="VC wmpn_incr.44" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.01"/></proof>
</goal>
<goal name="VC wmpn_incr.45" expl="precondition" proved="true">
<proof prover="3"><result status="valid" time="0.01"/></proof>
<proof prover="2"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_incr.46" expl="assertion" proved="true">
<proof prover="2"><result status="valid" time="0.06"/></proof>
......@@ -1212,7 +1212,7 @@
<goal name="VC wmpn_incr_1" expl="VC for wmpn_incr_1" proved="true">
<transf name="split_vc" proved="true" >
<goal name="VC wmpn_incr_1.0" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_incr_1.1" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
......@@ -1221,7 +1221,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_incr_1.3" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.02"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_incr_1.4" expl="loop invariant init" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
......@@ -1266,7 +1266,7 @@
<proof prover="5"><result status="valid" time="0.04" steps="56"/></proof>
</goal>
<goal name="VC wmpn_incr_1.18" expl="integer overflow" proved="true">
<proof prover="3"><result status="valid" time="0.32"/></proof>
<proof prover="3"><result status="valid" time="0.26"/></proof>
</goal>
<goal name="VC wmpn_incr_1.19" expl="assertion" proved="true">
<transf name="split_vc" proved="true" >
......@@ -1288,7 +1288,7 @@
</transf>
</goal>
<goal name="VC wmpn_incr_1.20" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="3"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC wmpn_incr_1.21" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.07" steps="118"/></proof>
......@@ -1303,7 +1303,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_incr_1.25" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.02" steps="50"/></proof>
<proof prover="5"><result status="valid" time="0.05" steps="50"/></proof>
</goal>
<goal name="VC wmpn_incr_1.26" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.02" steps="66"/></proof>
......@@ -1339,7 +1339,7 @@
<proof prover="5"><result status="valid" time="0.03" steps="43"/></proof>
</goal>
<goal name="VC wmpn_incr_1.37" expl="integer overflow" proved="true">
<proof prover="3"><result status="valid" time="0.26"/></proof>
<proof prover="3"><result status="valid" time="0.32"/></proof>
</goal>
<goal name="VC wmpn_incr_1.38" expl="assertion" proved="true">
<transf name="split_vc" proved="true" >
......@@ -1361,7 +1361,7 @@
</transf>
</goal>
<goal name="VC wmpn_incr_1.39" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.04"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_incr_1.40" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.06" steps="114"/></proof>
......@@ -1376,7 +1376,7 @@
<proof prover="3"><result status="valid" time="0.02"/></proof>
</goal>
<goal name="VC wmpn_incr_1.44" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.05" steps="49"/></proof>
<proof prover="5"><result status="valid" time="0.02" steps="49"/></proof>
</goal>
<goal name="VC wmpn_incr_1.45" expl="loop invariant preservation" proved="true">
<proof prover="5"><result status="valid" time="0.04" steps="65"/></proof>
......@@ -1465,7 +1465,7 @@
<proof prover="2"><result status="valid" time="0.12"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.15" expl="assertion" proved="true">
<proof prover="2"><result status="valid" time="1.15"/></proof>
<proof prover="2"><result status="valid" time="0.67"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.16" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.04"/></proof>
......@@ -1480,7 +1480,7 @@
<proof prover="2"><result status="valid" time="0.13"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.20" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.62" steps="52"/></proof>
<proof prover="5"><result status="valid" time="0.44" steps="52"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.21" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.05"/></proof>
......@@ -1495,7 +1495,7 @@
<proof prover="2"><result status="valid" time="0.14"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.25" expl="postcondition" proved="true">
<proof prover="5"><result status="valid" time="0.85" steps="56"/></proof>
<proof prover="5"><result status="valid" time="0.48" steps="56"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.26" expl="postcondition" proved="true">
<proof prover="2"><result status="valid" time="0.07"/></proof>
......@@ -1507,7 +1507,7 @@
<proof prover="2"><result status="valid" time="0.08"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.29" expl="assertion" proved="true">
<proof prover="5"><result status="valid" time="0.70" steps="66"/></proof>
<proof prover="5"><result status="valid" time="0.48" steps="66"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.30" expl="loop variant decrease" proved="true">
<proof prover="2"><result status="valid" time="0.09"/></proof>
......@@ -1549,10 +1549,10 @@
<proof prover="2"><result status="valid" time="0.10"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.43" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.06"/></proof>
<proof prover="2"><result status="valid" time="0.04"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.44" expl="precondition" proved="true">
<proof prover="2"><result status="valid" time="0.04"/></proof>
<proof prover="2"><result status="valid" time="0.06"/></proof>
</goal>
<goal name="VC wmpn_add_1_in_place.45" expl="assertion" proved="true">
<proof prover="2"><result status="valid" time="0.05"/></proof>
......
......@@ -76,7 +76,7 @@
</transf>
</goal>
<goal name="VC wmpn_cmp.16" expl="postcondition" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
<proof prover="0"><result status="valid" time="0.16"/></proof>
</goal>
<goal name="VC wmpn_cmp.17" expl="assertion" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......@@ -103,7 +103,7 @@
</transf>
</goal>
<goal name="VC wmpn_cmp.21" expl="postcondition" proved="true">
<proof prover="0"><result status="valid" time="0.16"/></proof>
<proof prover="3"><result status="valid" time="0.03"/></proof>
</goal>
<goal name="VC wmpn_cmp.22" expl="loop variant decrease" proved="true">
<proof prover="3"><result status="valid" time="0.03"/></proof>
......
This diff is collapsed.
This diff is collapsed.
/* TODO GMP header stuff */
static const unsigned char invsqrttab[384] = /* The common 0x100 was removed */
{
0xff,0xfd,0xfb,0xf9,0xf7,0xf5,0xf3,0xf2, /* sqrt(1/80)..sqrt(1/87) */
0xf0,0xee,0xec,0xea,0xe9,0xe7,0xe5,0xe4, /* sqrt(1/88)..sqrt(1/8f) */
0xe2,0xe0,0xdf,0xdd,0xdb,0xda,0xd8,0xd7, /* sqrt(1/90)..sqrt(1/97) */
0xd5,0xd4,0xd2,0xd1,0xcf,0xce,0xcc,0xcb, /* sqrt(1/98)..sqrt(1/9f) */
0xc9,0xc8,0xc6,0xc5,0xc4,0xc2,0xc1,0xc0, /* sqrt(1/a0)..sqrt(1/a7) */
0xbe,0xbd,0xbc,0xba,0xb9,0xb8,0xb7,0xb5, /* sqrt(1/a8)..sqrt(1/af) */
0xb4,0xb3,0xb2,0xb0,0xaf,0xae,0xad,0xac, /* sqrt(1/b0)..sqrt(1/b7) */
0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3, /* sqrt(1/b8)..sqrt(1/bf) */
0xa2,0xa0,0x9f,0x9e,0x9d,0x9c,0x9b,0x9a, /* sqrt(1/c0)..sqrt(1/c7) */
0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92, /* sqrt(1/c8)..sqrt(1/cf) */
0x91,0x90,0x8f,0x8e,0x8d,0x8c,0x8c,0x8b, /* sqrt(1/d0)..sqrt(1/d7) */
0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83, /* sqrt(1/d8)..sqrt(1/df) */
0x83,0x82,0x81,0x80,0x7f,0x7e,0x7e,0x7d, /* sqrt(1/e0)..sqrt(1/e7) */
0x7c,0x7b,0x7a,0x79,0x79,0x78,0x77,0x76, /* sqrt(1/e8)..sqrt(1/ef) */
0x76,0x75,0x74,0x73,0x72,0x72,0x71,0x70, /* sqrt(1/f0)..sqrt(1/f7) */
0x6f,0x6f,0x6e,0x6d,0x6d,0x6c,0x6b,0x6a, /* sqrt(1/f8)..sqrt(1/ff) */
0x6a,0x69,0x68,0x68,0x67,0x66,0x66,0x65, /* sqrt(1/100)..sqrt(1/107) */
0x64,0x64,0x63,0x62,0x62,0x61,0x60,0x60, /* sqrt(1/108)..sqrt(1/10f) */
0x5f,0x5e,0x5e,0x5d,0x5c,0x5c,0x5b,0x5a, /* sqrt(1/110)..sqrt(1/117) */
0x5a,0x59,0x59,0x58,0x57,0x57,0x56,0x56, /* sqrt(1/118)..sqrt(1/11f) */
0x55,0x54,0x54,0x53,0x53,0x52,0x52,0x51, /* sqrt(1/120)..sqrt(1/127) */
0x50,0x50,0x4f,0x4f,0x4e,0x4e,0x4d,0x4d, /* sqrt(1/128)..sqrt(1/12f) */
0x4c,0x4b,0x4b,0x4a,0x4a,0x49,0x49,0x48, /* sqrt(1/130)..sqrt(1/137) */
0x48,0x47,0x47,0x46,0x46,0x45,0x45,0x44, /* sqrt(1/138)..sqrt(1/13f) */
0x44,0x43,0x43,0x42,0x42,0x41,0x41,0x40, /* sqrt(1/140)..sqrt(1/147) */