diff --git a/alg/ensemble/ensemble_test.go b/alg/ensemble/ensemble_test.go index 50285b1..3f9c674 100644 --- a/alg/ensemble/ensemble_test.go +++ b/alg/ensemble/ensemble_test.go @@ -1,11 +1,80 @@ package ensemble import ( + "encoding/json" + "io/ioutil" + "reflect" "testing" + "github.com/mmcloughlin/addchain/alg/exec" "github.com/mmcloughlin/addchain/internal/results" + "github.com/mmcloughlin/addchain/internal/test" ) +// TestResults confirms that chain lengths from every ensemble algorithm remain +// unchanged. This is intended to provide confidence when making risky changes +// or refactors. The results package has its own similar test, but this is +// focussed on verifying that the best recorded result is still the same. +// +// The test uses the "golden test" technique, where we dump +// known-good results into golden files and later verify that we get the same +// result. +func TestResults(t *testing.T) { + t.Parallel() + test.RequireLong(t) + + as := Ensemble() + for _, c := range results.Results { + c := c // scopelint + t.Run(c.Slug, func(t *testing.T) { + t.Parallel() + + // Execute. + ex := exec.NewParallel() + rs := ex.Execute(c.Target(), as) + + // Summarize results in map from algorithm name to program length. + got := map[string]int{} + for _, r := range rs { + if r.Err != nil { + t.Fatalf("error with %s: %v", r.Algorithm, r.Err) + } + got[r.Algorithm.String()] = len(r.Program) + } + + // If golden, write out results data file. + filename := test.GoldenName(c.Slug) + + if test.Golden() { + t.Logf("writing golden file %s", filename) + b, err := json.MarshalIndent(got, "", "\t") + if err != nil { + t.Fatal(err) + } + if err := ioutil.WriteFile(filename, b, 0644); err != nil { + t.Fatalf("write golden file: %v", err) + } + } + + // Load golden file. + b, err := ioutil.ReadFile(filename) + if err != nil { + t.Fatalf("read golden file: %v", err) + } + + var expect map[string]int + if err := json.Unmarshal(b, &expect); err != nil { + t.Fatal(err) + } + + // Verify equal. + if !reflect.DeepEqual(expect, got) { + t.Fatal("results do not match golden file") + } + }) + } +} + func BenchmarkResults(b *testing.B) { as := Ensemble() for _, c := range results.Results { diff --git a/alg/ensemble/testdata/curve25519_field.golden b/alg/ensemble/testdata/curve25519_field.golden new file mode 100644 index 0000000..c0cf7c9 --- /dev/null +++ b/alg/ensemble/testdata/curve25519_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 381, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 281, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 341, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 503, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 277, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 277, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 311, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 277, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 277, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 277, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 277, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 381, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 381, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 277, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 276, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 276, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 381, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 381, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 268, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 381, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 281, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 281, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 267, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 281, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 371, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 276, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 276, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 276, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 271, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 271, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 270, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 281, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 272, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 272, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 320, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 320, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 279, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 287, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 380, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 279, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 279, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 277, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 278, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 278, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 276, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 290, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 320, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 320, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 320, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 320, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 293, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 293, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 276, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 277, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 318, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 290, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 290, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 290, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 291, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 291, + "opt(runs(continued_fractions(binary)))": 268, + "opt(runs(continued_fractions(co_binary)))": 268, + "opt(runs(continued_fractions(dichotomic)))": 266, + "opt(runs(heuristic(use_first(halving,approximation))))": 268, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 270 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/curve25519_scalar.golden b/alg/ensemble/testdata/curve25519_scalar.golden new file mode 100644 index 0000000..8242721 --- /dev/null +++ b/alg/ensemble/testdata/curve25519_scalar.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 289, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 289, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 289, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 289, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 289, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 289, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 289, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 289, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 289, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 289, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 289, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 289, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 287, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 287, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 287, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 287, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 287, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 287, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 287, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 287, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 287, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 287, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 287, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 287, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 287, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 287, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 287, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 287, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 283, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 283, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 283, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 283, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 283, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 283, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 283, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 283, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 285, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 285, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 285, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 285, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 284, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 284, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 284, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 284, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 284, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 284, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 284, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 284, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 284, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 284, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 284, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 284, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 283, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 283, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 283, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 289, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 289, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 289, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 289, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 289, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 289, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 289, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 289, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 289, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 289, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 289, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 289, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 289, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 289, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 289, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 324, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 443, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 344, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 324, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 374, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 294, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 294, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 294, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 294, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 292, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 307, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 307, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 307, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 311, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 284, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 284, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 284, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 284, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 345, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 346, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 344, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 345, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 345, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 283, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 283, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 283, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 285, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 284, + "opt(runs(continued_fractions(binary)))": 289, + "opt(runs(continued_fractions(co_binary)))": 289, + "opt(runs(continued_fractions(dichotomic)))": 289, + "opt(runs(heuristic(use_first(halving,approximation))))": 289, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 289 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/goldilocks_field.golden b/alg/ensemble/testdata/goldilocks_field.golden new file mode 100644 index 0000000..8727bc9 --- /dev/null +++ b/alg/ensemble/testdata/goldilocks_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 671, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 671, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 490, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 490, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 492, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 492, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 473, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 473, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 671, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 671, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 462, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 668, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 464, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 464, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 463, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 464, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 502, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 490, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 490, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 482, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 484, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 492, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 492, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 470, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 478, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 489, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 473, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 473, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 515, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 515, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 468, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 472, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 484, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 489, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 489, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 481, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 483, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 486, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 491, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 491, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 469, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 477, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 488, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 561, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 561, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 561, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 561, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 561, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 487, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 487, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 465, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 473, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 487, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 509, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 509, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 507, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 507, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 507, + "opt(runs(continued_fractions(binary)))": 462, + "opt(runs(continued_fractions(co_binary)))": 462, + "opt(runs(continued_fractions(dichotomic)))": 461, + "opt(runs(heuristic(use_first(halving,approximation))))": 460, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 461 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p192_field.golden b/alg/ensemble/testdata/p192_field.golden new file mode 100644 index 0000000..bac37ff --- /dev/null +++ b/alg/ensemble/testdata/p192_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 217, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 217, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 218, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 218, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 228, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 228, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 257, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 257, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 217, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 217, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 203, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 217, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 217, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 203, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 217, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 218, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 218, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 210, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 215, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 228, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 228, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 206, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 214, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 225, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 257, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 257, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 205, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 227, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 217, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 217, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 205, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 226, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 253, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 217, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 217, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 209, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 211, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 214, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 227, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 227, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 205, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 224, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 241, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 241, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 241, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 256, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 256, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 204, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 226, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 253, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 221, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 221, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 219, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 219, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 219, + "opt(runs(continued_fractions(binary)))": 203, + "opt(runs(continued_fractions(co_binary)))": 203, + "opt(runs(continued_fractions(dichotomic)))": 203, + "opt(runs(heuristic(use_first(halving,approximation))))": 204, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 206 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p2213_field.golden b/alg/ensemble/testdata/p2213_field.golden new file mode 100644 index 0000000..29585b6 --- /dev/null +++ b/alg/ensemble/testdata/p2213_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 234, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 234, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 330, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 330, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 232, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 330, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 232, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 232, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 232, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 232, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 239, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 239, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 239, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 239, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 235, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 235, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 234, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 234, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 232, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 234, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 270, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 270, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 256, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 236, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 261, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 240, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 240, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 240, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 237, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 237, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 234, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 253, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 278, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 278, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 278, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 242, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 242, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 243, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 251, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 251, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 251, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 252, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 252, + "opt(runs(continued_fractions(binary)))": 232, + "opt(runs(continued_fractions(co_binary)))": 232, + "opt(runs(continued_fractions(dichotomic)))": 231, + "opt(runs(heuristic(use_first(halving,approximation))))": 231, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 234 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p222117_field.golden b/alg/ensemble/testdata/p222117_field.golden new file mode 100644 index 0000000..211d9db --- /dev/null +++ b/alg/ensemble/testdata/p222117_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 437, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 437, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 331, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 242, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 242, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 244, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 237, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 237, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 236, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 236, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 437, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 437, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 331, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 242, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 242, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 244, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 237, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 237, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 236, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 236, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 434, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 243, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 434, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 243, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 434, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 243, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 434, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 243, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 330, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 330, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 434, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 243, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 235, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 235, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 437, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 437, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 331, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 435, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 239, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 239, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 234, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 238, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 267, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 242, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 242, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 242, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 244, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 237, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 237, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 236, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 236, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 235, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 235, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 235, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 235, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 256, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 270, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 270, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 263, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 267, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 242, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 242, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 242, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 242, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 245, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 245, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 242, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 239, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 252, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 278, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 278, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 278, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 244, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 244, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 244, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 238, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 254, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 253, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 253, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 253, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 253, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 253, + "opt(runs(continued_fractions(binary)))": 235, + "opt(runs(continued_fractions(co_binary)))": 235, + "opt(runs(continued_fractions(dichotomic)))": 233, + "opt(runs(heuristic(use_first(halving,approximation))))": 235, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 235 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p224_field.golden b/alg/ensemble/testdata/p224_field.golden new file mode 100644 index 0000000..d436d54 --- /dev/null +++ b/alg/ensemble/testdata/p224_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 260, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 260, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 259, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 259, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 240, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 240, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 235, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 240, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 240, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 235, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 251, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 251, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 260, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 260, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 259, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 259, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 240, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 240, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 235, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 288, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 251, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 251, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 243, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 260, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 260, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 238, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 258, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 281, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 281, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 281, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 281, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 281, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 259, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 259, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 237, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 257, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 257, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 257, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 255, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 255, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 255, + "opt(runs(continued_fractions(binary)))": 235, + "opt(runs(continued_fractions(co_binary)))": 235, + "opt(runs(continued_fractions(dichotomic)))": 235, + "opt(runs(heuristic(use_first(halving,approximation))))": 234, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 234 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p2519_field.golden b/alg/ensemble/testdata/p2519_field.golden new file mode 100644 index 0000000..b083a86 --- /dev/null +++ b/alg/ensemble/testdata/p2519_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 498, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 498, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 376, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 496, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 273, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 273, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 273, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 275, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 267, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 267, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 266, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 271, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 267, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 298, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 375, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 375, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 264, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 335, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 265, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 265, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 265, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 266, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 266, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 263, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 265, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 498, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 498, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 265, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 376, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 496, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 272, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 272, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 264, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 361, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 273, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 273, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 273, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 275, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 267, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 267, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 266, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 266, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 271, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 270, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 270, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 264, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 267, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 298, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 306, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 306, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 283, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 283, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 371, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 273, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 273, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 273, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 273, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 273, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 273, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 269, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 269, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 281, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 315, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 315, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 315, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 315, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 284, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 284, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 272, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 269, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 307, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 286, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 286, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 286, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 286, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 287, + "opt(runs(continued_fractions(binary)))": 265, + "opt(runs(continued_fractions(co_binary)))": 265, + "opt(runs(continued_fractions(dichotomic)))": 263, + "opt(runs(heuristic(use_first(halving,approximation))))": 263, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 266 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p256_field.golden b/alg/ensemble/testdata/p256_field.golden new file mode 100644 index 0000000..4dcd344 --- /dev/null +++ b/alg/ensemble/testdata/p256_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 271, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 271, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 275, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 275, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 275, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 275, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 267, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 275, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 275, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 267, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 271, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 271, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 275, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 275, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 275, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 275, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 267, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 304, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 304, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 272, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 271, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 271, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 269, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 275, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 275, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 267, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 286, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 289, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 289, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 289, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 289, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 276, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 276, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 268, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 287, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 275, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 275, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 275, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 275, + "opt(runs(continued_fractions(binary)))": 267, + "opt(runs(continued_fractions(co_binary)))": 267, + "opt(runs(continued_fractions(dichotomic)))": 266, + "opt(runs(heuristic(use_first(halving,approximation))))": 266, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 266 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p256_scalar.golden b/alg/ensemble/testdata/p256_scalar.golden new file mode 100644 index 0000000..2137d73 --- /dev/null +++ b/alg/ensemble/testdata/p256_scalar.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 317, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 300, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 303, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 312, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 312, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 300, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 297, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 297, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 300, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 299, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 312, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 302, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 302, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 311, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 302, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 302, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 311, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 304, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 304, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 301, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 312, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 297, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 297, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 297, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 300, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 300, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 302, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 297, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 297, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 294, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 304, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 304, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 305, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 304, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 304, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 305, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 300, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 300, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 299, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 317, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 300, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 300, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 299, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 317, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 300, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 300, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 300, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 303, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 300, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 300, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 299, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 300, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 300, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 299, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 333, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 333, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 332, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 332, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 332, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 296, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 296, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 295, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 296, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 299, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 299, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 299, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 304, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 300, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 310, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 310, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 310, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 310, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 348, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 348, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 348, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 354, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 349, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 299, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 299, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 299, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 299, + "opt(runs(continued_fractions(binary)))": 299, + "opt(runs(continued_fractions(co_binary)))": 299, + "opt(runs(continued_fractions(dichotomic)))": 299, + "opt(runs(heuristic(use_first(halving,approximation))))": 298, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 298 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p382105_field.golden b/alg/ensemble/testdata/p382105_field.golden new file mode 100644 index 0000000..a02bdf1 --- /dev/null +++ b/alg/ensemble/testdata/p382105_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 758, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 758, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 413, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 413, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 403, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 403, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 404, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 404, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 571, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 571, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 397, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 509, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 753, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 412, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 412, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 412, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 412, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 406, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 400, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 400, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 397, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 399, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 433, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 571, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 571, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 397, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 509, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 753, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 412, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 412, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 412, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 412, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 406, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 400, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 400, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 397, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 399, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 433, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 508, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 508, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 395, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 459, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 749, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 411, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 411, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 411, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 412, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 405, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 398, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 398, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 396, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 431, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 508, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 508, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 395, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 459, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 749, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 411, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 411, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 411, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 412, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 405, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 398, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 398, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 396, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 431, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 508, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 508, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 395, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 459, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 749, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 411, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 411, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 411, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 412, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 405, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 398, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 398, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 396, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 431, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 508, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 508, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 395, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 459, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 749, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 411, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 411, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 411, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 412, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 405, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 398, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 398, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 396, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 431, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 758, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 758, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 405, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 405, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 397, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 405, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 494, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 413, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 413, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 403, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 403, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 404, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 404, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 459, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 459, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 409, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 503, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 412, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 412, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 412, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 412, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 412, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 410, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 410, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 406, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 405, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 479, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 479, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 479, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 479, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 479, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 426, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 426, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 408, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 406, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 433, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 433, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 433, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 433, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 433, + "opt(runs(continued_fractions(binary)))": 398, + "opt(runs(continued_fractions(co_binary)))": 398, + "opt(runs(continued_fractions(dichotomic)))": 396, + "opt(runs(heuristic(use_first(halving,approximation))))": 398, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 399 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p383187_field.golden b/alg/ensemble/testdata/p383187_field.golden new file mode 100644 index 0000000..b292ea2 --- /dev/null +++ b/alg/ensemble/testdata/p383187_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 413, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 413, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 402, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 402, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 413, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 413, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 402, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 402, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 413, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 413, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 402, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 402, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 413, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 413, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 402, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 402, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 573, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 573, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 450, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 754, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 414, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 414, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 414, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 406, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 406, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 405, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 404, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 408, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 401, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 401, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 433, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 433, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 440, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 751, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 412, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 412, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 412, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 412, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 404, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 404, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 404, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 403, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 400, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 400, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 572, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 572, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 433, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 440, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 751, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 412, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 412, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 412, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 412, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 404, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 404, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 404, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 403, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 400, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 400, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 400, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 572, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 572, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 398, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 572, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 756, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 405, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 405, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 397, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 405, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 494, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 413, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 413, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 413, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 415, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 402, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 402, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 402, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 402, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 407, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 401, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 401, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 398, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 401, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 432, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 451, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 451, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 411, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 504, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 416, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 416, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 414, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 413, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 413, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 412, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 412, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 407, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 410, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 417, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 480, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 480, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 480, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 480, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 480, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 424, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 424, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 411, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 408, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 434, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 434, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 434, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 434, + "opt(runs(continued_fractions(binary)))": 398, + "opt(runs(continued_fractions(co_binary)))": 398, + "opt(runs(continued_fractions(dichotomic)))": 396, + "opt(runs(heuristic(use_first(halving,approximation))))": 398, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 399 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p384_field.golden b/alg/ensemble/testdata/p384_field.golden new file mode 100644 index 0000000..9596296 --- /dev/null +++ b/alg/ensemble/testdata/p384_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 417, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 417, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 423, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 423, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 421, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 421, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 423, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 423, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 399, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 605, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 421, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 421, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 399, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 479, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 417, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 417, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 423, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 423, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 421, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 421, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 451, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 451, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 419, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 406, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 421, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 417, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 417, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 409, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 411, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 414, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 423, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 423, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 401, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 409, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 420, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 465, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 465, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 465, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 465, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 465, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 421, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 421, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 399, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 407, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 418, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 429, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 429, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 427, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 427, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 427, + "opt(runs(continued_fractions(binary)))": 399, + "opt(runs(continued_fractions(co_binary)))": 399, + "opt(runs(continued_fractions(dichotomic)))": 399, + "opt(runs(heuristic(use_first(halving,approximation))))": 397, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 397 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p384_scalar.golden b/alg/ensemble/testdata/p384_scalar.golden new file mode 100644 index 0000000..526fce4 --- /dev/null +++ b/alg/ensemble/testdata/p384_scalar.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 475, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 475, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 445, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 475, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 622, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 452, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 452, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 452, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 455, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 449, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 449, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 447, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 449, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 465, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 452, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 452, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 445, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 471, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 471, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 471, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 618, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 448, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 448, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 448, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 448, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 451, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 445, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 445, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 443, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 462, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 448, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 448, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 448, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 491, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 464, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 464, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 464, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 611, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 441, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 441, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 444, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 438, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 438, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 436, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 438, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 455, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 441, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 441, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 484, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 465, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 465, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 435, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 465, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 612, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 441, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 441, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 438, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 438, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 436, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 438, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 442, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 442, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 435, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 442, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 485, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 520, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 520, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 454, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 460, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 612, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 443, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 443, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 442, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 448, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 448, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 442, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 439, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 459, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 459, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 444, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 440, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 484, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 523, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 523, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 451, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 458, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 611, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 443, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 443, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 443, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 444, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 444, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 445, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 445, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 442, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 455, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 462, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 462, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 445, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 443, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 482, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 520, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 520, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 458, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 451, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 607, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 443, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 443, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 443, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 441, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 439, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 447, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 447, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 437, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 447, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 460, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 460, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 441, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 438, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 476, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 475, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 475, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 445, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 475, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 622, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 452, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 452, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 445, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 492, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 452, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 452, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 452, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 455, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 449, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 449, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 447, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 449, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 465, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 452, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 452, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 445, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 495, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 477, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 477, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 476, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 474, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 473, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 443, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 443, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 443, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 446, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 446, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 446, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 450, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 474, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 474, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 474, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 474, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 474, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 450, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 450, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 450, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 453, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 455, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 450, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 450, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 450, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 452, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 450, + "opt(runs(continued_fractions(binary)))": 445, + "opt(runs(continued_fractions(co_binary)))": 445, + "opt(runs(continued_fractions(dichotomic)))": 445, + "opt(runs(heuristic(use_first(halving,approximation))))": 444, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 444 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p41417_field.golden b/alg/ensemble/testdata/p41417_field.golden new file mode 100644 index 0000000..3989611 --- /dev/null +++ b/alg/ensemble/testdata/p41417_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 427, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 620, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 821, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 446, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 446, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 435, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 435, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 435, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 435, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 444, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 430, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 430, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 430, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 427, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 620, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 821, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 446, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 446, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 435, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 435, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 435, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 435, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 444, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 430, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 430, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 430, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 437, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 819, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 434, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 434, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 431, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 431, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 429, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 437, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 819, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 434, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 434, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 431, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 431, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 429, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 437, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 819, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 434, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 434, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 431, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 431, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 429, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 437, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 819, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 434, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 434, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 431, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 431, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 429, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 620, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 620, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 437, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 819, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 446, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 446, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 445, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 445, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 434, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 434, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 434, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 434, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 443, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 431, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 431, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 429, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 620, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 620, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 427, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 620, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 821, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 433, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 433, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 428, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 433, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 519, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 446, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 446, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 446, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 446, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 435, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 435, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 435, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 435, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 444, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 430, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 430, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 430, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 430, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 448, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 449, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 449, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 445, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 430, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 507, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 447, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 447, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 446, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 449, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 449, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 441, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 441, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 437, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 435, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 451, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 519, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 519, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 519, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 519, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 519, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 439, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 439, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 440, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 431, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 449, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 469, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 469, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 468, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 470, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 470, + "opt(runs(continued_fractions(binary)))": 427, + "opt(runs(continued_fractions(co_binary)))": 427, + "opt(runs(continued_fractions(dichotomic)))": 426, + "opt(runs(heuristic(use_first(halving,approximation))))": 426, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 429 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/p511187_field.golden b/alg/ensemble/testdata/p511187_field.golden new file mode 100644 index 0000000..36b2205 --- /dev/null +++ b/alg/ensemble/testdata/p511187_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 527, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 764, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 1012, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 549, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 549, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 549, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 534, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 534, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 534, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 531, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 531, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 527, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 764, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 1012, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 549, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 549, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 549, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 534, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 534, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 534, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 531, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 531, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 527, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 764, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 1012, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 549, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 549, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 549, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 534, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 534, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 534, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 531, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 531, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 527, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 764, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 1012, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 549, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 549, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 549, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 534, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 534, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 534, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 531, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 531, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 600, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 1009, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 550, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 550, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 550, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 538, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 538, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 537, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 536, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 540, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 531, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 531, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 563, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 565, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 587, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 1006, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 548, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 548, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 548, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 548, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 536, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 536, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 536, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 535, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 530, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 530, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 530, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 764, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 764, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 565, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 587, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 1006, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 548, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 548, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 548, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 548, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 536, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 536, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 536, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 535, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 530, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 530, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 530, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 764, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 764, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 527, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 764, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 1012, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 534, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 534, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 526, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 623, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 549, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 549, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 549, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 551, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 534, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 534, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 534, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 534, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 539, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 531, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 531, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 528, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 531, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 562, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 580, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 580, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 540, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 542, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 633, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 552, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 552, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 550, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 549, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 549, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 544, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 544, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 539, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 542, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 549, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 640, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 640, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 640, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 640, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 640, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 554, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 554, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 541, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 538, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 573, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 578, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 578, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 578, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 578, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 578, + "opt(runs(continued_fractions(binary)))": 527, + "opt(runs(continued_fractions(co_binary)))": 527, + "opt(runs(continued_fractions(dichotomic)))": 525, + "opt(runs(heuristic(use_first(halving,approximation))))": 526, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 528 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/secp192k1_field.golden b/alg/ensemble/testdata/secp192k1_field.golden new file mode 100644 index 0000000..78d51fb --- /dev/null +++ b/alg/ensemble/testdata/secp192k1_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 210, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 210, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 210, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 328, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 213, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 213, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 212, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 217, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 208, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 207, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 207, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 207, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 207, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 210, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 209, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 209, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 205, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 209, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 327, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 212, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 212, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 211, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 216, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 207, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 207, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 207, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 207, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 207, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 206, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 206, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 206, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 209, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 210, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 210, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 210, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 328, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 214, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 214, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 212, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 218, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 208, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 207, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 207, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 207, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 207, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 210, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 210, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 210, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 210, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 328, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 214, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 214, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 213, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 216, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 208, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 207, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 207, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 207, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 207, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 210, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 210, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 210, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 211, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 329, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 214, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 214, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 213, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 214, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 209, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 209, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 207, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 207, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 207, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 211, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 210, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 210, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 211, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 329, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 214, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 214, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 214, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 213, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 209, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 208, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 209, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 212, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 212, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 209, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 329, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 214, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 214, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 214, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 213, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 209, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 209, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 209, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 210, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 209, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 208, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 208, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 208, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 209, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 210, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 210, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 210, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 206, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 210, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 328, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 209, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 209, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 208, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 209, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 274, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 213, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 213, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 212, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 217, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 208, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 208, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 208, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 208, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 208, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 207, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 207, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 207, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 207, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 210, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 236, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 236, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 239, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 216, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 213, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 213, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 213, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 213, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 212, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 214, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 214, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 214, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 212, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 213, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 217, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 241, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 241, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 241, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 237, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 237, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 222, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 216, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 213, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 220, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 220, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 220, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 222, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 222, + "opt(runs(continued_fractions(binary)))": 206, + "opt(runs(continued_fractions(co_binary)))": 206, + "opt(runs(continued_fractions(dichotomic)))": 206, + "opt(runs(heuristic(use_first(halving,approximation))))": 207, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 207 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/secp224k1_field.golden b/alg/ensemble/testdata/secp224k1_field.golden new file mode 100644 index 0000000..9f8f592 --- /dev/null +++ b/alg/ensemble/testdata/secp224k1_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 249, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 249, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 240, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 249, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 397, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 248, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 248, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 247, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 248, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 252, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 242, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 242, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 242, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 271, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 248, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 248, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 240, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 395, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 247, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 247, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 246, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 247, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 251, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 240, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 247, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 247, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 398, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 249, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 249, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 247, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 247, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 252, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 240, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 242, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 240, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 240, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 240, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 270, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 245, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 245, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 238, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 245, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 396, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 246, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 246, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 245, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 240, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 268, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 247, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 247, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 244, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 391, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 250, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 247, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 269, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 247, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 247, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 244, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 391, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 251, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 251, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 250, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 247, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 241, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 241, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 239, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 239, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 239, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 240, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 269, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 248, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 248, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 241, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 244, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 390, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 249, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 249, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 249, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 246, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 245, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 243, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 243, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 244, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 241, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 244, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 244, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 242, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 269, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 249, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 249, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 240, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 249, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 397, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 241, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 241, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 241, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 273, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 248, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 248, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 247, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 248, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 252, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 242, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 242, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 242, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 242, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 242, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 241, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 241, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 241, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 241, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 271, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 287, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 287, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 272, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 279, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 248, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 248, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 248, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 248, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 247, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 248, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 248, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 244, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 248, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 249, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 282, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 282, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 282, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 282, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 282, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 253, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 253, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 254, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 247, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 248, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 257, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 257, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 257, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 257, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 256, + "opt(runs(continued_fractions(binary)))": 240, + "opt(runs(continued_fractions(co_binary)))": 240, + "opt(runs(continued_fractions(dichotomic)))": 240, + "opt(runs(heuristic(use_first(halving,approximation))))": 241, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 241 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/secp256k1_field.golden b/alg/ensemble/testdata/secp256k1_field.golden new file mode 100644 index 0000000..d807d89 --- /dev/null +++ b/alg/ensemble/testdata/secp256k1_field.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 277, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 277, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 277, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 457, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 278, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 278, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 278, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 277, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 277, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 277, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 277, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 458, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 278, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 278, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 278, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 273, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 277, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 275, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 456, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 279, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 279, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 272, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 272, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 270, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 270, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 278, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 277, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 277, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 270, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 277, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 457, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 271, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 271, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 271, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 271, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 315, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 278, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 278, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 278, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 280, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 272, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 272, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 272, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 272, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 276, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 270, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 270, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 270, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 270, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 277, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 326, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 326, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 306, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 276, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 348, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 279, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 279, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 279, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 279, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 279, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 276, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 276, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 275, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 278, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 289, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 320, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 320, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 320, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 320, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 320, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 298, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 298, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 284, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 274, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 284, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 292, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 292, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 292, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 292, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 292, + "opt(runs(continued_fractions(binary)))": 270, + "opt(runs(continued_fractions(co_binary)))": 270, + "opt(runs(continued_fractions(dichotomic)))": 270, + "opt(runs(heuristic(use_first(halving,approximation))))": 270, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 269 +} \ No newline at end of file diff --git a/alg/ensemble/testdata/secp256k1_scalar.golden b/alg/ensemble/testdata/secp256k1_scalar.golden new file mode 100644 index 0000000..1e3a321 --- /dev/null +++ b/alg/ensemble/testdata/secp256k1_scalar.golden @@ -0,0 +1,202 @@ +{ + "opt(dictionary(hybrid(2,0),continued_fractions(binary)))": 309, + "opt(dictionary(hybrid(2,0),continued_fractions(co_binary)))": 309, + "opt(dictionary(hybrid(2,0),continued_fractions(dichotomic)))": 301, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,approximation))))": 309, + "opt(dictionary(hybrid(2,0),heuristic(use_first(halving,delta_largest))))": 406, + "opt(dictionary(hybrid(2,16),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(2,16),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(2,16),continued_fractions(dichotomic)))": 303, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(hybrid(2,16),heuristic(use_first(halving,delta_largest))))": 303, + "opt(dictionary(hybrid(2,32),continued_fractions(binary)))": 301, + "opt(dictionary(hybrid(2,32),continued_fractions(co_binary)))": 301, + "opt(dictionary(hybrid(2,32),continued_fractions(dichotomic)))": 301, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,approximation))))": 301, + "opt(dictionary(hybrid(2,32),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(hybrid(2,64),continued_fractions(binary)))": 303, + "opt(dictionary(hybrid(2,64),continued_fractions(co_binary)))": 303, + "opt(dictionary(hybrid(2,64),continued_fractions(dichotomic)))": 301, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(hybrid(2,64),heuristic(use_first(halving,delta_largest))))": 344, + "opt(dictionary(hybrid(3,0),continued_fractions(binary)))": 306, + "opt(dictionary(hybrid(3,0),continued_fractions(co_binary)))": 306, + "opt(dictionary(hybrid(3,0),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,approximation))))": 306, + "opt(dictionary(hybrid(3,0),heuristic(use_first(halving,delta_largest))))": 403, + "opt(dictionary(hybrid(3,16),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(3,16),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(3,16),continued_fractions(dichotomic)))": 300, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(3,16),heuristic(use_first(halving,delta_largest))))": 300, + "opt(dictionary(hybrid(3,32),continued_fractions(binary)))": 298, + "opt(dictionary(hybrid(3,32),continued_fractions(co_binary)))": 298, + "opt(dictionary(hybrid(3,32),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(3,32),heuristic(use_first(halving,delta_largest))))": 311, + "opt(dictionary(hybrid(3,64),continued_fractions(binary)))": 300, + "opt(dictionary(hybrid(3,64),continued_fractions(co_binary)))": 300, + "opt(dictionary(hybrid(3,64),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,approximation))))": 300, + "opt(dictionary(hybrid(3,64),heuristic(use_first(halving,delta_largest))))": 341, + "opt(dictionary(hybrid(4,0),continued_fractions(binary)))": 301, + "opt(dictionary(hybrid(4,0),continued_fractions(co_binary)))": 301, + "opt(dictionary(hybrid(4,0),continued_fractions(dichotomic)))": 293, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,approximation))))": 302, + "opt(dictionary(hybrid(4,0),heuristic(use_first(halving,delta_largest))))": 399, + "opt(dictionary(hybrid(4,16),continued_fractions(binary)))": 295, + "opt(dictionary(hybrid(4,16),continued_fractions(co_binary)))": 295, + "opt(dictionary(hybrid(4,16),continued_fractions(dichotomic)))": 295, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,16),heuristic(use_first(halving,delta_largest))))": 296, + "opt(dictionary(hybrid(4,32),continued_fractions(binary)))": 293, + "opt(dictionary(hybrid(4,32),continued_fractions(co_binary)))": 293, + "opt(dictionary(hybrid(4,32),continued_fractions(dichotomic)))": 293, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,approximation))))": 294, + "opt(dictionary(hybrid(4,32),heuristic(use_first(halving,delta_largest))))": 307, + "opt(dictionary(hybrid(4,64),continued_fractions(binary)))": 295, + "opt(dictionary(hybrid(4,64),continued_fractions(co_binary)))": 295, + "opt(dictionary(hybrid(4,64),continued_fractions(dichotomic)))": 293, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(4,64),heuristic(use_first(halving,delta_largest))))": 337, + "opt(dictionary(hybrid(5,0),continued_fractions(binary)))": 304, + "opt(dictionary(hybrid(5,0),continued_fractions(co_binary)))": 304, + "opt(dictionary(hybrid(5,0),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,approximation))))": 305, + "opt(dictionary(hybrid(5,0),heuristic(use_first(halving,delta_largest))))": 402, + "opt(dictionary(hybrid(5,16),continued_fractions(binary)))": 298, + "opt(dictionary(hybrid(5,16),continued_fractions(co_binary)))": 298, + "opt(dictionary(hybrid(5,16),continued_fractions(dichotomic)))": 298, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,approximation))))": 299, + "opt(dictionary(hybrid(5,16),heuristic(use_first(halving,delta_largest))))": 299, + "opt(dictionary(hybrid(5,32),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(5,32),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(5,32),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(5,32),heuristic(use_first(halving,delta_largest))))": 310, + "opt(dictionary(hybrid(5,64),continued_fractions(binary)))": 298, + "opt(dictionary(hybrid(5,64),continued_fractions(co_binary)))": 298, + "opt(dictionary(hybrid(5,64),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,approximation))))": 299, + "opt(dictionary(hybrid(5,64),heuristic(use_first(halving,delta_largest))))": 340, + "opt(dictionary(hybrid(6,0),continued_fractions(binary)))": 305, + "opt(dictionary(hybrid(6,0),continued_fractions(co_binary)))": 305, + "opt(dictionary(hybrid(6,0),continued_fractions(dichotomic)))": 297, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,approximation))))": 307, + "opt(dictionary(hybrid(6,0),heuristic(use_first(halving,delta_largest))))": 403, + "opt(dictionary(hybrid(6,16),continued_fractions(binary)))": 299, + "opt(dictionary(hybrid(6,16),continued_fractions(co_binary)))": 299, + "opt(dictionary(hybrid(6,16),continued_fractions(dichotomic)))": 299, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,approximation))))": 301, + "opt(dictionary(hybrid(6,16),heuristic(use_first(halving,delta_largest))))": 300, + "opt(dictionary(hybrid(6,32),continued_fractions(binary)))": 297, + "opt(dictionary(hybrid(6,32),continued_fractions(co_binary)))": 297, + "opt(dictionary(hybrid(6,32),continued_fractions(dichotomic)))": 297, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,approximation))))": 299, + "opt(dictionary(hybrid(6,32),heuristic(use_first(halving,delta_largest))))": 311, + "opt(dictionary(hybrid(6,64),continued_fractions(binary)))": 299, + "opt(dictionary(hybrid(6,64),continued_fractions(co_binary)))": 299, + "opt(dictionary(hybrid(6,64),continued_fractions(dichotomic)))": 297, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,approximation))))": 301, + "opt(dictionary(hybrid(6,64),heuristic(use_first(halving,delta_largest))))": 341, + "opt(dictionary(hybrid(7,0),continued_fractions(binary)))": 302, + "opt(dictionary(hybrid(7,0),continued_fractions(co_binary)))": 302, + "opt(dictionary(hybrid(7,0),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(hybrid(7,0),heuristic(use_first(halving,delta_largest))))": 399, + "opt(dictionary(hybrid(7,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(7,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(7,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(7,16),heuristic(use_first(halving,delta_largest))))": 296, + "opt(dictionary(hybrid(7,32),continued_fractions(binary)))": 294, + "opt(dictionary(hybrid(7,32),continued_fractions(co_binary)))": 294, + "opt(dictionary(hybrid(7,32),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,approximation))))": 295, + "opt(dictionary(hybrid(7,32),heuristic(use_first(halving,delta_largest))))": 307, + "opt(dictionary(hybrid(7,64),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(7,64),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(7,64),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,approximation))))": 297, + "opt(dictionary(hybrid(7,64),heuristic(use_first(halving,delta_largest))))": 337, + "opt(dictionary(hybrid(8,0),continued_fractions(binary)))": 302, + "opt(dictionary(hybrid(8,0),continued_fractions(co_binary)))": 302, + "opt(dictionary(hybrid(8,0),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,approximation))))": 304, + "opt(dictionary(hybrid(8,0),heuristic(use_first(halving,delta_largest))))": 400, + "opt(dictionary(hybrid(8,16),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(8,16),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(8,16),continued_fractions(dichotomic)))": 296, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(8,16),heuristic(use_first(halving,delta_largest))))": 296, + "opt(dictionary(hybrid(8,32),continued_fractions(binary)))": 294, + "opt(dictionary(hybrid(8,32),continued_fractions(co_binary)))": 294, + "opt(dictionary(hybrid(8,32),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,approximation))))": 296, + "opt(dictionary(hybrid(8,32),heuristic(use_first(halving,delta_largest))))": 308, + "opt(dictionary(hybrid(8,64),continued_fractions(binary)))": 296, + "opt(dictionary(hybrid(8,64),continued_fractions(co_binary)))": 296, + "opt(dictionary(hybrid(8,64),continued_fractions(dichotomic)))": 294, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,approximation))))": 298, + "opt(dictionary(hybrid(8,64),heuristic(use_first(halving,delta_largest))))": 338, + "opt(dictionary(run_length(0),continued_fractions(binary)))": 309, + "opt(dictionary(run_length(0),continued_fractions(co_binary)))": 309, + "opt(dictionary(run_length(0),continued_fractions(dichotomic)))": 301, + "opt(dictionary(run_length(0),heuristic(use_first(halving,approximation))))": 309, + "opt(dictionary(run_length(0),heuristic(use_first(halving,delta_largest))))": 406, + "opt(dictionary(run_length(128),continued_fractions(binary)))": 309, + "opt(dictionary(run_length(128),continued_fractions(co_binary)))": 309, + "opt(dictionary(run_length(128),continued_fractions(dichotomic)))": 301, + "opt(dictionary(run_length(128),heuristic(use_first(halving,approximation))))": 309, + "opt(dictionary(run_length(128),heuristic(use_first(halving,delta_largest))))": 406, + "opt(dictionary(run_length(16),continued_fractions(binary)))": 303, + "opt(dictionary(run_length(16),continued_fractions(co_binary)))": 303, + "opt(dictionary(run_length(16),continued_fractions(dichotomic)))": 303, + "opt(dictionary(run_length(16),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(run_length(16),heuristic(use_first(halving,delta_largest))))": 303, + "opt(dictionary(run_length(32),continued_fractions(binary)))": 301, + "opt(dictionary(run_length(32),continued_fractions(co_binary)))": 301, + "opt(dictionary(run_length(32),continued_fractions(dichotomic)))": 301, + "opt(dictionary(run_length(32),heuristic(use_first(halving,approximation))))": 301, + "opt(dictionary(run_length(32),heuristic(use_first(halving,delta_largest))))": 314, + "opt(dictionary(run_length(64),continued_fractions(binary)))": 303, + "opt(dictionary(run_length(64),continued_fractions(co_binary)))": 303, + "opt(dictionary(run_length(64),continued_fractions(dichotomic)))": 301, + "opt(dictionary(run_length(64),heuristic(use_first(halving,approximation))))": 303, + "opt(dictionary(run_length(64),heuristic(use_first(halving,delta_largest))))": 344, + "opt(dictionary(sliding_window(128),continued_fractions(binary)))": 330, + "opt(dictionary(sliding_window(128),continued_fractions(co_binary)))": 330, + "opt(dictionary(sliding_window(128),continued_fractions(dichotomic)))": 327, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,approximation))))": 328, + "opt(dictionary(sliding_window(128),heuristic(use_first(halving,delta_largest))))": 327, + "opt(dictionary(sliding_window(16),continued_fractions(binary)))": 303, + "opt(dictionary(sliding_window(16),continued_fractions(co_binary)))": 303, + "opt(dictionary(sliding_window(16),continued_fractions(dichotomic)))": 303, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,approximation))))": 304, + "opt(dictionary(sliding_window(16),heuristic(use_first(halving,delta_largest))))": 303, + "opt(dictionary(sliding_window(32),continued_fractions(binary)))": 301, + "opt(dictionary(sliding_window(32),continued_fractions(co_binary)))": 301, + "opt(dictionary(sliding_window(32),continued_fractions(dichotomic)))": 301, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,approximation))))": 312, + "opt(dictionary(sliding_window(32),heuristic(use_first(halving,delta_largest))))": 301, + "opt(dictionary(sliding_window(4),continued_fractions(binary)))": 317, + "opt(dictionary(sliding_window(4),continued_fractions(co_binary)))": 317, + "opt(dictionary(sliding_window(4),continued_fractions(dichotomic)))": 317, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,approximation))))": 317, + "opt(dictionary(sliding_window(4),heuristic(use_first(halving,delta_largest))))": 317, + "opt(dictionary(sliding_window(64),continued_fractions(binary)))": 311, + "opt(dictionary(sliding_window(64),continued_fractions(co_binary)))": 311, + "opt(dictionary(sliding_window(64),continued_fractions(dichotomic)))": 311, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,approximation))))": 310, + "opt(dictionary(sliding_window(64),heuristic(use_first(halving,delta_largest))))": 313, + "opt(dictionary(sliding_window(8),continued_fractions(binary)))": 302, + "opt(dictionary(sliding_window(8),continued_fractions(co_binary)))": 302, + "opt(dictionary(sliding_window(8),continued_fractions(dichotomic)))": 302, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,approximation))))": 304, + "opt(dictionary(sliding_window(8),heuristic(use_first(halving,delta_largest))))": 302, + "opt(runs(continued_fractions(binary)))": 301, + "opt(runs(continued_fractions(co_binary)))": 301, + "opt(runs(continued_fractions(dichotomic)))": 300, + "opt(runs(heuristic(use_first(halving,approximation))))": 299, + "opt(runs(heuristic(use_first(halving,delta_largest))))": 299 +} \ No newline at end of file