aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile8
-rw-r--r--measurements/2018-11-03-gcc/aggregate.sh4
-rw-r--r--measurements/2018-11-03-gcc/benchmarks.log652
-rw-r--r--measurements/2018-11-03-gcc/benchmarks2.log652
-rw-r--r--measurements/2018-11-03-gcc/setup34
-rw-r--r--src/Specific/Framework/bench/fibe.c84
-rw-r--r--src/Specific/Framework/bench/gmpsec.c75
-rw-r--r--src/Specific/Framework/bench/gmpvar.c75
-rw-r--r--src/Specific/Framework/bench/gmpxx.cpp97
9 files changed, 1547 insertions, 134 deletions
diff --git a/Makefile b/Makefile
index 75f97acaf..111a8ca9e 100644
--- a/Makefile
+++ b/Makefile
@@ -302,25 +302,25 @@ $(GENERATED_GMPXX) : %/gmpxx : %/compilerxx.sh src/Specific/Framework/bench/gmpx
sh $*/compilerxx.sh src/Specific/Framework/bench/gmpxx.cpp -lgmp -lgmpxx -o $@
$(GENERATED_GMPXX_MEASUREMENTS) : %/gmpxx.log : %/gmpxx
- $(STDTIME) $< > $@
+ $(STDTIME) $< 2>&1 | tee $@
$(GENERATED_GMPVAR) : %/gmpvar : %/compiler.sh src/Specific/Framework/bench/gmpvar.c
sh $*/compiler.sh src/Specific/Framework/bench/gmpvar.c -lgmp -o $@
$(GENERATED_GMPVAR_MEASUREMENTS) : %/gmpvar.log : %/gmpvar
- $(STDTIME) $< > $@
+ $(STDTIME) $< 2>&1 | tee $@
$(GENERATED_GMPSEC) : %/gmpsec : %/compiler.sh src/Specific/Framework/bench/gmpsec.c
sh $*/compiler.sh src/Specific/Framework/bench/gmpsec.c -lgmp -o $@
$(GENERATED_GMPSEC_MEASUREMENTS) : %/gmpsec.log : %/gmpsec
- $(STDTIME) $< > $@
+ $(STDTIME) $< 2>&1 | tee $@
$(GENERATED_FIBE) : %/fibe : %/compiler.sh src/Specific/Framework/bench/fibe.c %/feadd.c %/femul.c %/fesquare.c %/fesub.c liblow/liblow.h liblow/cmovznz.c
sh $*/compiler.sh -I liblow/ liblow/cmovznz.c src/Specific/Framework/bench/fibe.c -I $*/ -o $@
$(GENERATED_FIBE_MEASUREMENTS) : %/fibe.log : %/fibe
- $(STDTIME) $< > $@
+ $(STDTIME) $< 2>&1 | tee $@
.PHONY: generated-py-bench
generated-py-bench: $(GENERATED_PY_MEASUREMENTS)
diff --git a/measurements/2018-11-03-gcc/aggregate.sh b/measurements/2018-11-03-gcc/aggregate.sh
new file mode 100644
index 000000000..590a45a0e
--- /dev/null
+++ b/measurements/2018-11-03-gcc/aggregate.sh
@@ -0,0 +1,4 @@
+for f in $(find . -name gmpxx.log); do echo -e "$(basename "$(dirname "$f")" | cut -d_ -f2-)\tgmpxx\t$(cat "$f" | cut -d' ' -f3 | cut -d, -f1)"; done
+for f in $(find . -name gmpsec.log); do echo -e "$(basename "$(dirname "$f")" | cut -d_ -f2-)\tgmpsec\t$(cat "$f" | cut -d' ' -f3 | cut -d, -f1)"; done
+for f in $(find . -name gmpvar.log); do echo -e "$(basename "$(dirname "$f")" | cut -d_ -f2-)\tgmpvar\t$(cat "$f" | cut -d' ' -f3 | cut -d, -f1)"; done
+for f in $(find . -name fibe.log); do echo -e "$(basename "$(dirname "$f")" | cut -d_ -f2-)\tfibe_$(basename "$(dirname "$f")" | cut -d_ -f1)\t$(cat "$f" | cut -d' ' -f3 | cut -d, -f1)"; done
diff --git a/measurements/2018-11-03-gcc/benchmarks.log b/measurements/2018-11-03-gcc/benchmarks.log
new file mode 100644
index 000000000..14eaeb6d3
--- /dev/null
+++ b/measurements/2018-11-03-gcc/benchmarks.log
@@ -0,0 +1,652 @@
+2^127-1 fiat_solinas64 0.00
+2^129-25 fiat_solinas64 0.00
+2^130-5 fiat_solinas64 0.00
+2^141-9 fiat_solinas64 0.00
+2^150-3 fiat_solinas64 0.00
+2^150-5 fiat_solinas64 0.00
+2^165-25 fiat_solinas64 0.00
+2^166-5 fiat_solinas64 0.00
+2^171-19 fiat_solinas64 0.00
+2^174-17 fiat_solinas64 0.00
+2^174-3 fiat_solinas64 0.00
+2^130-5 fiat_solinas32 0.04
+2^127-1 fiat_solinas32 0.05
+2^140-27 fiat_solinas64 0.05
+2^158-15 fiat_solinas32 0.05
+2^196-15 fiat_solinas64 0.05
+2^212-29 fiat_solinas64 0.05
+2^216-2^108-1 fiat_solinas64 0.05
+2^222-117 fiat_solinas64 0.05
+2^230-27 fiat_solinas64 0.05
+2^127-1 fiat_montgomery64 0.06
+2^129-25 fiat_solinas32 0.06
+2^137-13 fiat_solinas64 0.06
+2^140-27 fiat_solinas32 0.06
+2^141-9 fiat_solinas32 0.06
+2^150-5 fiat_solinas32 0.06
+2^152-17 fiat_solinas32 0.06
+2^152-17 fiat_solinas64 0.06
+2^158-15 fiat_solinas64 0.06
+2^189-25 fiat_solinas64 0.06
+2^190-11 fiat_solinas64 0.06
+2^194-33 fiat_solinas64 0.06
+2^198-17 fiat_solinas64 0.06
+2^206-5 fiat_solinas64 0.06
+2^213-3 fiat_solinas64 0.06
+2^221-3 fiat_solinas64 0.06
+2^226-5 fiat_solinas64 0.06
+2^191-19 fiat_solinas64 0.07
+2^192-2^64-1 fiat_solinas64 0.07
+2^235-15 fiat_solinas64 0.07
+2^251-9 fiat_solinas64 0.07
+2^255-19 fiat_solinas64 0.07
+2^255-765 fiat_solinas64 0.07
+2^256-189 fiat_solinas64 0.07
+2^266-3 fiat_solinas64 0.07
+2^285-9 fiat_solinas64 0.07
+2^216-2^108-1 fiat_solinas32 0.08
+2^255-2^4-2^1-1 fiat_solinas64 0.08
+2^291-19 fiat_solinas64 0.08
+2^137-13 fiat_solinas32 0.09
+2^194-33 fiat_solinas32 0.09
+2^243-9 fiat_solinas64 0.09
+2^336-17 fiat_solinas64 0.09
+2^336-3 fiat_solinas64 0.09
+2^243-9 fiat_solinas32 0.10
+2^321-9 fiat_solinas64 0.10
+2^338-15 fiat_solinas64 0.10
+2^165-25 fiat_solinas32 0.11
+2^171-19 fiat_solinas32 0.11
+2^174-17 fiat_solinas32 0.11
+2^198-17 fiat_solinas32 0.11
+2^235-15 fiat_solinas32 0.11
+2^191-19 fiat_solinas32 0.12
+2^127-1 fiat_montgomery32 0.13
+2^221-3 fiat_solinas32 0.13
+2^222-117 fiat_solinas32 0.13
+2^230-27 fiat_solinas32 0.13
+2^251-9 fiat_solinas32 0.13
+2^255-19 fiat_solinas32 0.13
+2^379-19 fiat_solinas64 0.13
+2^416-2^208-1 fiat_solinas64 0.13
+2^448-2^224-1 fiat_solinas64 0.13
+2^450-2^225-1 fiat_solinas64 0.14
+2^480-2^240-1 fiat_solinas64 0.14
+2^127-1 gmpvar 0.15
+2^166-5 fiat_solinas32 0.15
+2^369-25 fiat_solinas64 0.15
+2^384-317 fiat_solinas64 0.15
+2^468-17 fiat_solinas64 0.15
+2^401-31 fiat_solinas64 0.16
+2^444-17 fiat_solinas64 0.16
+2^452-3 fiat_solinas64 0.16
+2^206-5 fiat_solinas32 0.17
+2^266-3 fiat_solinas32 0.17
+2^255-765 fiat_solinas32 0.18
+2^256-189 fiat_solinas32 0.18
+2^291-19 fiat_solinas32 0.18
+2^414-17 fiat_solinas64 0.18
+2^489-21 fiat_solinas64 0.18
+2^256-2^32-977 fiat_solinas32 0.19
+2^495-31 fiat_solinas64 0.19
+2^521-1 fiat_solinas64 0.20
+2^338-15 fiat_solinas32 0.22
+2^382-105 fiat_solinas64 0.22
+2^511-481 fiat_solinas64 0.23
+2^512-569 fiat_solinas64 0.23
+2^192-2^64-1 gmpvar 0.24
+2^192-2^64-1 gmpvar 0.25
+2^127-1 gmpsec 0.26
+2^191-19 gmpvar 0.26
+2^511-187 fiat_solinas64 0.26
+2^129-25 gmpvar 0.27
+2^130-5 gmpvar 0.27
+2^137-13 gmpvar 0.27
+2^140-27 gmpvar 0.27
+2^141-9 gmpvar 0.27
+2^150-3 gmpvar 0.27
+2^150-5 gmpvar 0.27
+2^152-17 gmpvar 0.27
+2^158-15 gmpvar 0.27
+2^165-25 gmpvar 0.27
+2^166-5 gmpvar 0.27
+2^171-19 gmpvar 0.27
+2^174-17 gmpvar 0.27
+2^174-3 gmpvar 0.27
+2^189-25 gmpvar 0.27
+2^190-11 gmpvar 0.27
+2^191-19 gmpvar 0.27
+2^130-5 gmpvar 0.28
+2^137-13 gmpvar 0.28
+2^140-27 gmpvar 0.28
+2^141-9 gmpvar 0.28
+2^150-5 gmpvar 0.28
+2^152-17 gmpvar 0.28
+2^158-15 gmpvar 0.28
+2^171-19 gmpvar 0.28
+2^174-17 gmpvar 0.28
+2^190-11 gmpvar 0.28
+2^192-2^64-1 gmpsec 0.28
+2^129-25 gmpvar 0.29
+2^137-13 gmpvar 0.30
+2^255-19 gmpvar 0.32
+2^255-2^4-2^1-1 gmpvar 0.32
+2^255-765 gmpvar 0.32
+2^256-2^224+2^192+2^96-1 gmpvar 0.32
+2^171-19 gmpvar 0.33
+2^194-33 gmpvar 0.33
+2^198-17 gmpvar 0.33
+2^216-2^108-1 gmpvar 0.33
+2^221-3 gmpvar 0.33
+2^222-117 gmpvar 0.33
+2^224-2^96+1 gmpvar 0.33
+2^255-2^4-2^1-1 gmpvar 0.33
+2^255-765 gmpvar 0.33
+2^256-189 gmpvar 0.33
+2^256-2^224+2^192+2^96-1 gmpvar 0.33
+2^256-2^32-977 gmpvar 0.33
+2^194-33 gmpvar 0.34
+2^196-15 gmpvar 0.34
+2^198-17 gmpvar 0.34
+2^205-45x2^198-1 gmpvar 0.34
+2^206-5 gmpvar 0.34
+2^212-29 gmpvar 0.34
+2^213-3 gmpvar 0.34
+2^216-2^108-1 gmpvar 0.34
+2^221-3 gmpvar 0.34
+2^222-117 gmpvar 0.34
+2^224-2^96+1 gmpvar 0.34
+2^226-5 gmpvar 0.34
+2^230-27 gmpvar 0.34
+2^235-15 gmpvar 0.34
+2^243-9 gmpvar 0.34
+2^251-9 gmpvar 0.34
+2^254-127x2^240-1 gmpvar 0.34
+2^256-189 gmpvar 0.34
+2^256-2^32-977 gmpvar 0.34
+2^256-88x2^240-1 gmpvar 0.34
+2^196-15 gmpvar 0.35
+2^205-45x2^198-1 gmpvar 0.35
+2^212-29 gmpvar 0.35
+2^216-2^108-1 gmpvar 0.35
+2^222-117 gmpvar 0.35
+2^230-27 gmpvar 0.35
+2^235-15 gmpvar 0.35
+2^254-127x2^240-1 gmpvar 0.35
+2^256-2^32-977 gmpvar 0.35
+2^205-45x2^198-1 gmpvar 0.36
+2^243-9 gmpvar 0.36
+2^256-88x2^240-1 gmpvar 0.36
+2^190-11 gmpsec 0.37
+2^191-19 gmpsec 0.37
+2^256-189 gmpsec 0.37
+2^256-2^224+2^192+2^96-1 gmpsec 0.37
+2^256-2^32-977 gmpsec 0.37
+2^256-88x2^240-1 gmpsec 0.37
+2^129-25 gmpsec 0.38
+2^130-5 gmpsec 0.38
+2^137-13 gmpsec 0.38
+2^140-27 gmpsec 0.38
+2^141-9 gmpsec 0.38
+2^150-3 gmpsec 0.38
+2^150-5 gmpsec 0.38
+2^152-17 gmpsec 0.38
+2^158-15 gmpsec 0.38
+2^165-25 gmpsec 0.38
+2^166-5 gmpsec 0.38
+2^174-17 gmpsec 0.38
+2^174-3 gmpsec 0.38
+2^189-25 gmpsec 0.38
+2^190-11 gmpsec 0.38
+2^191-19 gmpsec 0.38
+2^256-189 gmpsec 0.38
+2^256-2^224+2^192+2^96-1 gmpsec 0.38
+2^256-2^32-977 gmpsec 0.38
+2^256-88x2^240-1 gmpsec 0.38
+2^137-13 gmpsec 0.39
+2^140-27 gmpsec 0.39
+2^158-15 gmpsec 0.39
+2^165-25 gmpsec 0.39
+2^166-5 gmpsec 0.39
+2^171-19 gmpsec 0.39
+2^174-17 gmpsec 0.39
+2^174-3 gmpsec 0.39
+2^189-25 gmpsec 0.39
+2^256-189 gmpsec 0.39
+2^137-13 gmpsec 0.40
+2^256-2^224+2^192+2^96-1 gmpsec 0.41
+2^266-3 gmpvar 0.42
+2^285-9 gmpvar 0.42
+2^291-19 gmpvar 0.42
+2^251-9 gmpvar 0.43
+2^285-9 gmpvar 0.43
+2^291-19 gmpvar 0.43
+2^291-19 gmpvar 0.44
+2^266-3 gmpvar 0.45
+2^285-9 gmpvar 0.45
+2^384-2^128-2^96+2^32-1 gmpvar 0.45
+2^384-317 gmpvar 0.45
+2^384-5x2^368-1 gmpvar 0.45
+2^384-79x2^376-1 gmpvar 0.45
+2^384-2^128-2^96+2^32-1 gmpvar 0.46
+2^384-317 gmpvar 0.46
+2^384-79x2^376-1 gmpvar 0.46
+2^255-19 gmpsec 0.47
+2^255-2^4-2^1-1 gmpsec 0.47
+2^255-765 gmpsec 0.47
+2^384-317 gmpvar 0.47
+2^384-5x2^368-1 gmpvar 0.47
+2^384-79x2^376-1 gmpvar 0.47
+2^255-19 gmpsec 0.48
+2^255-2^4-2^1-1 gmpsec 0.48
+2^255-765 gmpsec 0.48
+2^212-29 gmpsec 0.49
+2^213-3 gmpsec 0.49
+2^216-2^108-1 gmpsec 0.49
+2^221-3 gmpsec 0.49
+2^224-2^96+1 gmpsec 0.49
+2^226-5 gmpsec 0.49
+2^230-27 gmpsec 0.49
+2^235-15 gmpsec 0.49
+2^243-9 gmpsec 0.49
+2^254-127x2^240-1 gmpsec 0.49
+2^255-765 gmpsec 0.49
+2^383-187 gmpvar 0.49
+2^194-33 gmpsec 0.50
+2^196-15 gmpsec 0.50
+2^205-45x2^198-1 gmpsec 0.50
+2^206-5 gmpsec 0.50
+2^212-29 gmpsec 0.50
+2^213-3 gmpsec 0.50
+2^216-2^108-1 gmpsec 0.50
+2^222-117 gmpsec 0.50
+2^224-2^96+1 gmpsec 0.50
+2^226-5 gmpsec 0.50
+2^230-27 gmpsec 0.50
+2^235-15 gmpsec 0.50
+2^243-9 gmpsec 0.50
+2^251-9 gmpsec 0.50
+2^254-127x2^240-1 gmpsec 0.50
+2^383-187 gmpvar 0.50
+2^383-31 gmpvar 0.50
+2^198-17 gmpsec 0.51
+2^213-3 gmpsec 0.51
+2^221-3 gmpsec 0.51
+2^224-2^96+1 gmpsec 0.51
+2^226-5 gmpsec 0.51
+2^230-27 gmpsec 0.51
+2^235-15 gmpsec 0.51
+2^243-9 gmpsec 0.51
+2^254-127x2^240-1 gmpsec 0.51
+2^383-421 gmpvar 0.51
+2^198-17 gmpsec 0.52
+2^206-5 gmpsec 0.52
+2^221-3 gmpsec 0.52
+2^251-9 gmpsec 0.52
+2^322-2^161-1 gmpvar 0.52
+2^336-17 gmpvar 0.52
+2^336-3 gmpvar 0.52
+2^338-15 gmpvar 0.52
+2^369-25 gmpvar 0.52
+2^379-19 gmpvar 0.52
+2^382-105 gmpvar 0.52
+2^384-2^128-2^96+2^32-1 fiat_montgomery64 0.52
+2^198-17 gmpsec 0.53
+2^321-9 gmpvar 0.53
+2^322-2^161-1 gmpvar 0.53
+2^336-3 gmpvar 0.53
+2^338-15 gmpvar 0.53
+2^369-25 gmpvar 0.53
+2^379-19 gmpvar 0.53
+2^382-105 gmpvar 0.53
+2^383-421 gmpvar 0.53
+2^448-2^224-1 gmpvar 0.53
+2^336-17 gmpvar 0.54
+2^379-19 gmpvar 0.54
+2^127-1 gmpxx 0.55
+2^382-105 gmpvar 0.55
+2^448-2^224-1 gmpvar 0.55
+2^127-1 gmpxx 0.56
+2^206-5 gmpsec 0.58
+2^401-31 gmpvar 0.59
+2^413-21 gmpvar 0.59
+2^414-17 gmpvar 0.59
+2^416-2^208-1 gmpvar 0.59
+2^444-17 gmpvar 0.59
+2^127-1 gmpxx 0.60
+2^389-21 gmpvar 0.60
+2^401-31 gmpvar 0.60
+2^413-21 gmpvar 0.60
+2^414-17 gmpvar 0.60
+2^416-2^208-1 gmpvar 0.60
+2^384-317 gmpsec 0.61
+2^389-21 gmpvar 0.61
+2^401-31 gmpvar 0.61
+2^414-17 gmpvar 0.61
+2^416-2^208-1 gmpvar 0.61
+2^444-17 gmpvar 0.61
+2^512-491x2^496-1 gmpvar 0.61
+2^512-569 gmpvar 0.61
+2^384-2^128-2^96+2^32-1 gmpsec 0.62
+2^384-317 gmpsec 0.62
+2^384-5x2^368-1 gmpsec 0.62
+2^384-79x2^376-1 gmpsec 0.62
+2^512-491x2^496-1 gmpvar 0.62
+2^512-569 gmpvar 0.62
+2^512-491x2^496-1 gmpvar 0.63
+2^266-3 gmpsec 0.64
+2^285-9 gmpsec 0.64
+2^291-19 gmpsec 0.64
+2^511-481 gmpvar 0.64
+2^285-9 gmpsec 0.65
+2^384-2^128-2^96+2^32-1 gmpsec 0.65
+2^511-187 gmpvar 0.65
+2^511-481 gmpvar 0.65
+2^266-3 gmpsec 0.66
+2^291-19 gmpsec 0.66
+2^285-9 gmpsec 0.67
+2^511-481 gmpvar 0.67
+2^137-13 gmpxx 0.68
+2^291-19 gmpsec 0.68
+2^450-2^225-1 gmpvar 0.68
+2^468-17 gmpvar 0.68
+2^480-2^240-1 gmpvar 0.68
+2^489-21 gmpvar 0.68
+2^495-31 gmpvar 0.68
+2^510-290x2^496-1 gmpvar 0.68
+2^137-13 gmpxx 0.69
+2^140-27 gmpxx 0.69
+2^141-9 gmpxx 0.69
+2^150-5 gmpxx 0.69
+2^450-2^225-1 gmpvar 0.69
+2^468-17 gmpvar 0.69
+2^480-2^240-1 gmpvar 0.69
+2^488-17 gmpvar 0.69
+2^489-21 gmpvar 0.69
+2^495-31 gmpvar 0.69
+2^510-290x2^496-1 gmpvar 0.69
+2^137-13 gmpxx 0.70
+2^141-9 gmpxx 0.70
+2^150-3 gmpxx 0.70
+2^150-5 gmpxx 0.70
+2^152-17 gmpxx 0.70
+2^450-2^225-1 gmpvar 0.70
+2^452-3 gmpvar 0.70
+2^468-17 gmpvar 0.70
+2^488-17 gmpvar 0.70
+2^150-3 gmpxx 0.71
+2^150-5 gmpxx 0.71
+2^158-15 gmpxx 0.71
+2^452-3 gmpvar 0.71
+2^468-17 gmpvar 0.71
+2^129-25 gmpxx 0.72
+2^130-5 gmpxx 0.72
+2^158-15 gmpxx 0.72
+2^165-25 gmpxx 0.72
+2^166-5 gmpxx 0.72
+2^174-17 gmpxx 0.72
+2^130-5 gmpxx 0.73
+2^152-17 gmpxx 0.73
+2^165-25 gmpxx 0.73
+2^166-5 gmpxx 0.73
+2^171-19 gmpxx 0.73
+2^174-17 gmpxx 0.73
+2^174-3 gmpxx 0.73
+2^191-19 gmpxx 0.73
+2^192-2^64-1 gmpxx 0.73
+2^452-3 gmpvar 0.73
+2^129-25 gmpxx 0.74
+2^130-5 gmpxx 0.74
+2^166-5 gmpxx 0.74
+2^171-19 gmpxx 0.74
+2^174-17 gmpxx 0.74
+2^189-25 gmpxx 0.74
+2^171-19 gmpxx 0.75
+2^189-25 gmpxx 0.75
+2^190-11 gmpxx 0.75
+2^191-19 gmpxx 0.75
+2^383-187 gmpsec 0.75
+2^383-31 gmpsec 0.75
+2^383-421 gmpsec 0.75
+2^189-25 gmpxx 0.76
+2^190-11 gmpxx 0.76
+2^383-187 gmpsec 0.76
+2^129-25 gmpxx 0.77
+2^448-2^224-1 gmpsec 0.77
+2^322-2^161-1 gmpsec 0.78
+2^448-2^224-1 gmpsec 0.78
+2^150-5 gmpxx 0.79
+2^321-9 gmpsec 0.79
+2^322-2^161-1 gmpsec 0.79
+2^336-17 gmpsec 0.79
+2^336-3 gmpsec 0.79
+2^338-15 gmpsec 0.79
+2^369-25 gmpsec 0.79
+2^379-19 gmpsec 0.79
+2^382-105 gmpsec 0.79
+2^322-2^161-1 gmpsec 0.80
+2^336-17 gmpsec 0.80
+2^336-3 gmpsec 0.80
+2^338-15 gmpsec 0.80
+2^369-25 gmpsec 0.80
+2^379-19 gmpsec 0.80
+2^382-105 gmpsec 0.80
+2^321-9 gmpsec 0.81
+2^322-2^161-1 gmpsec 0.81
+2^382-105 gmpsec 0.81
+2^521-1 gmpvar 0.81
+2^198-17 gmpxx 0.82
+2^206-5 gmpxx 0.82
+2^212-29 gmpxx 0.82
+2^521-1 gmpvar 0.82
+2^196-15 gmpxx 0.83
+2^206-5 gmpxx 0.83
+2^212-29 gmpxx 0.83
+2^213-3 gmpxx 0.83
+2^222-117 gmpxx 0.83
+2^336-17 gmpsec 0.83
+2^196-15 gmpxx 0.84
+2^198-17 gmpxx 0.84
+2^221-3 gmpxx 0.84
+2^222-117 gmpxx 0.84
+2^256-189 gmpxx 0.84
+2^256-2^224+2^192+2^96-1 gmpxx 0.84
+2^256-2^32-977 gmpxx 0.84
+2^256-88x2^240-1 gmpxx 0.84
+2^521-1 gmpvar 0.84
+2^196-15 gmpxx 0.85
+2^198-17 gmpxx 0.85
+2^206-5 gmpxx 0.85
+2^213-3 gmpxx 0.85
+2^221-3 gmpxx 0.85
+2^222-117 gmpxx 0.85
+2^226-5 gmpxx 0.85
+2^255-19 gmpxx 0.85
+2^255-2^4-2^1-1 gmpxx 0.85
+2^256-189 gmpxx 0.85
+2^256-2^32-977 gmpxx 0.85
+2^256-88x2^240-1 gmpxx 0.85
+2^198-17 gmpxx 0.86
+2^205-45x2^198-1 gmpxx 0.86
+2^212-29 gmpxx 0.86
+2^216-2^108-1 gmpxx 0.86
+2^226-5 gmpxx 0.86
+2^230-27 gmpxx 0.86
+2^255-19 gmpxx 0.86
+2^255-2^4-2^1-1 gmpxx 0.86
+2^255-765 gmpxx 0.86
+2^256-2^224+2^192+2^96-1 gmpxx 0.86
+2^256-88x2^240-1 gmpxx 0.86
+2^205-45x2^198-1 gmpxx 0.87
+2^216-2^108-1 gmpxx 0.87
+2^224-2^96+1 gmpxx 0.87
+2^226-5 gmpxx 0.87
+2^230-27 gmpxx 0.87
+2^235-15 gmpxx 0.87
+2^243-9 gmpxx 0.87
+2^251-9 gmpxx 0.87
+2^255-19 gmpxx 0.87
+2^255-2^4-2^1-1 gmpxx 0.87
+2^255-765 gmpxx 0.87
+2^256-189 gmpxx 0.87
+2^194-33 gmpxx 0.88
+2^216-2^108-1 gmpxx 0.88
+2^224-2^96+1 gmpxx 0.88
+2^243-9 gmpxx 0.88
+2^251-9 gmpxx 0.88
+2^254-127x2^240-1 gmpxx 0.88
+2^255-765 gmpxx 0.88
+2^256-2^224+2^192+2^96-1 gmpxx 0.88
+2^336-3 gmpsec 0.88
+2^221-3 gmpxx 0.89
+2^224-2^96+1 gmpxx 0.89
+2^251-9 gmpxx 0.89
+2^254-127x2^240-1 gmpxx 0.89
+2^243-9 gmpxx 0.90
+2^130-5 gmpxx 0.91
+2^512-491x2^496-1 gmpsec 0.95
+2^512-569 gmpsec 0.95
+2^384-2^128-2^96+2^32-1 gmpxx 0.96
+2^384-317 gmpxx 0.96
+2^384-79x2^376-1 gmpxx 0.96
+2^389-21 gmpsec 0.96
+2^401-31 gmpsec 0.96
+2^413-21 gmpsec 0.96
+2^414-17 gmpsec 0.96
+2^416-2^208-1 gmpsec 0.96
+2^444-17 gmpsec 0.96
+2^235-15 gmpxx 0.97
+2^285-9 gmpxx 0.97
+2^384-2^128-2^96+2^32-1 gmpxx 0.97
+2^384-317 gmpxx 0.97
+2^384-5x2^368-1 gmpxx 0.97
+2^389-21 gmpsec 0.97
+2^401-31 gmpsec 0.97
+2^413-21 gmpsec 0.97
+2^416-2^208-1 gmpsec 0.97
+2^512-491x2^496-1 gmpsec 0.97
+2^512-569 gmpsec 0.97
+2^194-33 gmpxx 0.98
+2^266-3 gmpxx 0.98
+2^285-9 gmpxx 0.98
+2^291-19 gmpxx 0.98
+2^384-2^128-2^96+2^32-1 gmpxx 0.98
+2^384-5x2^368-1 gmpxx 0.98
+2^384-79x2^376-1 gmpxx 0.98
+2^401-31 gmpsec 0.98
+2^414-17 gmpsec 0.98
+2^266-3 gmpxx 0.99
+2^291-19 gmpxx 0.99
+2^384-2^128-2^96+2^32-1 gmpxx 0.99
+2^384-317 gmpxx 0.99
+2^285-9 gmpxx 1.00
+2^291-19 gmpxx 1.00
+2^291-19 gmpxx 1.01
+2^383-421 gmpxx 1.03
+2^383-31 gmpxx 1.04
+2^448-2^224-1 gmpxx 1.04
+2^336-3 gmpxx 1.05
+2^383-187 gmpxx 1.05
+2^448-2^224-1 gmpxx 1.05
+2^336-17 gmpxx 1.06
+2^336-3 gmpxx 1.06
+2^338-15 gmpxx 1.06
+2^369-25 gmpxx 1.06
+2^379-19 gmpxx 1.06
+2^336-17 gmpxx 1.07
+2^336-3 gmpxx 1.07
+2^369-25 gmpxx 1.07
+2^379-19 gmpxx 1.07
+2^382-105 gmpxx 1.07
+2^383-31 gmpxx 1.07
+2^383-421 gmpxx 1.07
+2^448-2^224-1 gmpxx 1.07
+2^336-17 gmpxx 1.08
+2^369-25 gmpxx 1.08
+2^382-105 gmpxx 1.08
+2^336-17 gmpxx 1.09
+2^338-15 gmpxx 1.09
+2^338-15 gmpxx 1.10
+2^379-19 gmpxx 1.10
+2^511-481 gmpsec 1.10
+2^511-187 gmpsec 1.11
+2^511-481 gmpsec 1.11
+2^369-25 gmpxx 1.12
+2^511-187 gmpsec 1.12
+2^322-2^161-1 gmpxx 1.13
+2^512-569 gmpxx 1.13
+2^512-491*2^496-1 gmpxx 1.14
+2^512-569 gmpxx 1.14
+2^321-9 gmpxx 1.15
+2^414-17 gmpxx 1.15
+2^416-2^208-1 gmpxx 1.15
+2^512-569 gmpxx 1.15
+2^401-31 gmpxx 1.16
+2^413-21 gmpxx 1.16
+2^414-17 gmpxx 1.16
+2^416-2^208-1 gmpxx 1.16
+2^444-17 gmpxx 1.16
+2^480-2^240-1 gmpsec 1.16
+2^488-17 gmpsec 1.16
+2^512-491*2^496-1 gmpxx 1.16
+2^321-9 gmpxx 1.17
+2^322-2^161-1 gmpxx 1.17
+2^389-21 gmpxx 1.17
+2^401-31 gmpxx 1.17
+2^413-21 gmpxx 1.17
+2^416-2^208-1 gmpxx 1.17
+2^444-17 gmpxx 1.17
+2^450-2^225-1 gmpsec 1.17
+2^452-3 gmpsec 1.17
+2^468-17 gmpsec 1.17
+2^480-2^240-1 gmpsec 1.17
+2^488-17 gmpsec 1.17
+2^489-21 gmpsec 1.17
+2^495-31 gmpsec 1.17
+2^510-290*2^496-1 gmpsec 1.17
+2^512-491*2^496-1 gmpxx 1.17
+2^512-569 gmpxx 1.17
+2^401-31 gmpxx 1.18
+2^416-2^208-1 gmpxx 1.18
+2^444-17 gmpxx 1.18
+2^450-2^225-1 gmpsec 1.18
+2^452-3 gmpsec 1.18
+2^468-17 gmpsec 1.18
+2^480-2^240-1 gmpsec 1.18
+2^488-17 gmpsec 1.18
+2^495-31 gmpsec 1.18
+2^510-290*2^496-1 gmpsec 1.18
+2^511-187 gmpxx 1.20
+2^511-481 gmpxx 1.20
+2^511-187 gmpxx 1.21
+2^511-481 gmpxx 1.21
+2^489-21 gmpsec 1.24
+2^510-290*2^496-1 gmpxx 1.24
+2^468-17 gmpxx 1.25
+2^480-2^240-1 gmpxx 1.25
+2^468-17 gmpxx 1.26
+2^480-2^240-1 gmpxx 1.26
+2^489-21 gmpxx 1.26
+2^495-31 gmpxx 1.26
+2^510-290*2^496-1 gmpxx 1.26
+2^414-17 gmpxx 1.27
+2^468-17 gmpxx 1.27
+2^488-17 gmpxx 1.27
+2^495-31 gmpxx 1.27
+2^510-290*2^496-1 gmpxx 1.27
+2^489-21 gmpsec 1.28
+2^489-21 gmpxx 1.28
+2^452-3 gmpxx 1.29
+2^489-21 gmpxx 1.29
+2^480-2^240-1 gmpxx 1.31
+2^452-3 gmpxx 1.32
+2^450-2^225-1 gmpxx 1.33
+2^510-290*2^496-1 gmpxx 1.33
+2^450-2^225-1 gmpxx 1.34
+2^450-2^225-1 gmpsec 1.35
+2^450-2^225-1 gmpxx 1.35
+2^521-1 gmpxx 1.38
+2^521-1 gmpsec 1.39
+2^521-1 gmpxx 1.39
+2^521-1 gmpsec 1.40
+2^521-1 gmpxx 1.40
diff --git a/measurements/2018-11-03-gcc/benchmarks2.log b/measurements/2018-11-03-gcc/benchmarks2.log
new file mode 100644
index 000000000..8210fff92
--- /dev/null
+++ b/measurements/2018-11-03-gcc/benchmarks2.log
@@ -0,0 +1,652 @@
+2^127-1 fiat_solinas64 0.00
+2^129-25 fiat_solinas64 0.00
+2^130-5 fiat_solinas64 0.00
+2^141-9 fiat_solinas64 0.00
+2^150-3 fiat_solinas64 0.00
+2^150-5 fiat_solinas64 0.00
+2^165-25 fiat_solinas64 0.00
+2^166-5 fiat_solinas64 0.00
+2^171-19 fiat_solinas64 0.00
+2^174-17 fiat_solinas64 0.00
+2^174-3 fiat_solinas64 0.00
+2^130-5 fiat_solinas32 0.04
+2^127-1 fiat_solinas32 0.05
+2^140-27 fiat_solinas64 0.05
+2^158-15 fiat_solinas32 0.05
+2^196-15 fiat_solinas64 0.05
+2^212-29 fiat_solinas64 0.05
+2^216-2^108-1 fiat_solinas64 0.05
+2^222-117 fiat_solinas64 0.05
+2^230-27 fiat_solinas64 0.05
+2^127-1 fiat_montgomery64 0.06
+2^129-25 fiat_solinas32 0.06
+2^137-13 fiat_solinas64 0.06
+2^140-27 fiat_solinas32 0.06
+2^141-9 fiat_solinas32 0.06
+2^150-5 fiat_solinas32 0.06
+2^152-17 fiat_solinas32 0.06
+2^152-17 fiat_solinas64 0.06
+2^158-15 fiat_solinas64 0.06
+2^189-25 fiat_solinas64 0.06
+2^190-11 fiat_solinas64 0.06
+2^194-33 fiat_solinas64 0.06
+2^198-17 fiat_solinas64 0.06
+2^206-5 fiat_solinas64 0.06
+2^213-3 fiat_solinas64 0.06
+2^221-3 fiat_solinas64 0.06
+2^226-5 fiat_solinas64 0.06
+2^191-19 fiat_solinas64 0.07
+2^192-2^64-1 fiat_solinas64 0.07
+2^235-15 fiat_solinas64 0.07
+2^251-9 fiat_solinas64 0.07
+2^255-19 fiat_solinas64 0.07
+2^255-765 fiat_solinas64 0.07
+2^256-189 fiat_solinas64 0.07
+2^266-3 fiat_solinas64 0.07
+2^285-9 fiat_solinas64 0.07
+2^216-2^108-1 fiat_solinas32 0.08
+2^255-2^4-2^1-1 fiat_solinas64 0.08
+2^291-19 fiat_solinas64 0.08
+2^137-13 fiat_solinas32 0.09
+2^194-33 fiat_solinas32 0.09
+2^243-9 fiat_solinas64 0.09
+2^336-17 fiat_solinas64 0.09
+2^336-3 fiat_solinas64 0.09
+2^243-9 fiat_solinas32 0.10
+2^321-9 fiat_solinas64 0.10
+2^338-15 fiat_solinas64 0.10
+2^165-25 fiat_solinas32 0.11
+2^171-19 fiat_solinas32 0.11
+2^174-17 fiat_solinas32 0.11
+2^198-17 fiat_solinas32 0.11
+2^235-15 fiat_solinas32 0.11
+2^191-19 fiat_solinas32 0.12
+2^127-1 fiat_montgomery32 0.13
+2^221-3 fiat_solinas32 0.13
+2^222-117 fiat_solinas32 0.13
+2^230-27 fiat_solinas32 0.13
+2^251-9 fiat_solinas32 0.13
+2^255-19 fiat_solinas32 0.13
+2^379-19 fiat_solinas64 0.13
+2^416-2^208-1 fiat_solinas64 0.13
+2^448-2^224-1 fiat_solinas64 0.13
+2^450-2^225-1 fiat_solinas64 0.14
+2^480-2^240-1 fiat_solinas64 0.14
+2^127-1 gmpvar 0.15
+2^166-5 fiat_solinas32 0.15
+2^369-25 fiat_solinas64 0.15
+2^384-317 fiat_solinas64 0.15
+2^468-17 fiat_solinas64 0.15
+2^401-31 fiat_solinas64 0.16
+2^444-17 fiat_solinas64 0.16
+2^452-3 fiat_solinas64 0.16
+2^206-5 fiat_solinas32 0.17
+2^266-3 fiat_solinas32 0.17
+2^255-765 fiat_solinas32 0.18
+2^256-189 fiat_solinas32 0.18
+2^291-19 fiat_solinas32 0.18
+2^414-17 fiat_solinas64 0.18
+2^489-21 fiat_solinas64 0.18
+2^256-2^32-977 fiat_solinas32 0.19
+2^495-31 fiat_solinas64 0.19
+2^521-1 fiat_solinas64 0.20
+2^338-15 fiat_solinas32 0.22
+2^382-105 fiat_solinas64 0.22
+2^511-481 fiat_solinas64 0.23
+2^512-569 fiat_solinas64 0.23
+2^192-2^64-1 gmpvar 0.24
+2^192-2^64-1 gmpvar 0.25
+2^127-1 gmpsec 0.26
+2^191-19 gmpvar 0.26
+2^511-187 fiat_solinas64 0.26
+2^129-25 gmpvar 0.27
+2^130-5 gmpvar 0.27
+2^137-13 gmpvar 0.27
+2^140-27 gmpvar 0.27
+2^141-9 gmpvar 0.27
+2^150-3 gmpvar 0.27
+2^150-5 gmpvar 0.27
+2^152-17 gmpvar 0.27
+2^158-15 gmpvar 0.27
+2^165-25 gmpvar 0.27
+2^166-5 gmpvar 0.27
+2^171-19 gmpvar 0.27
+2^174-17 gmpvar 0.27
+2^174-3 gmpvar 0.27
+2^189-25 gmpvar 0.27
+2^190-11 gmpvar 0.27
+2^191-19 gmpvar 0.27
+2^130-5 gmpvar 0.28
+2^137-13 gmpvar 0.28
+2^140-27 gmpvar 0.28
+2^141-9 gmpvar 0.28
+2^150-5 gmpvar 0.28
+2^152-17 gmpvar 0.28
+2^158-15 gmpvar 0.28
+2^171-19 gmpvar 0.28
+2^174-17 gmpvar 0.28
+2^190-11 gmpvar 0.28
+2^192-2^64-1 gmpsec 0.28
+2^129-25 gmpvar 0.29
+2^137-13 gmpvar 0.30
+2^255-19 gmpvar 0.32
+2^255-2^4-2^1-1 gmpvar 0.32
+2^255-765 gmpvar 0.32
+2^256-2^224+2^192+2^96-1 gmpvar 0.32
+2^171-19 gmpvar 0.33
+2^194-33 gmpvar 0.33
+2^198-17 gmpvar 0.33
+2^216-2^108-1 gmpvar 0.33
+2^221-3 gmpvar 0.33
+2^222-117 gmpvar 0.33
+2^224-2^96+1 gmpvar 0.33
+2^255-2^4-2^1-1 gmpvar 0.33
+2^255-765 gmpvar 0.33
+2^256-189 gmpvar 0.33
+2^256-2^224+2^192+2^96-1 gmpvar 0.33
+2^256-2^32-977 gmpvar 0.33
+2^194-33 gmpvar 0.34
+2^196-15 gmpvar 0.34
+2^198-17 gmpvar 0.34
+2^205-45*2^198-1 gmpvar 0.34
+2^206-5 gmpvar 0.34
+2^212-29 gmpvar 0.34
+2^213-3 gmpvar 0.34
+2^216-2^108-1 gmpvar 0.34
+2^221-3 gmpvar 0.34
+2^222-117 gmpvar 0.34
+2^224-2^96+1 gmpvar 0.34
+2^226-5 gmpvar 0.34
+2^230-27 gmpvar 0.34
+2^235-15 gmpvar 0.34
+2^243-9 gmpvar 0.34
+2^251-9 gmpvar 0.34
+2^254-127*2^240-1 gmpvar 0.34
+2^256-189 gmpvar 0.34
+2^256-2^32-977 gmpvar 0.34
+2^256-88*2^240-1 gmpvar 0.34
+2^196-15 gmpvar 0.35
+2^205-45*2^198-1 gmpvar 0.35
+2^212-29 gmpvar 0.35
+2^216-2^108-1 gmpvar 0.35
+2^222-117 gmpvar 0.35
+2^230-27 gmpvar 0.35
+2^235-15 gmpvar 0.35
+2^254-127*2^240-1 gmpvar 0.35
+2^256-2^32-977 gmpvar 0.35
+2^205-45*2^198-1 gmpvar 0.36
+2^243-9 gmpvar 0.36
+2^256-88*2^240-1 gmpvar 0.36
+2^190-11 gmpsec 0.37
+2^191-19 gmpsec 0.37
+2^256-189 gmpsec 0.37
+2^256-2^224+2^192+2^96-1 gmpsec 0.37
+2^256-2^32-977 gmpsec 0.37
+2^256-88*2^240-1 gmpsec 0.37
+2^129-25 gmpsec 0.38
+2^130-5 gmpsec 0.38
+2^137-13 gmpsec 0.38
+2^140-27 gmpsec 0.38
+2^141-9 gmpsec 0.38
+2^150-3 gmpsec 0.38
+2^150-5 gmpsec 0.38
+2^152-17 gmpsec 0.38
+2^158-15 gmpsec 0.38
+2^165-25 gmpsec 0.38
+2^166-5 gmpsec 0.38
+2^174-17 gmpsec 0.38
+2^174-3 gmpsec 0.38
+2^189-25 gmpsec 0.38
+2^190-11 gmpsec 0.38
+2^191-19 gmpsec 0.38
+2^256-189 gmpsec 0.38
+2^256-2^224+2^192+2^96-1 gmpsec 0.38
+2^256-2^32-977 gmpsec 0.38
+2^256-88*2^240-1 gmpsec 0.38
+2^137-13 gmpsec 0.39
+2^140-27 gmpsec 0.39
+2^158-15 gmpsec 0.39
+2^165-25 gmpsec 0.39
+2^166-5 gmpsec 0.39
+2^171-19 gmpsec 0.39
+2^174-17 gmpsec 0.39
+2^174-3 gmpsec 0.39
+2^189-25 gmpsec 0.39
+2^256-189 gmpsec 0.39
+2^137-13 gmpsec 0.40
+2^256-2^224+2^192+2^96-1 gmpsec 0.41
+2^266-3 gmpvar 0.42
+2^285-9 gmpvar 0.42
+2^291-19 gmpvar 0.42
+2^251-9 gmpvar 0.43
+2^285-9 gmpvar 0.43
+2^291-19 gmpvar 0.43
+2^291-19 gmpvar 0.44
+2^266-3 gmpvar 0.45
+2^285-9 gmpvar 0.45
+2^384-2^128-2^96+2^32-1 gmpvar 0.45
+2^384-317 gmpvar 0.45
+2^384-5*2^368-1 gmpvar 0.45
+2^384-79*2^376-1 gmpvar 0.45
+2^384-2^128-2^96+2^32-1 gmpvar 0.46
+2^384-317 gmpvar 0.46
+2^384-79*2^376-1 gmpvar 0.46
+2^255-19 gmpsec 0.47
+2^255-2^4-2^1-1 gmpsec 0.47
+2^255-765 gmpsec 0.47
+2^384-317 gmpvar 0.47
+2^384-5*2^368-1 gmpvar 0.47
+2^384-79*2^376-1 gmpvar 0.47
+2^255-19 gmpsec 0.48
+2^255-2^4-2^1-1 gmpsec 0.48
+2^255-765 gmpsec 0.48
+2^212-29 gmpsec 0.49
+2^213-3 gmpsec 0.49
+2^216-2^108-1 gmpsec 0.49
+2^221-3 gmpsec 0.49
+2^224-2^96+1 gmpsec 0.49
+2^226-5 gmpsec 0.49
+2^230-27 gmpsec 0.49
+2^235-15 gmpsec 0.49
+2^243-9 gmpsec 0.49
+2^254-127*2^240-1 gmpsec 0.49
+2^255-765 gmpsec 0.49
+2^383-187 gmpvar 0.49
+2^194-33 gmpsec 0.50
+2^196-15 gmpsec 0.50
+2^205-45*2^198-1 gmpsec 0.50
+2^206-5 gmpsec 0.50
+2^212-29 gmpsec 0.50
+2^213-3 gmpsec 0.50
+2^216-2^108-1 gmpsec 0.50
+2^222-117 gmpsec 0.50
+2^224-2^96+1 gmpsec 0.50
+2^226-5 gmpsec 0.50
+2^230-27 gmpsec 0.50
+2^235-15 gmpsec 0.50
+2^243-9 gmpsec 0.50
+2^251-9 gmpsec 0.50
+2^254-127*2^240-1 gmpsec 0.50
+2^383-187 gmpvar 0.50
+2^383-31 gmpvar 0.50
+2^198-17 gmpsec 0.51
+2^213-3 gmpsec 0.51
+2^221-3 gmpsec 0.51
+2^224-2^96+1 gmpsec 0.51
+2^226-5 gmpsec 0.51
+2^230-27 gmpsec 0.51
+2^235-15 gmpsec 0.51
+2^243-9 gmpsec 0.51
+2^254-127*2^240-1 gmpsec 0.51
+2^383-421 gmpvar 0.51
+2^198-17 gmpsec 0.52
+2^206-5 gmpsec 0.52
+2^221-3 gmpsec 0.52
+2^251-9 gmpsec 0.52
+2^322-2^161-1 gmpvar 0.52
+2^336-17 gmpvar 0.52
+2^336-3 gmpvar 0.52
+2^338-15 gmpvar 0.52
+2^369-25 gmpvar 0.52
+2^379-19 gmpvar 0.52
+2^382-105 gmpvar 0.52
+2^384-2^128-2^96+2^32-1 fiat_montgomery64 0.52
+2^198-17 gmpsec 0.53
+2^321-9 gmpvar 0.53
+2^322-2^161-1 gmpvar 0.53
+2^336-3 gmpvar 0.53
+2^338-15 gmpvar 0.53
+2^369-25 gmpvar 0.53
+2^379-19 gmpvar 0.53
+2^382-105 gmpvar 0.53
+2^383-421 gmpvar 0.53
+2^448-2^224-1 gmpvar 0.53
+2^336-17 gmpvar 0.54
+2^379-19 gmpvar 0.54
+2^127-1 gmpxx 0.55
+2^382-105 gmpvar 0.55
+2^448-2^224-1 gmpvar 0.55
+2^127-1 gmpxx 0.56
+2^206-5 gmpsec 0.58
+2^401-31 gmpvar 0.59
+2^413-21 gmpvar 0.59
+2^414-17 gmpvar 0.59
+2^416-2^208-1 gmpvar 0.59
+2^444-17 gmpvar 0.59
+2^127-1 gmpxx 0.60
+2^389-21 gmpvar 0.60
+2^401-31 gmpvar 0.60
+2^413-21 gmpvar 0.60
+2^414-17 gmpvar 0.60
+2^416-2^208-1 gmpvar 0.60
+2^384-317 gmpsec 0.61
+2^389-21 gmpvar 0.61
+2^401-31 gmpvar 0.61
+2^414-17 gmpvar 0.61
+2^416-2^208-1 gmpvar 0.61
+2^444-17 gmpvar 0.61
+2^512-491*2^496-1 gmpvar 0.61
+2^512-569 gmpvar 0.61
+2^384-2^128-2^96+2^32-1 gmpsec 0.62
+2^384-317 gmpsec 0.62
+2^384-5*2^368-1 gmpsec 0.62
+2^384-79*2^376-1 gmpsec 0.62
+2^512-491*2^496-1 gmpvar 0.62
+2^512-569 gmpvar 0.62
+2^512-491*2^496-1 gmpvar 0.63
+2^266-3 gmpsec 0.64
+2^285-9 gmpsec 0.64
+2^291-19 gmpsec 0.64
+2^511-481 gmpvar 0.64
+2^285-9 gmpsec 0.65
+2^384-2^128-2^96+2^32-1 gmpsec 0.65
+2^511-187 gmpvar 0.65
+2^511-481 gmpvar 0.65
+2^266-3 gmpsec 0.66
+2^291-19 gmpsec 0.66
+2^285-9 gmpsec 0.67
+2^511-481 gmpvar 0.67
+2^137-13 gmpxx 0.68
+2^291-19 gmpsec 0.68
+2^450-2^225-1 gmpvar 0.68
+2^468-17 gmpvar 0.68
+2^480-2^240-1 gmpvar 0.68
+2^489-21 gmpvar 0.68
+2^495-31 gmpvar 0.68
+2^510-290*2^496-1 gmpvar 0.68
+2^137-13 gmpxx 0.69
+2^140-27 gmpxx 0.69
+2^141-9 gmpxx 0.69
+2^150-5 gmpxx 0.69
+2^450-2^225-1 gmpvar 0.69
+2^468-17 gmpvar 0.69
+2^480-2^240-1 gmpvar 0.69
+2^488-17 gmpvar 0.69
+2^489-21 gmpvar 0.69
+2^495-31 gmpvar 0.69
+2^510-290*2^496-1 gmpvar 0.69
+2^137-13 gmpxx 0.70
+2^141-9 gmpxx 0.70
+2^150-3 gmpxx 0.70
+2^150-5 gmpxx 0.70
+2^152-17 gmpxx 0.70
+2^450-2^225-1 gmpvar 0.70
+2^452-3 gmpvar 0.70
+2^468-17 gmpvar 0.70
+2^488-17 gmpvar 0.70
+2^150-3 gmpxx 0.71
+2^150-5 gmpxx 0.71
+2^158-15 gmpxx 0.71
+2^452-3 gmpvar 0.71
+2^468-17 gmpvar 0.71
+2^129-25 gmpxx 0.72
+2^130-5 gmpxx 0.72
+2^158-15 gmpxx 0.72
+2^165-25 gmpxx 0.72
+2^166-5 gmpxx 0.72
+2^174-17 gmpxx 0.72
+2^130-5 gmpxx 0.73
+2^152-17 gmpxx 0.73
+2^165-25 gmpxx 0.73
+2^166-5 gmpxx 0.73
+2^171-19 gmpxx 0.73
+2^174-17 gmpxx 0.73
+2^174-3 gmpxx 0.73
+2^191-19 gmpxx 0.73
+2^192-2^64-1 gmpxx 0.73
+2^452-3 gmpvar 0.73
+2^129-25 gmpxx 0.74
+2^130-5 gmpxx 0.74
+2^166-5 gmpxx 0.74
+2^171-19 gmpxx 0.74
+2^174-17 gmpxx 0.74
+2^189-25 gmpxx 0.74
+2^171-19 gmpxx 0.75
+2^189-25 gmpxx 0.75
+2^190-11 gmpxx 0.75
+2^191-19 gmpxx 0.75
+2^383-187 gmpsec 0.75
+2^383-31 gmpsec 0.75
+2^383-421 gmpsec 0.75
+2^189-25 gmpxx 0.76
+2^190-11 gmpxx 0.76
+2^383-187 gmpsec 0.76
+2^129-25 gmpxx 0.77
+2^448-2^224-1 gmpsec 0.77
+2^322-2^161-1 gmpsec 0.78
+2^448-2^224-1 gmpsec 0.78
+2^150-5 gmpxx 0.79
+2^321-9 gmpsec 0.79
+2^322-2^161-1 gmpsec 0.79
+2^336-17 gmpsec 0.79
+2^336-3 gmpsec 0.79
+2^338-15 gmpsec 0.79
+2^369-25 gmpsec 0.79
+2^379-19 gmpsec 0.79
+2^382-105 gmpsec 0.79
+2^322-2^161-1 gmpsec 0.80
+2^336-17 gmpsec 0.80
+2^336-3 gmpsec 0.80
+2^338-15 gmpsec 0.80
+2^369-25 gmpsec 0.80
+2^379-19 gmpsec 0.80
+2^382-105 gmpsec 0.80
+2^321-9 gmpsec 0.81
+2^322-2^161-1 gmpsec 0.81
+2^382-105 gmpsec 0.81
+2^521-1 gmpvar 0.81
+2^198-17 gmpxx 0.82
+2^206-5 gmpxx 0.82
+2^212-29 gmpxx 0.82
+2^521-1 gmpvar 0.82
+2^196-15 gmpxx 0.83
+2^206-5 gmpxx 0.83
+2^212-29 gmpxx 0.83
+2^213-3 gmpxx 0.83
+2^222-117 gmpxx 0.83
+2^336-17 gmpsec 0.83
+2^196-15 gmpxx 0.84
+2^198-17 gmpxx 0.84
+2^221-3 gmpxx 0.84
+2^222-117 gmpxx 0.84
+2^256-189 gmpxx 0.84
+2^256-2^224+2^192+2^96-1 gmpxx 0.84
+2^256-2^32-977 gmpxx 0.84
+2^256-88*2^240-1 gmpxx 0.84
+2^521-1 gmpvar 0.84
+2^196-15 gmpxx 0.85
+2^198-17 gmpxx 0.85
+2^206-5 gmpxx 0.85
+2^213-3 gmpxx 0.85
+2^221-3 gmpxx 0.85
+2^222-117 gmpxx 0.85
+2^226-5 gmpxx 0.85
+2^255-19 gmpxx 0.85
+2^255-2^4-2^1-1 gmpxx 0.85
+2^256-189 gmpxx 0.85
+2^256-2^32-977 gmpxx 0.85
+2^256-88*2^240-1 gmpxx 0.85
+2^198-17 gmpxx 0.86
+2^205-45*2^198-1 gmpxx 0.86
+2^212-29 gmpxx 0.86
+2^216-2^108-1 gmpxx 0.86
+2^226-5 gmpxx 0.86
+2^230-27 gmpxx 0.86
+2^255-19 gmpxx 0.86
+2^255-2^4-2^1-1 gmpxx 0.86
+2^255-765 gmpxx 0.86
+2^256-2^224+2^192+2^96-1 gmpxx 0.86
+2^256-88*2^240-1 gmpxx 0.86
+2^205-45*2^198-1 gmpxx 0.87
+2^216-2^108-1 gmpxx 0.87
+2^224-2^96+1 gmpxx 0.87
+2^226-5 gmpxx 0.87
+2^230-27 gmpxx 0.87
+2^235-15 gmpxx 0.87
+2^243-9 gmpxx 0.87
+2^251-9 gmpxx 0.87
+2^255-19 gmpxx 0.87
+2^255-2^4-2^1-1 gmpxx 0.87
+2^255-765 gmpxx 0.87
+2^256-189 gmpxx 0.87
+2^194-33 gmpxx 0.88
+2^216-2^108-1 gmpxx 0.88
+2^224-2^96+1 gmpxx 0.88
+2^243-9 gmpxx 0.88
+2^251-9 gmpxx 0.88
+2^254-127*2^240-1 gmpxx 0.88
+2^255-765 gmpxx 0.88
+2^256-2^224+2^192+2^96-1 gmpxx 0.88
+2^336-3 gmpsec 0.88
+2^221-3 gmpxx 0.89
+2^224-2^96+1 gmpxx 0.89
+2^251-9 gmpxx 0.89
+2^254-127*2^240-1 gmpxx 0.89
+2^243-9 gmpxx 0.90
+2^130-5 gmpxx 0.91
+2^512-491*2^496-1 gmpsec 0.95
+2^512-569 gmpsec 0.95
+2^384-2^128-2^96+2^32-1 gmpxx 0.96
+2^384-317 gmpxx 0.96
+2^384-79*2^376-1 gmpxx 0.96
+2^389-21 gmpsec 0.96
+2^401-31 gmpsec 0.96
+2^413-21 gmpsec 0.96
+2^414-17 gmpsec 0.96
+2^416-2^208-1 gmpsec 0.96
+2^444-17 gmpsec 0.96
+2^235-15 gmpxx 0.97
+2^285-9 gmpxx 0.97
+2^384-2^128-2^96+2^32-1 gmpxx 0.97
+2^384-317 gmpxx 0.97
+2^384-5*2^368-1 gmpxx 0.97
+2^389-21 gmpsec 0.97
+2^401-31 gmpsec 0.97
+2^413-21 gmpsec 0.97
+2^416-2^208-1 gmpsec 0.97
+2^512-491*2^496-1 gmpsec 0.97
+2^512-569 gmpsec 0.97
+2^194-33 gmpxx 0.98
+2^266-3 gmpxx 0.98
+2^285-9 gmpxx 0.98
+2^291-19 gmpxx 0.98
+2^384-2^128-2^96+2^32-1 gmpxx 0.98
+2^384-5*2^368-1 gmpxx 0.98
+2^384-79*2^376-1 gmpxx 0.98
+2^401-31 gmpsec 0.98
+2^414-17 gmpsec 0.98
+2^266-3 gmpxx 0.99
+2^291-19 gmpxx 0.99
+2^384-2^128-2^96+2^32-1 gmpxx 0.99
+2^384-317 gmpxx 0.99
+2^285-9 gmpxx 1.00
+2^291-19 gmpxx 1.00
+2^291-19 gmpxx 1.01
+2^383-421 gmpxx 1.03
+2^383-31 gmpxx 1.04
+2^448-2^224-1 gmpxx 1.04
+2^336-3 gmpxx 1.05
+2^383-187 gmpxx 1.05
+2^448-2^224-1 gmpxx 1.05
+2^336-17 gmpxx 1.06
+2^336-3 gmpxx 1.06
+2^338-15 gmpxx 1.06
+2^369-25 gmpxx 1.06
+2^379-19 gmpxx 1.06
+2^336-17 gmpxx 1.07
+2^336-3 gmpxx 1.07
+2^369-25 gmpxx 1.07
+2^379-19 gmpxx 1.07
+2^382-105 gmpxx 1.07
+2^383-31 gmpxx 1.07
+2^383-421 gmpxx 1.07
+2^448-2^224-1 gmpxx 1.07
+2^336-17 gmpxx 1.08
+2^369-25 gmpxx 1.08
+2^382-105 gmpxx 1.08
+2^336-17 gmpxx 1.09
+2^338-15 gmpxx 1.09
+2^338-15 gmpxx 1.10
+2^379-19 gmpxx 1.10
+2^511-481 gmpsec 1.10
+2^511-187 gmpsec 1.11
+2^511-481 gmpsec 1.11
+2^369-25 gmpxx 1.12
+2^511-187 gmpsec 1.12
+2^322-2^161-1 gmpxx 1.13
+2^512-569 gmpxx 1.13
+2^512-491*2^496-1 gmpxx 1.14
+2^512-569 gmpxx 1.14
+2^321-9 gmpxx 1.15
+2^414-17 gmpxx 1.15
+2^416-2^208-1 gmpxx 1.15
+2^512-569 gmpxx 1.15
+2^401-31 gmpxx 1.16
+2^413-21 gmpxx 1.16
+2^414-17 gmpxx 1.16
+2^416-2^208-1 gmpxx 1.16
+2^444-17 gmpxx 1.16
+2^480-2^240-1 gmpsec 1.16
+2^488-17 gmpsec 1.16
+2^512-491*2^496-1 gmpxx 1.16
+2^321-9 gmpxx 1.17
+2^322-2^161-1 gmpxx 1.17
+2^389-21 gmpxx 1.17
+2^401-31 gmpxx 1.17
+2^413-21 gmpxx 1.17
+2^416-2^208-1 gmpxx 1.17
+2^444-17 gmpxx 1.17
+2^450-2^225-1 gmpsec 1.17
+2^452-3 gmpsec 1.17
+2^468-17 gmpsec 1.17
+2^480-2^240-1 gmpsec 1.17
+2^488-17 gmpsec 1.17
+2^489-21 gmpsec 1.17
+2^495-31 gmpsec 1.17
+2^510-290*2^496-1 gmpsec 1.17
+2^512-491*2^496-1 gmpxx 1.17
+2^512-569 gmpxx 1.17
+2^401-31 gmpxx 1.18
+2^416-2^208-1 gmpxx 1.18
+2^444-17 gmpxx 1.18
+2^450-2^225-1 gmpsec 1.18
+2^452-3 gmpsec 1.18
+2^468-17 gmpsec 1.18
+2^480-2^240-1 gmpsec 1.18
+2^488-17 gmpsec 1.18
+2^495-31 gmpsec 1.18
+2^510-290*2^496-1 gmpsec 1.18
+2^511-187 gmpxx 1.20
+2^511-481 gmpxx 1.20
+2^511-187 gmpxx 1.21
+2^511-481 gmpxx 1.21
+2^489-21 gmpsec 1.24
+2^510-290*2^496-1 gmpxx 1.24
+2^468-17 gmpxx 1.25
+2^480-2^240-1 gmpxx 1.25
+2^468-17 gmpxx 1.26
+2^480-2^240-1 gmpxx 1.26
+2^489-21 gmpxx 1.26
+2^495-31 gmpxx 1.26
+2^510-290*2^496-1 gmpxx 1.26
+2^414-17 gmpxx 1.27
+2^468-17 gmpxx 1.27
+2^488-17 gmpxx 1.27
+2^495-31 gmpxx 1.27
+2^510-290*2^496-1 gmpxx 1.27
+2^489-21 gmpsec 1.28
+2^489-21 gmpxx 1.28
+2^452-3 gmpxx 1.29
+2^489-21 gmpxx 1.29
+2^480-2^240-1 gmpxx 1.31
+2^452-3 gmpxx 1.32
+2^450-2^225-1 gmpxx 1.33
+2^510-290*2^496-1 gmpxx 1.33
+2^450-2^225-1 gmpxx 1.34
+2^450-2^225-1 gmpsec 1.35
+2^450-2^225-1 gmpxx 1.35
+2^521-1 gmpxx 1.38
+2^521-1 gmpsec 1.39
+2^521-1 gmpxx 1.39
+2^521-1 gmpsec 1.40
+2^521-1 gmpxx 1.40
diff --git a/measurements/2018-11-03-gcc/setup b/measurements/2018-11-03-gcc/setup
new file mode 100644
index 000000000..de6939206
--- /dev/null
+++ b/measurements/2018-11-03-gcc/setup
@@ -0,0 +1,34 @@
+gcc (Debian 6.3.0-18) 6.3.0 20170516
+Copyright (C) 2016 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+Architecture: x86_64
+CPU op-mode(s): 32-bit, 64-bit
+Byte Order: Little Endian
+CPU(s): 16
+On-line CPU(s) list: 0-15
+Thread(s) per core: 2
+Core(s) per socket: 8
+Socket(s): 1
+NUMA node(s): 1
+Vendor ID: GenuineIntel
+CPU family: 6
+Model: 63
+Model name: Intel(R) Xeon(R) CPU @ 2.30GHz
+Stepping: 0
+CPU MHz: 2300.000
+BogoMIPS: 4600.00
+Hypervisor vendor: KVM
+Virtualization type: full
+L1d cache: 32K
+L1i cache: 32K
+L2 cache: 256K
+L3 cache: 46080K
+NUMA node0 CPU(s): 0-15
+Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms xsaveopt
+commit 0b8080dfb1021c6fb24e922ee4eea22364974f51
+Author: Jason Gross <jgross@mit.edu>
+Date: Fri Nov 3 08:13:40 2017 -0400
+
+ Update display logs and c files
diff --git a/src/Specific/Framework/bench/fibe.c b/src/Specific/Framework/bench/fibe.c
index 9ad2997b9..b29396fde 100644
--- a/src/Specific/Framework/bench/fibe.c
+++ b/src/Specific/Framework/bench/fibe.c
@@ -41,6 +41,25 @@ static const limb_t limb_weight_gaps[modulus_limbs] = limb_weight_gaps_array;
#else
+static uint32_t _mulx_u32(uint32_t a, uint32_t b, uint32_t *high) {
+ uint64_t x = (uint64_t)a * b;
+ *high = (uint32_t) (x >> 32);
+ return (uint32_t) x;
+}
+
+static uint32_t _addcarryx_u32(uint8_t c, uint32_t a, uint32_t b, uint32_t *low) {
+ uint64_t x = (uint64_t)a + b + c;
+ *low = (uint32_t) x;
+ return (uint32_t) (x>>32);
+}
+
+static uint32_t _subborrow_u32(uint8_t c, uint32_t a, uint32_t b, uint32_t *low) {
+ uint64_t t = ((uint64_t) b + c);
+ uint64_t x = a-t;
+ *low = (uint32_t) x;
+ return (uint8_t) (x>>63);
+}
+
static uint64_t _mulx_u64(uint64_t a, uint64_t b, uint64_t *high) {
uint128_t x = (uint128_t)a * b;
*high = (uint64_t) (x >> 64);
@@ -215,32 +234,45 @@ int main() {
// }
// return 0;
- {
- const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
- const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-
- uint8_t a[32] = {0}, b[32] = {0};
- uint8_t* in = a;
- uint8_t* out = b;
- a[0] = 1;
-
- for (int i = 0; i < 200; i++) {
- in[0] &= 248;
- in[31] &= 127;
- in[31] |= 64;
-
- crypto_scalarmult(out, in, 256, basepoint);
- uint8_t* t = out;
- out = in;
- in = t;
- }
-
- for (int i = 0; i < 32; i++) {
- if (in[i] != expected[i]) {
- return (i+1);
+ //{
+ // const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
+ // const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+
+ // uint8_t a[32] = {0}, b[32] = {0};
+ // uint8_t* in = a;
+ // uint8_t* out = b;
+ // a[0] = 1;
+
+ // for (int i = 0; i < 200; i++) {
+ // in[0] &= 248;
+ // in[31] &= 127;
+ // in[31] |= 64;
+
+ // crypto_scalarmult(out, in, 256, basepoint);
+ // uint8_t* t = out;
+ // out = in;
+ // in = t;
+ // }
+
+ // for (int i = 0; i < 32; i++) {
+ // if (in[i] != expected[i]) {
+ // return (i+1);
+ // }
+ // }
+ // return 0;
+ //}
+
+ uint8_t secret[32];
+ uint8_t point[modulus_bytes];
+
+ for (int i = 0; i < modulus_bytes; i++) { point[modulus_bytes-i] = i; }
+
+ for (int i = 0; i < 1000; i++) {
+ for (int j = 0; j<modulus_bytes; j++) {
+ secret[j%32] ^= point[j];
}
- }
- return 0;
+ crypto_scalarmult(point, secret, 32*8, point);
}
+ return 0;
}
diff --git a/src/Specific/Framework/bench/gmpsec.c b/src/Specific/Framework/bench/gmpsec.c
index b31676900..d3cf3aa56 100644
--- a/src/Specific/Framework/bench/gmpsec.c
+++ b/src/Specific/Framework/bench/gmpsec.c
@@ -165,14 +165,15 @@ static void crypto_scalarmult(uint8_t *out, const uint8_t *secret, size_t secret
}
- fe_inv(nqz, nqz);
- fe_mul(nqx, nqx, nqz);
-
for (size_t i = 0; i < modulus_bytes; i++) { out[i] = 0; }
for (size_t i = 0; i < 8*modulus_bytes; i++) {
mp_limb_t bit = (nqx[i/GMP_LIMB_BITS] >> (i%GMP_LIMB_BITS))&1;
out [i/8] |= bit<<(i%8);
}
+ for (size_t i = 0; i < 8*modulus_bytes; i++) {
+ mp_limb_t bit = (nqz[i/GMP_LIMB_BITS] >> (i%GMP_LIMB_BITS))&1;
+ out [i/8] ^= bit<<(i%8);
+ }
}
@@ -185,32 +186,44 @@ int main() {
// printf("0x"); for (int i = 31; i>=0; --i) { printf("%02x", out[i]); }; printf("\n");
// }
- {
- const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
- const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-
- uint8_t a[32] = {0}, b[32] = {0};
- uint8_t* in = a;
- uint8_t* out = b;
- a[0] = 1;
-
- for (int i = 0; i < 200; i++) {
- in[0] &= 248;
- in[31] &= 127;
- in[31] |= 64;
-
- crypto_scalarmult(out, in, 256, basepoint);
- uint8_t* t = out;
- out = in;
- in = t;
- }
-
- for (int i = 0; i < 32; i++) {
- if (in[i] != expected[i]) {
- return (i+1);
- }
- }
- return 0;
- }
+ // {
+ // const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
+ // const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+
+ // uint8_t a[32] = {0}, b[32] = {0};
+ // uint8_t* in = a;
+ // uint8_t* out = b;
+ // a[0] = 1;
+
+ // for (int i = 0; i < 200; i++) {
+ // in[0] &= 248;
+ // in[31] &= 127;
+ // in[31] |= 64;
+
+ // crypto_scalarmult(out, in, 256, basepoint);
+ // uint8_t* t = out;
+ // out = in;
+ // in = t;
+ // }
+
+ // for (int i = 0; i < 32; i++) {
+ // if (in[i] != expected[i]) {
+ // return (i+1);
+ // }
+ // }
+ // return 0;
+ // }
+ uint8_t secret[32];
+ uint8_t point[modulus_bytes];
+
+ for (int i = 0; i < modulus_bytes; i++) { point[modulus_bytes-i] = i; }
+
+ for (int i = 0; i < 1000; i++) {
+ for (int j = 0; j<modulus_bytes; j++) {
+ secret[j%32] ^= point[j];
+ }
+ crypto_scalarmult(point, secret, 32*8, point);
+ }
+ return 0;
}
diff --git a/src/Specific/Framework/bench/gmpvar.c b/src/Specific/Framework/bench/gmpvar.c
index 9c79dace8..3c79d4212 100644
--- a/src/Specific/Framework/bench/gmpvar.c
+++ b/src/Specific/Framework/bench/gmpvar.c
@@ -164,14 +164,15 @@ static void crypto_scalarmult(uint8_t *out, const uint8_t *secret, size_t secret
}
- fe_inv(nqz, nqz);
- fe_mul(nqx, nqx, nqz);
-
for (size_t i = 0; i < modulus_bytes; i++) { out[i] = 0; }
for (size_t i = 0; i < 8*modulus_bytes; i++) {
mp_limb_t bit = (nqx[i/GMP_LIMB_BITS] >> (i%GMP_LIMB_BITS))&1;
out [i/8] |= bit<<(i%8);
}
+ for (size_t i = 0; i < 8*modulus_bytes; i++) {
+ mp_limb_t bit = (nqz[i/GMP_LIMB_BITS] >> (i%GMP_LIMB_BITS))&1;
+ out [i/8] ^= bit<<(i%8);
+ }
}
@@ -184,32 +185,44 @@ int main() {
// printf("0x"); for (int i = 31; i>=0; --i) { printf("%02x", out[i]); }; printf("\n");
// }
- {
- const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
- const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-
- uint8_t a[32] = {0}, b[32] = {0};
- uint8_t* in = a;
- uint8_t* out = b;
- a[0] = 1;
-
- for (int i = 0; i < 200; i++) {
- in[0] &= 248;
- in[31] &= 127;
- in[31] |= 64;
-
- crypto_scalarmult(out, in, 256, basepoint);
- uint8_t* t = out;
- out = in;
- in = t;
- }
-
- for (int i = 0; i < 32; i++) {
- if (in[i] != expected[i]) {
- return (i+1);
- }
- }
- return 0;
- }
+ // {
+ // const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
+ // const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+
+ // uint8_t a[32] = {0}, b[32] = {0};
+ // uint8_t* in = a;
+ // uint8_t* out = b;
+ // a[0] = 1;
+
+ // for (int i = 0; i < 200; i++) {
+ // in[0] &= 248;
+ // in[31] &= 127;
+ // in[31] |= 64;
+
+ // crypto_scalarmult(out, in, 256, basepoint);
+ // uint8_t* t = out;
+ // out = in;
+ // in = t;
+ // }
+
+ // for (int i = 0; i < 32; i++) {
+ // if (in[i] != expected[i]) {
+ // return (i+1);
+ // }
+ // }
+ // return 0;
+ // }
+ uint8_t secret[32];
+ uint8_t point[modulus_bytes];
+
+ for (int i = 0; i < modulus_bytes; i++) { point[modulus_bytes-i] = i; }
+
+ for (int i = 0; i < 1000; i++) {
+ for (int j = 0; j<modulus_bytes; j++) {
+ secret[j%32] ^= point[j];
+ }
+ crypto_scalarmult(point, secret, 32*8, point);
+ }
+ return 0;
}
diff --git a/src/Specific/Framework/bench/gmpxx.cpp b/src/Specific/Framework/bench/gmpxx.cpp
index 08f00e9af..322d54b52 100644
--- a/src/Specific/Framework/bench/gmpxx.cpp
+++ b/src/Specific/Framework/bench/gmpxx.cpp
@@ -89,52 +89,65 @@ static void crypto_scalarmult(uint8_t *out, const uint8_t *secret, size_t secret
// remainder -> modulo
if (z < 0) { z += q; }
- if (mpz_invert(z.get_mpz_t(), z.get_mpz_t(), q.get_mpz_t())) {
- x = x*z % q;
- } else {
- x = 0;
- }
+ // if (mpz_invert(z.get_mpz_t(), z.get_mpz_t(), q.get_mpz_t())) {
+ // x = x*z % q;
+ // } else {
+ // x = 0;
+ // }
- // remainder -> modulo
- if (x < 0) { x += q; }
+ // // remainder -> modulo
+ // if (x < 0) { x += q; }
for (size_t i = 0; i<modulus_bytes; i++) { out[i] = mpz_class(x>>(8*i)).get_ui()&0xff; }
+ for (size_t i = 0; i<modulus_bytes; i++) { out[i] ^= mpz_class(z>>(8*i)).get_ui()&0xff; }
}
int main() {
- {
- uint8_t out[modulus_bytes] = {0};
- uint8_t point[modulus_bytes] = {9};
- uint8_t secret[modulus_bytes] = {1};
- crypto_scalarmult(out, secret, 256, point);
- // printf("0x"); for (int i = 31; i>=0; --i) { printf("%02x", out[i]); }; printf("\n");
- }
- {
- const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
- const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-
-
- uint8_t a[32] = {0}, b[32] = {0};
- uint8_t* in = a;
- uint8_t* out = b;
- a[0] = 1;
-
- for (int i = 0; i < 200; i++) {
- in[0] &= 248;
- in[31] &= 127;
- in[31] |= 64;
-
- crypto_scalarmult(out, in, 256, basepoint);
- uint8_t* t = out;
- out = in;
- in = t;
- }
-
- for (int i = 0; i < 32; i++) {
- if (in[i] != expected[i]) {
- return (i+1);
- }
- }
- return 0;
- }
+ // {
+ // uint8_t out[modulus_bytes] = {0};
+ // uint8_t point[modulus_bytes] = {9};
+ // uint8_t secret[modulus_bytes] = {1};
+ // crypto_scalarmult(out, secret, 256, point);
+ // // printf("0x"); for (int i = 31; i>=0; --i) { printf("%02x", out[i]); }; printf("\n");
+ // }
+ // {
+ // const uint8_t expected[32] = {0x89, 0x16, 0x1f, 0xde, 0x88, 0x7b, 0x2b, 0x53, 0xde, 0x54, 0x9a, 0xf4, 0x83, 0x94, 0x01, 0x06, 0xec, 0xc1, 0x14, 0xd6, 0x98, 0x2d, 0xaa, 0x98, 0x25, 0x6d, 0xe2, 0x3b, 0xdf, 0x77, 0x66, 0x1a};
+ // const uint8_t basepoint[32] = {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+
+
+ // uint8_t a[32] = {0}, b[32] = {0};
+ // uint8_t* in = a;
+ // uint8_t* out = b;
+ // a[0] = 1;
+
+ // for (int i = 0; i < 200; i++) {
+ // in[0] &= 248;
+ // in[31] &= 127;
+ // in[31] |= 64;
+
+ // crypto_scalarmult(out, in, 256, basepoint);
+ // uint8_t* t = out;
+ // out = in;
+ // in = t;
+ // }
+
+ // for (int i = 0; i < 32; i++) {
+ // if (in[i] != expected[i]) {
+ // return (i+1);
+ // }
+ // }
+ // return 0;
+ // }
+ uint8_t secret[32];
+ uint8_t point[modulus_bytes];
+
+ for (int i = 0; i < modulus_bytes; i++) { point[modulus_bytes-i] = i; }
+
+ for (int i = 0; i < 1000; i++) {
+ for (int j = 0; j<modulus_bytes; j++) {
+ secret[j%32] ^= point[j];
+ }
+ crypto_scalarmult(point, secret, 32*8, point);
+ }
+ return 0;
}