github.com/cloudflare/circl@v1.5.0/ecc/bls12381/ff/fp12cubic_test.go (about) 1 package ff 2 3 import ( 4 "testing" 5 6 "github.com/cloudflare/circl/internal/test" 7 ) 8 9 func TestFP12CubicAdd(t *testing.T) { 10 const testTimes = 1 << 8 11 for i := 0; i < testTimes; i++ { 12 var xalt, yalt, zalt Fp12Cubic 13 var z, zcmp Fp12 14 x := randomFp12(t) 15 y := randomFp12(t) 16 xalt.FromFp12(x) 17 yalt.FromFp12(y) 18 zalt.Add(&xalt, &yalt) 19 z.Add(x, y) 20 zcmp.FromFp12Cubic(&zalt) 21 if z.IsEqual(&zcmp) == 0 { 22 test.ReportError(t, z, zcmp, x, y) 23 } 24 } 25 } 26 27 func TestFP12CubicMul(t *testing.T) { 28 const testTimes = 1 << 8 29 for i := 0; i < testTimes; i++ { 30 var xalt, yalt, zalt Fp12Cubic 31 var z, zcmp Fp12 32 x := randomFp12(t) 33 y := randomFp12(t) 34 xalt.FromFp12(x) 35 yalt.FromFp12(y) 36 zalt.Mul(&xalt, &yalt) 37 z.Mul(x, y) 38 zcmp.FromFp12Cubic(&zalt) 39 if z.IsEqual(&zcmp) == 0 { 40 test.ReportError(t, z, zcmp, x, y) 41 } 42 } 43 } 44 45 func TestFP12AltSqr(t *testing.T) { 46 const testTimes = 1 << 8 47 for i := 0; i < testTimes; i++ { 48 var xalt, zalt Fp12Cubic 49 var z, zcmp Fp12 50 x := randomFp12(t) 51 xalt.FromFp12(x) 52 zalt.Sqr(&xalt) 53 z.Sqr(x) 54 zcmp.FromFp12Cubic(&zalt) 55 if z.IsEqual(&zcmp) == 0 { 56 test.ReportError(t, z, zcmp, x) 57 } 58 } 59 } 60 61 func TestFP12CubicLine(t *testing.T) { 62 const testTimes = 1 << 8 63 for i := 0; i < testTimes; i++ { 64 var x, y, z, zcmp Fp12Cubic 65 var yline LineValue 66 xnorm := randomFp12(t) 67 x.FromFp12(xnorm) 68 69 yline[0] = *randomFp2(t) 70 yline[1] = *randomFp2(t) 71 yline[2] = *randomFp2(t) 72 73 y[0][0] = yline[0] 74 y[0][1] = yline[2] 75 y[2][0] = yline[1] 76 77 zcmp.Mul(&x, &y) 78 z.MulLine(&x, &yline) 79 if z.IsEqual(&zcmp) == 0 { 80 test.ReportError(t, z, zcmp, x) 81 } 82 } 83 }