-
Notifications
You must be signed in to change notification settings - Fork 0
/
divpoly_test.go
47 lines (43 loc) · 1.84 KB
/
divpoly_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package ecc
import (
"math/big"
"testing"
)
func TestDivisionPolynomial(t *testing.T) {
c := &Curve{
P: big.NewInt(19),
A: big.NewInt(2),
B: big.NewInt(1),
}
want := []string{
"[0]",
"[1]",
"[4x^3 + 8x + 4]",
"[3x^4 + 12x^2 + 12x + 15]",
"[8x^9 + x^7 + 16x^6 + 13x^4 + 16x^3 + 16x^2 + 3x + 5]",
"[5x^12 + 10x^10 + 17x^8 + 5x^7 + x^6 + 9x^5 + 12x^4 + 2x^3 + 5x^2 + 8x + 8]",
"[12x^19 + 11x^17 + 2x^16 + 2x^15 + 5x^14 + 5x^13 + 9x^11 + 10x^10 + 9x^9 + " +
"8x^8 + 8x^7 + 6x^6 + 3x^5 + 6x^4 + 3x^3 + 7x^2 + 11]",
"[7x^24 + 8x^22 + 11x^21 + 2x^20 + 4x^19 + 11x^18 + 14x^16 + 18x^15 + 12x^14 + " +
"2x^13 + 16x^12 + 3x^11 + 16x^10 + 17x^9 + 10x^8 + 11x^7 + 3x^6 + 7x^5 + 18x^4 " +
"+ 4x^3 + 3x^2 + 3x + 3]",
"[16x^33 + 12x^31 + 3x^30 + 4x^29 + 10x^28 + 12x^26 + 11x^25 + 13x^24 + 12x^22 + " +
"15x^21 + 11x^20 + x^19 + 7x^15 + 18x^14 + 17x^13 + 4x^12 + 18x^11 + 8x^10 + " +
"11x^9 + 15x^8 + 15x^7 + 15x^6 + 9x^5 + 13x^4 + 4x^3 + 16x^2 + 10x + 14]",
"[9x^40 + 17x^38 + 5x^37 + 16x^36 + 11x^35 + 18x^34 + 15x^32 + 9x^31 + 9x^30 + " +
"13x^29 + 3x^28 + x^26 + 2x^25 + 11x^24 + 5x^23 + 5x^22 + 2x^21 + 16x^20 + " +
"4x^19 + 11x^18 + 15x^17 + 2x^16 + 9x^15 + 5x^14 + 9x^13 + 17x^12 + 6x^11 + " +
"13x^10 + 18x^9 + 16x^8 + 18x^7 + 2x^6 + x^5 + 8x^4 + 9x^3 + 17x^2 + 14x]",
"[x^51 + 5x^49 + 17x^46 + 18x^45 + 18x^44 + 7x^43 + 15x^41 + 11x^40 + 2x^39 + 16x^38" +
" + 17x^37 + 17x^36 + 9x^35 + 14x^34 + 9x^33 + 2x^32 + 4x^30 + 17x^29 + 3x^28 + " +
"4x^27 + 15x^26 + 12x^25 + 8x^24 + 11x^23 + 7x^22 + 11x^21 + 6x^20 + 4x^19 + 7x^17 " +
"+ 12x^16 + 3x^15 + 16x^14 + 14x^13 + 16x^12 + 4x^11 + 13x^10 + 18x^9 + 11x^8 + " +
"17x^7 + 12x^5 + 15x^4 + 6x^3 + 8x^2 + 13x + 16]",
}
for i := 0; i < len(want); i++ {
dp := c.DivPoly(int64(i))
if dp.String() != want[i] {
t.Errorf("fail %dth division poly\n%s", i, dp)
}
}
}