@@ -10,6 +10,7 @@ import (
1010 fr_bls12381 "github.com/consensys/gnark-crypto/ecc/bls12-381/fr"
1111 fr_bn254 "github.com/consensys/gnark-crypto/ecc/bn254/fr"
1212 fr_bw6761 "github.com/consensys/gnark-crypto/ecc/bw6-761/fr"
13+ fr_grumpkin "github.com/consensys/gnark-crypto/ecc/grumpkin/fr"
1314 "github.com/consensys/gnark-crypto/field/babybear"
1415 "github.com/consensys/gnark-crypto/field/koalabear"
1516 "github.com/consensys/gnark/internal/smallfields/tinyfield"
@@ -28,6 +29,9 @@ func newVector(field *big.Int, size int) (any, error) {
2829 case ecc .BW6_761 :
2930 return make (fr_bw6761.Vector , size ), nil
3031 default :
32+ if field .Cmp (ecc .GRUMPKIN .ScalarField ()) == 0 {
33+ return make (fr_grumpkin.Vector , size ), nil
34+ }
3135 if field .Cmp (tinyfield .Modulus ()) == 0 {
3236 return make (tinyfield.Vector , size ), nil
3337 }
@@ -59,6 +63,10 @@ func newFrom(from any, n int) (any, error) {
5963 a := make (fr_bw6761.Vector , n )
6064 copy (a , wt )
6165 return a , nil
66+ case fr_grumpkin.Vector :
67+ a := make (fr_grumpkin.Vector , n )
68+ copy (a , wt )
69+ return a , nil
6270 case tinyfield.Vector :
6371 a := make (tinyfield.Vector , n )
6472 copy (a , wt )
@@ -86,6 +94,8 @@ func leafType(v any) reflect.Type {
8694 return reflect .TypeOf (fr_bls12381.Element {})
8795 case fr_bw6761.Vector :
8896 return reflect .TypeOf (fr_bw6761.Element {})
97+ case fr_grumpkin.Vector :
98+ return reflect .TypeOf (fr_grumpkin.Element {})
8999 case tinyfield.Vector :
90100 return reflect .TypeOf (tinyfield.Element {})
91101 case babybear.Vector :
@@ -123,6 +133,12 @@ func set(v any, index int, value any) error {
123133 }
124134 _ , err := pv [index ].SetInterface (value )
125135 return err
136+ case fr_grumpkin.Vector :
137+ if index >= len (pv ) {
138+ return errors .New ("out of bounds" )
139+ }
140+ _ , err := pv [index ].SetInterface (value )
141+ return err
126142 case tinyfield.Vector :
127143 if index >= len (pv ) {
128144 return errors .New ("out of bounds" )
@@ -177,6 +193,13 @@ func iterate(v any) chan any {
177193 }
178194 close (chValues )
179195 }()
196+ case fr_grumpkin.Vector :
197+ go func () {
198+ for i := 0 ; i < len (pv ); i ++ {
199+ chValues <- & (pv )[i ]
200+ }
201+ close (chValues )
202+ }()
180203 case tinyfield.Vector :
181204 go func () {
182205 for i := 0 ; i < len (pv ); i ++ {
@@ -214,6 +237,8 @@ func resize(v any, n int) any {
214237 return make (fr_bls12381.Vector , n )
215238 case fr_bw6761.Vector :
216239 return make (fr_bw6761.Vector , n )
240+ case fr_grumpkin.Vector :
241+ return make (fr_grumpkin.Vector , n )
217242 case tinyfield.Vector :
218243 return make (tinyfield.Vector , n )
219244 case babybear.Vector :
0 commit comments