67 lines
1.6 KiB
Go
67 lines
1.6 KiB
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package bn256
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestG1Array(t *testing.T) {
|
|
count := 8
|
|
|
|
var g1array G1Array
|
|
var g1array_opt G1Array
|
|
|
|
for i := 0; i < count; i++ {
|
|
a, _ := rand.Int(rand.Reader, Order)
|
|
g1array = append(g1array, new(G1).ScalarBaseMult(a))
|
|
g1array_opt = append(g1array_opt, new(G1).ScalarBaseMult(a))
|
|
}
|
|
g1array_opt.MakeAffine()
|
|
for i := range g1array_opt {
|
|
require.Equal(t, g1array_opt[i].p.z, *newGFp(1)) // current we are not testing points of infinity
|
|
}
|
|
}
|
|
|
|
func benchmarksingleinverts(count int, b *testing.B) {
|
|
var g1array, g1backup G1Array
|
|
|
|
for i := 0; i < count; i++ {
|
|
a, _ := rand.Int(rand.Reader, Order)
|
|
g1backup = append(g1backup, new(G1).ScalarBaseMult(a))
|
|
}
|
|
|
|
for n := 0; n < b.N; n++ {
|
|
g1array = g1array[:0]
|
|
for i := range g1backup {
|
|
g1array = append(g1array, new(G1).Set(g1backup[i]))
|
|
g1array[i].p.MakeAffine()
|
|
}
|
|
}
|
|
}
|
|
|
|
func benchmarkbatchedinverts(count int, b *testing.B) {
|
|
var g1array, g1backup G1Array
|
|
|
|
for i := 0; i < count; i++ {
|
|
a, _ := rand.Int(rand.Reader, Order)
|
|
g1backup = append(g1backup, new(G1).ScalarBaseMult(a))
|
|
}
|
|
|
|
for n := 0; n < b.N; n++ {
|
|
g1array = g1array[:0]
|
|
for i := range g1backup {
|
|
g1array = append(g1array, new(G1).Set(g1backup[i]))
|
|
}
|
|
g1array.MakeAffine()
|
|
}
|
|
}
|
|
|
|
func BenchmarkInverts_Single_256(b *testing.B) { benchmarksingleinverts(256, b) }
|
|
func BenchmarkInverts_Batched_256(b *testing.B) { benchmarkbatchedinverts(256, b) }
|