diff --git a/std/algebra/defaults.go b/std/algebra/defaults.go index 3c78897959..5f319c4b5d 100644 --- a/std/algebra/defaults.go +++ b/std/algebra/defaults.go @@ -10,6 +10,7 @@ import ( "github.com/consensys/gnark/std/algebra/emulated/sw_emulated" "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/std/algebra/native/sw_bls24315" + "github.com/consensys/gnark/std/math/emulated" "github.com/consensys/gnark/std/math/emulated/emparams" ) @@ -17,32 +18,38 @@ import ( // G1 type parameters. The method allows to have a fully generic implementation // without taking into consideration the initialization differences of different // curves. -func GetCurve[S ScalarT, G1El G1ElementT](api frontend.API) (Curve[S, G1El], error) { - var ret Curve[S, G1El] +func GetCurve[FR emulated.FieldParams, G1El G1ElementT](api frontend.API) (Curve[FR, G1El], error) { + var ret Curve[FR, G1El] switch s := any(&ret).(type) { - case *Curve[sw_bn254.Scalar, sw_bn254.G1Affine]: + case *Curve[sw_bn254.ScalarField, sw_bn254.G1Affine]: c, err := sw_emulated.New[emparams.BN254Fp, emparams.BN254Fr](api, sw_emulated.GetBN254Params()) if err != nil { return ret, fmt.Errorf("new curve: %w", err) } *s = c - case *Curve[sw_bw6761.Scalar, sw_bw6761.G1Affine]: + case *Curve[sw_bw6761.ScalarField, sw_bw6761.G1Affine]: c, err := sw_emulated.New[emparams.BW6761Fp, emparams.BW6761Fr](api, sw_emulated.GetBW6761Params()) if err != nil { return ret, fmt.Errorf("new curve: %w", err) } *s = c - case *Curve[sw_bls12381.Scalar, sw_bls12381.G1Affine]: + case *Curve[sw_bls12381.ScalarField, sw_bls12381.G1Affine]: c, err := sw_emulated.New[emparams.BLS12381Fp, emparams.BLS12381Fr](api, sw_emulated.GetBLS12381Params()) if err != nil { return ret, fmt.Errorf("new curve: %w", err) } *s = c - case *Curve[sw_bls12377.Scalar, sw_bls12377.G1Affine]: - c := sw_bls12377.NewCurve(api) + case *Curve[sw_bls12377.ScalarField, sw_bls12377.G1Affine]: + c, err := sw_bls12377.NewCurve(api) + if err != nil { + return ret, fmt.Errorf("new curve: %w", err) + } *s = c - case *Curve[sw_bls24315.Scalar, sw_bls24315.G1Affine]: - c := sw_bls24315.NewCurve(api) + case *Curve[sw_bls24315.ScalarField, sw_bls24315.G1Affine]: + c, err := sw_bls24315.NewCurve(api) + if err != nil { + return ret, fmt.Errorf("new curve: %w", err) + } *s = c default: return ret, fmt.Errorf("unknown type parametrisation") diff --git a/std/algebra/emulated/sw_bls12381/g1.go b/std/algebra/emulated/sw_bls12381/g1.go index 72ae2af86e..fed71e6be6 100644 --- a/std/algebra/emulated/sw_bls12381/g1.go +++ b/std/algebra/emulated/sw_bls12381/g1.go @@ -12,32 +12,31 @@ import ( // G1Affine is the point in G1. It is an alias to the generic emulated affine // point. -type G1Affine = sw_emulated.AffinePoint[emulated.BLS12381Fp] +type G1Affine = sw_emulated.AffinePoint[BaseField] // Scalar is the scalar in the groups. It is an alias to the emulated element // defined over the scalar field of the groups. -type Scalar = emulated.Element[emulated.BLS12381Fr] +type Scalar = emulated.Element[ScalarField] // NewG1Affine allocates a witness from the native G1 element and returns it. - func NewG1Affine(v bls12381.G1Affine) G1Affine { return G1Affine{ - X: emulated.ValueOf[emulated.BLS12381Fp](v.X), - Y: emulated.ValueOf[emulated.BLS12381Fp](v.Y), + X: emulated.ValueOf[BaseField](v.X), + Y: emulated.ValueOf[BaseField](v.Y), } } type G1 struct { - curveF *emulated.Field[emulated.BLS12381Fp] - w *emulated.Element[emulated.BLS12381Fp] + curveF *emulated.Field[BaseField] + w *emulated.Element[BaseField] } func NewG1(api frontend.API) (*G1, error) { - ba, err := emulated.NewField[emulated.BLS12381Fp](api) + ba, err := emulated.NewField[BaseField](api) if err != nil { return nil, fmt.Errorf("new base api: %w", err) } - w := emulated.ValueOf[emulated.BLS12381Fp]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436") + w := emulated.ValueOf[BaseField]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436") return &G1{ curveF: ba, w: &w, @@ -55,5 +54,11 @@ func (g1 *G1) phi(q *G1Affine) *G1Affine { // NewScalar allocates a witness from the native scalar and returns it. func NewScalar(v fr_bls12381.Element) Scalar { - return emulated.ValueOf[emulated.BLS12381Fr](v) + return emulated.ValueOf[ScalarField](v) } + +// ScalarField is the [emulated.FieldParams] impelementation of the curve scalar field. +type ScalarField = emulated.BLS12381Fr + +// BaseField is the [emulated.FieldParams] impelementation of the curve base field. +type BaseField = emulated.BLS12381Fp diff --git a/std/algebra/emulated/sw_bls12381/g2.go b/std/algebra/emulated/sw_bls12381/g2.go index 45077a6cba..3a7d2ab8c6 100644 --- a/std/algebra/emulated/sw_bls12381/g2.go +++ b/std/algebra/emulated/sw_bls12381/g2.go @@ -11,7 +11,7 @@ import ( type G2 struct { *fields_bls12381.Ext2 - u1, w *emulated.Element[emulated.BLS12381Fp] + u1, w *emulated.Element[BaseField] v *fields_bls12381.E2 } @@ -20,11 +20,11 @@ type G2Affine struct { } func NewG2(api frontend.API) *G2 { - w := emulated.ValueOf[emulated.BLS12381Fp]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436") - u1 := emulated.ValueOf[emulated.BLS12381Fp]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437") + w := emulated.ValueOf[BaseField]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436") + u1 := emulated.ValueOf[BaseField]("4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437") v := fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp]("2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530"), - A1: emulated.ValueOf[emulated.BLS12381Fp]("1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257"), + A0: emulated.ValueOf[BaseField]("2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530"), + A1: emulated.ValueOf[BaseField]("1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257"), } return &G2{ Ext2: fields_bls12381.NewExt2(api), @@ -37,12 +37,12 @@ func NewG2(api frontend.API) *G2 { func NewG2Affine(v bls12381.G2Affine) G2Affine { return G2Affine{ X: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.X.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.X.A1), + A0: emulated.ValueOf[BaseField](v.X.A0), + A1: emulated.ValueOf[BaseField](v.X.A1), }, Y: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.Y.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.Y.A1), + A0: emulated.ValueOf[BaseField](v.Y.A0), + A1: emulated.ValueOf[BaseField](v.Y.A1), }, } } diff --git a/std/algebra/emulated/sw_bls12381/pairing.go b/std/algebra/emulated/sw_bls12381/pairing.go index 570d558da1..3ec749e714 100644 --- a/std/algebra/emulated/sw_bls12381/pairing.go +++ b/std/algebra/emulated/sw_bls12381/pairing.go @@ -15,10 +15,10 @@ import ( type Pairing struct { api frontend.API *fields_bls12381.Ext12 - curveF *emulated.Field[emulated.BLS12381Fp] + curveF *emulated.Field[BaseField] g2 *G2 g1 *G1 - curve *sw_emulated.Curve[emulated.BLS12381Fp, emulated.BLS12381Fr] + curve *sw_emulated.Curve[BaseField, ScalarField] bTwist *fields_bls12381.E2 lines [4][63]fields_bls12381.E2 } @@ -29,47 +29,47 @@ func NewGTEl(v bls12381.GT) GTEl { return GTEl{ C0: fields_bls12381.E6{ B0: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B0.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B0.A1), + A0: emulated.ValueOf[BaseField](v.C0.B0.A0), + A1: emulated.ValueOf[BaseField](v.C0.B0.A1), }, B1: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B1.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B1.A1), + A0: emulated.ValueOf[BaseField](v.C0.B1.A0), + A1: emulated.ValueOf[BaseField](v.C0.B1.A1), }, B2: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B2.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C0.B2.A1), + A0: emulated.ValueOf[BaseField](v.C0.B2.A0), + A1: emulated.ValueOf[BaseField](v.C0.B2.A1), }, }, C1: fields_bls12381.E6{ B0: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B0.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B0.A1), + A0: emulated.ValueOf[BaseField](v.C1.B0.A0), + A1: emulated.ValueOf[BaseField](v.C1.B0.A1), }, B1: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B1.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B1.A1), + A0: emulated.ValueOf[BaseField](v.C1.B1.A0), + A1: emulated.ValueOf[BaseField](v.C1.B1.A1), }, B2: fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B2.A0), - A1: emulated.ValueOf[emulated.BLS12381Fp](v.C1.B2.A1), + A0: emulated.ValueOf[BaseField](v.C1.B2.A0), + A1: emulated.ValueOf[BaseField](v.C1.B2.A1), }, }, } } func NewPairing(api frontend.API) (*Pairing, error) { - ba, err := emulated.NewField[emulated.BLS12381Fp](api) + ba, err := emulated.NewField[BaseField](api) if err != nil { return nil, fmt.Errorf("new base api: %w", err) } - curve, err := sw_emulated.New[emulated.BLS12381Fp, emulated.BLS12381Fr](api, sw_emulated.GetBLS12381Params()) + curve, err := sw_emulated.New[BaseField, ScalarField](api, sw_emulated.GetBLS12381Params()) if err != nil { return nil, fmt.Errorf("new curve: %w", err) } bTwist := fields_bls12381.E2{ - A0: emulated.ValueOf[emulated.BLS12381Fp]("4"), - A1: emulated.ValueOf[emulated.BLS12381Fp]("4"), + A0: emulated.ValueOf[BaseField]("4"), + A1: emulated.ValueOf[BaseField]("4"), } g1, err := NewG1(api) if err != nil { @@ -281,7 +281,7 @@ func (pr Pairing) AssertIsOnG1(P *G1Affine) { // TODO: add phi and scalarMulBySeedSquare to g1.go // [x²]ϕ(P) phiP := pr.g1.phi(P) - seedSquare := emulated.ValueOf[emulated.BLS12381Fr]("228988810152649578064853576960394133504") + seedSquare := emulated.ValueOf[ScalarField]("228988810152649578064853576960394133504") // TODO: use addchain to construct a fixed-scalar ScalarMul _P := pr.curve.ScalarMul(phiP, &seedSquare) _P = pr.curve.Neg(_P) @@ -329,8 +329,8 @@ func (pr Pairing) MillerLoop(P []*G1Affine, Q []*G2Affine) (*GTEl, error) { var l1, l2 *lineEvaluation Qacc := make([]*G2Affine, n) - yInv := make([]*emulated.Element[emulated.BLS12381Fp], n) - xNegOverY := make([]*emulated.Element[emulated.BLS12381Fp], n) + yInv := make([]*emulated.Element[BaseField], n) + xNegOverY := make([]*emulated.Element[BaseField], n) for k := 0; k < n; k++ { Qacc[k] = Q[k] @@ -669,7 +669,7 @@ func (pr Pairing) MillerLoopFixedQ(P *G1Affine) (*GTEl, error) { res := pr.Ext12.One() - var yInv, xOverY *emulated.Element[emulated.BLS12381Fp] + var yInv, xOverY *emulated.Element[BaseField] // P and Q are supposed to be on G1 and G2 respectively of prime order r. // The point (x,0) is of order 2. But this function does not check @@ -729,7 +729,7 @@ func (pr Pairing) DoubleMillerLoopFixedQ(P, T *G1Affine, Q *G2Affine) (*GTEl, er var l1, l2 *lineEvaluation var Qacc *G2Affine Qacc = Q - var yInv, xNegOverY, y2Inv, x2OverY2 *emulated.Element[emulated.BLS12381Fp] + var yInv, xNegOverY, y2Inv, x2OverY2 *emulated.Element[BaseField] yInv = pr.curveF.Inverse(&P.Y) xNegOverY = pr.curveF.MulMod(&P.X, yInv) xNegOverY = pr.curveF.Neg(xNegOverY) diff --git a/std/algebra/emulated/sw_bls12381/precomputations.go b/std/algebra/emulated/sw_bls12381/precomputations.go index 2d3b45baf3..1f81a7581f 100644 --- a/std/algebra/emulated/sw_bls12381/precomputations.go +++ b/std/algebra/emulated/sw_bls12381/precomputations.go @@ -28,341 +28,341 @@ func getPrecomputedLines() [4][63]fields_bls12381.E2 { func computePrecomputedLines() [4][63]fields_bls12381.E2 { var PrecomputedLines [4][63]fields_bls12381.E2 // i = 62 - PrecomputedLines[0][62].A0 = emulated.ValueOf[emulated.BLS12381Fp]("669548411974166141085976469385723866436472370505741175753098277111398794822779266854375792083840680157046782393346") - PrecomputedLines[0][62].A1 = emulated.ValueOf[emulated.BLS12381Fp]("485573966283411892033555951945153738534613704502175152712350069145458247051515827246727572080547567638993006152517") - PrecomputedLines[1][62].A0 = emulated.ValueOf[emulated.BLS12381Fp]("732314894289793391974712446827048498840404262185434961420778947287791823788298610205403980970134873973855179358473") - PrecomputedLines[1][62].A1 = emulated.ValueOf[emulated.BLS12381Fp]("812131749855875379265953416260136615241951347320592877965506695109494376177747525031326561409216449039455993646505") - PrecomputedLines[2][62].A0 = emulated.ValueOf[emulated.BLS12381Fp]("812813015191018354207694813555941619677019645169301374927303155179580064739571240876370786966001693001968716962848") - PrecomputedLines[2][62].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3422194989631851684366263045255187543169850434295111246095065735670714951846252356682387297924035567868374078778836") - PrecomputedLines[3][62].A0 = emulated.ValueOf[emulated.BLS12381Fp]("157456865461253934305228427450035810208837931422473369102772999374350410389521892324920360694666903623614196805494") - PrecomputedLines[3][62].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3411528111412942541370177329760558674332800117796166840462360536268624996289772462833524354828959884682972709883122") + PrecomputedLines[0][62].A0 = emulated.ValueOf[BaseField]("669548411974166141085976469385723866436472370505741175753098277111398794822779266854375792083840680157046782393346") + PrecomputedLines[0][62].A1 = emulated.ValueOf[BaseField]("485573966283411892033555951945153738534613704502175152712350069145458247051515827246727572080547567638993006152517") + PrecomputedLines[1][62].A0 = emulated.ValueOf[BaseField]("732314894289793391974712446827048498840404262185434961420778947287791823788298610205403980970134873973855179358473") + PrecomputedLines[1][62].A1 = emulated.ValueOf[BaseField]("812131749855875379265953416260136615241951347320592877965506695109494376177747525031326561409216449039455993646505") + PrecomputedLines[2][62].A0 = emulated.ValueOf[BaseField]("812813015191018354207694813555941619677019645169301374927303155179580064739571240876370786966001693001968716962848") + PrecomputedLines[2][62].A1 = emulated.ValueOf[BaseField]("3422194989631851684366263045255187543169850434295111246095065735670714951846252356682387297924035567868374078778836") + PrecomputedLines[3][62].A0 = emulated.ValueOf[BaseField]("157456865461253934305228427450035810208837931422473369102772999374350410389521892324920360694666903623614196805494") + PrecomputedLines[3][62].A1 = emulated.ValueOf[BaseField]("3411528111412942541370177329760558674332800117796166840462360536268624996289772462833524354828959884682972709883122") // i = 61 - PrecomputedLines[0][61].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3167355389248931702681920381216519418222081367984652005711617948531982787239184999431930575874115723238533491899165") - PrecomputedLines[0][61].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3447267127263115595642074965719097743009312894047812306615936074422000773646907921701766406039366119066738894122723") - PrecomputedLines[1][61].A0 = emulated.ValueOf[emulated.BLS12381Fp]("688058980511165006458564368448205274272822292909762824504151377882157830132026052687556627274968720237714650160120") - PrecomputedLines[1][61].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3135587461047004958207254072262540591320988757795402058246794065635354508091637006911264790495996819610302037162717") + PrecomputedLines[0][61].A0 = emulated.ValueOf[BaseField]("3167355389248931702681920381216519418222081367984652005711617948531982787239184999431930575874115723238533491899165") + PrecomputedLines[0][61].A1 = emulated.ValueOf[BaseField]("3447267127263115595642074965719097743009312894047812306615936074422000773646907921701766406039366119066738894122723") + PrecomputedLines[1][61].A0 = emulated.ValueOf[BaseField]("688058980511165006458564368448205274272822292909762824504151377882157830132026052687556627274968720237714650160120") + PrecomputedLines[1][61].A1 = emulated.ValueOf[BaseField]("3135587461047004958207254072262540591320988757795402058246794065635354508091637006911264790495996819610302037162717") // i = 60 - PrecomputedLines[0][60].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1920944633235921513988518596278041022953356985015778043050763086272582601493666355019095852609650813854128544305181") - PrecomputedLines[0][60].A1 = emulated.ValueOf[emulated.BLS12381Fp]("860492157934473231829635744790033660958584147179311700394847602967819509512077660148051140335608956838465539095273") - PrecomputedLines[1][60].A0 = emulated.ValueOf[emulated.BLS12381Fp]("154735886397992143544806730614061370678971837934333975977429679584966012416707029831585725093568219539315233881659") - PrecomputedLines[1][60].A1 = emulated.ValueOf[emulated.BLS12381Fp]("376818648643968640397954810189258513612631887956420766739477434016962285151114935114922630691454914927141730374752") - PrecomputedLines[2][60].A0 = emulated.ValueOf[emulated.BLS12381Fp]("641527568955787391077163687908538469505081470399460441692301288737222490738061487415717406714694506016714777293130") - PrecomputedLines[2][60].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3744267661141807834055307161213218479864096716748396680737728943139485914722174229482692458759736989024915141720741") - PrecomputedLines[3][60].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1979277100806290341353932143559540821614946287031881379641593473632280348718200753415872393941708408115665834864981") - PrecomputedLines[3][60].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3524079793475292610139160896458047061630390153266629174975238784247652400355301532647529891858932671865719593746519") + PrecomputedLines[0][60].A0 = emulated.ValueOf[BaseField]("1920944633235921513988518596278041022953356985015778043050763086272582601493666355019095852609650813854128544305181") + PrecomputedLines[0][60].A1 = emulated.ValueOf[BaseField]("860492157934473231829635744790033660958584147179311700394847602967819509512077660148051140335608956838465539095273") + PrecomputedLines[1][60].A0 = emulated.ValueOf[BaseField]("154735886397992143544806730614061370678971837934333975977429679584966012416707029831585725093568219539315233881659") + PrecomputedLines[1][60].A1 = emulated.ValueOf[BaseField]("376818648643968640397954810189258513612631887956420766739477434016962285151114935114922630691454914927141730374752") + PrecomputedLines[2][60].A0 = emulated.ValueOf[BaseField]("641527568955787391077163687908538469505081470399460441692301288737222490738061487415717406714694506016714777293130") + PrecomputedLines[2][60].A1 = emulated.ValueOf[BaseField]("3744267661141807834055307161213218479864096716748396680737728943139485914722174229482692458759736989024915141720741") + PrecomputedLines[3][60].A0 = emulated.ValueOf[BaseField]("1979277100806290341353932143559540821614946287031881379641593473632280348718200753415872393941708408115665834864981") + PrecomputedLines[3][60].A1 = emulated.ValueOf[BaseField]("3524079793475292610139160896458047061630390153266629174975238784247652400355301532647529891858932671865719593746519") // i = 59 - PrecomputedLines[0][59].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2872686259828813821901776510081648106707612949930121757477603035304773855306148547185864242118276240939276501471912") - PrecomputedLines[0][59].A1 = emulated.ValueOf[emulated.BLS12381Fp]("920463563137047419952256970631145852261809899713740156757053940295816615150445509541799135283673190039502817405204") - PrecomputedLines[1][59].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3229873723050285868589420275301455820861051245243344751135273165330871017410167055454147819278539515196847338970604") - PrecomputedLines[1][59].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3250551647670882224581247559778513579667585374140502287850693829340751460016290130863912315736341727657711566097737") + PrecomputedLines[0][59].A0 = emulated.ValueOf[BaseField]("2872686259828813821901776510081648106707612949930121757477603035304773855306148547185864242118276240939276501471912") + PrecomputedLines[0][59].A1 = emulated.ValueOf[BaseField]("920463563137047419952256970631145852261809899713740156757053940295816615150445509541799135283673190039502817405204") + PrecomputedLines[1][59].A0 = emulated.ValueOf[BaseField]("3229873723050285868589420275301455820861051245243344751135273165330871017410167055454147819278539515196847338970604") + PrecomputedLines[1][59].A1 = emulated.ValueOf[BaseField]("3250551647670882224581247559778513579667585374140502287850693829340751460016290130863912315736341727657711566097737") // i = 58 - PrecomputedLines[0][58].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3714619193743885419585832708131169264803874205331637930392693795744061038893458100694631895928325428608821091186201") - PrecomputedLines[0][58].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2803750130323180936787347666144632907990389635882238646661111781401631109359498707800960039585964112969347050693538") - PrecomputedLines[1][58].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1472897540326065072059132746588167179515249703686025418792853111589229339540168375181352277937001709294618169294768") - PrecomputedLines[1][58].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3135206684301227064375208594383629110896364928784129558817953479498838576564714827663870236430119199289098913046652") + PrecomputedLines[0][58].A0 = emulated.ValueOf[BaseField]("3714619193743885419585832708131169264803874205331637930392693795744061038893458100694631895928325428608821091186201") + PrecomputedLines[0][58].A1 = emulated.ValueOf[BaseField]("2803750130323180936787347666144632907990389635882238646661111781401631109359498707800960039585964112969347050693538") + PrecomputedLines[1][58].A0 = emulated.ValueOf[BaseField]("1472897540326065072059132746588167179515249703686025418792853111589229339540168375181352277937001709294618169294768") + PrecomputedLines[1][58].A1 = emulated.ValueOf[BaseField]("3135206684301227064375208594383629110896364928784129558817953479498838576564714827663870236430119199289098913046652") // i = 57 - PrecomputedLines[0][57].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3809995718071284042151900973024488933103030049864031067071220848309199706820588472594891801557974102218497622700071") - PrecomputedLines[0][57].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3912165225431699058345901061393683854947363816159330562713945608955852170345560967680689194395447164868631283050372") - PrecomputedLines[1][57].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2612385026547803629760760529969977825484378330987722663235351236102353757267355059756029342891246063337681516513239") - PrecomputedLines[1][57].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3138408358796246446673337034537560252797484869470651011585286460917182785261415450828915245077625596387266880447102") - PrecomputedLines[2][57].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2710175849436261653096354516342437318921319381660945851344881244999005767888550326063765862016499488689860335247904") - PrecomputedLines[2][57].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3299315682062156295281559161247281711935174505100911525914443559341485746169616283628132512486441613155889807522683") - PrecomputedLines[3][57].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3885957143056127103039913083706920216817048993469158176611416475280944971176966597194215917398415610118443429941518") - PrecomputedLines[3][57].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1172972047837757111565152162191536831837373537643921973246599500915199390098182165856110670906629269605489393487725") + PrecomputedLines[0][57].A0 = emulated.ValueOf[BaseField]("3809995718071284042151900973024488933103030049864031067071220848309199706820588472594891801557974102218497622700071") + PrecomputedLines[0][57].A1 = emulated.ValueOf[BaseField]("3912165225431699058345901061393683854947363816159330562713945608955852170345560967680689194395447164868631283050372") + PrecomputedLines[1][57].A0 = emulated.ValueOf[BaseField]("2612385026547803629760760529969977825484378330987722663235351236102353757267355059756029342891246063337681516513239") + PrecomputedLines[1][57].A1 = emulated.ValueOf[BaseField]("3138408358796246446673337034537560252797484869470651011585286460917182785261415450828915245077625596387266880447102") + PrecomputedLines[2][57].A0 = emulated.ValueOf[BaseField]("2710175849436261653096354516342437318921319381660945851344881244999005767888550326063765862016499488689860335247904") + PrecomputedLines[2][57].A1 = emulated.ValueOf[BaseField]("3299315682062156295281559161247281711935174505100911525914443559341485746169616283628132512486441613155889807522683") + PrecomputedLines[3][57].A0 = emulated.ValueOf[BaseField]("3885957143056127103039913083706920216817048993469158176611416475280944971176966597194215917398415610118443429941518") + PrecomputedLines[3][57].A1 = emulated.ValueOf[BaseField]("1172972047837757111565152162191536831837373537643921973246599500915199390098182165856110670906629269605489393487725") // i = 57 - PrecomputedLines[0][56].A0 = emulated.ValueOf[emulated.BLS12381Fp]("622347879759205768011022247468749680855686299123085419284274056276134429911385606501233967974766218644366424518736") - PrecomputedLines[0][56].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1500740749189462026269065089655113278077195444343693251448994052320674556195186935156668341304929570114492129622057") - PrecomputedLines[1][56].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2795735917000119332024849594147759966503120883167292404312386146916548928506191157798369716404301202392840237584010") - PrecomputedLines[1][56].A1 = emulated.ValueOf[emulated.BLS12381Fp]("574044548578100921001269599195979818060436038680486863462612989496313429331211929276265366750107217926566428464671") + PrecomputedLines[0][56].A0 = emulated.ValueOf[BaseField]("622347879759205768011022247468749680855686299123085419284274056276134429911385606501233967974766218644366424518736") + PrecomputedLines[0][56].A1 = emulated.ValueOf[BaseField]("1500740749189462026269065089655113278077195444343693251448994052320674556195186935156668341304929570114492129622057") + PrecomputedLines[1][56].A0 = emulated.ValueOf[BaseField]("2795735917000119332024849594147759966503120883167292404312386146916548928506191157798369716404301202392840237584010") + PrecomputedLines[1][56].A1 = emulated.ValueOf[BaseField]("574044548578100921001269599195979818060436038680486863462612989496313429331211929276265366750107217926566428464671") // i = 56 - PrecomputedLines[0][55].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1683807955380296529179464277356150583410685997285060844955332063027770486188723773848801053602792684661825764852985") - PrecomputedLines[0][55].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2719558810791192088850367207927359344511225919945451359115915371928444741396004265400249643841105922892835790005551") - PrecomputedLines[1][55].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2969634126445395157111080166389580842022545720354905778776357619927566473203993743030834911454836656475683368211894") - PrecomputedLines[1][55].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3170175285127781392809786438941043126306291403685156491643424647115525372973022802000864505005625723904690328063907") + PrecomputedLines[0][55].A0 = emulated.ValueOf[BaseField]("1683807955380296529179464277356150583410685997285060844955332063027770486188723773848801053602792684661825764852985") + PrecomputedLines[0][55].A1 = emulated.ValueOf[BaseField]("2719558810791192088850367207927359344511225919945451359115915371928444741396004265400249643841105922892835790005551") + PrecomputedLines[1][55].A0 = emulated.ValueOf[BaseField]("2969634126445395157111080166389580842022545720354905778776357619927566473203993743030834911454836656475683368211894") + PrecomputedLines[1][55].A1 = emulated.ValueOf[BaseField]("3170175285127781392809786438941043126306291403685156491643424647115525372973022802000864505005625723904690328063907") // i = 54 - PrecomputedLines[0][54].A0 = emulated.ValueOf[emulated.BLS12381Fp]("375779067730788644310925153474821811448285005848537210975950783963851371044263319992105676186250155417651098156170") - PrecomputedLines[0][54].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3733966523158115416788023430991316807003829120352154621710514483269358061039041785724604609643071428687478543399533") - PrecomputedLines[1][54].A0 = emulated.ValueOf[emulated.BLS12381Fp]("750499460814355297922927817774908099053943604885008295706164614840446320259237167343783111403152276091379252684616") - PrecomputedLines[1][54].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2825318853533025835349605808545710541034664742563654571824138682643441922126128300908285862303401700954453127481714") + PrecomputedLines[0][54].A0 = emulated.ValueOf[BaseField]("375779067730788644310925153474821811448285005848537210975950783963851371044263319992105676186250155417651098156170") + PrecomputedLines[0][54].A1 = emulated.ValueOf[BaseField]("3733966523158115416788023430991316807003829120352154621710514483269358061039041785724604609643071428687478543399533") + PrecomputedLines[1][54].A0 = emulated.ValueOf[BaseField]("750499460814355297922927817774908099053943604885008295706164614840446320259237167343783111403152276091379252684616") + PrecomputedLines[1][54].A1 = emulated.ValueOf[BaseField]("2825318853533025835349605808545710541034664742563654571824138682643441922126128300908285862303401700954453127481714") // i = 53 - PrecomputedLines[0][53].A0 = emulated.ValueOf[emulated.BLS12381Fp]("627679888100276358357176940007265575606442637514150679111460077647327322461845493796232024954906194988731412742990") - PrecomputedLines[0][53].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1640474007465603807593221117315813768631350077835933129371268729206573832387041087097824928540207001461881471678365") - PrecomputedLines[1][53].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3023647540724840221448340194237062576117700682390969333781535156475098745856085799973057471235608525769873178028191") - PrecomputedLines[1][53].A1 = emulated.ValueOf[emulated.BLS12381Fp]("486526745657630431509941094224758430578307862719388319027652292841508433960493074790673321073294175358344563135416") + PrecomputedLines[0][53].A0 = emulated.ValueOf[BaseField]("627679888100276358357176940007265575606442637514150679111460077647327322461845493796232024954906194988731412742990") + PrecomputedLines[0][53].A1 = emulated.ValueOf[BaseField]("1640474007465603807593221117315813768631350077835933129371268729206573832387041087097824928540207001461881471678365") + PrecomputedLines[1][53].A0 = emulated.ValueOf[BaseField]("3023647540724840221448340194237062576117700682390969333781535156475098745856085799973057471235608525769873178028191") + PrecomputedLines[1][53].A1 = emulated.ValueOf[BaseField]("486526745657630431509941094224758430578307862719388319027652292841508433960493074790673321073294175358344563135416") // i = 52 - PrecomputedLines[0][52].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3650296230206170331461948170412665436446748701218003831277887253654064277753511532962960553265563620360134226064014") - PrecomputedLines[0][52].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2409561215938887896965536259947303617818362458239899554408099496657146779228013561109106195165888510812287420438371") - PrecomputedLines[1][52].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2519665618777597708805426117626873044241626169780728743913542033986762322452960126595474642740412111194932498442424") - PrecomputedLines[1][52].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2995288065509063655204878433593032419361001555657280878228932810763402933565472618640755136903486140985217860614430") + PrecomputedLines[0][52].A0 = emulated.ValueOf[BaseField]("3650296230206170331461948170412665436446748701218003831277887253654064277753511532962960553265563620360134226064014") + PrecomputedLines[0][52].A1 = emulated.ValueOf[BaseField]("2409561215938887896965536259947303617818362458239899554408099496657146779228013561109106195165888510812287420438371") + PrecomputedLines[1][52].A0 = emulated.ValueOf[BaseField]("2519665618777597708805426117626873044241626169780728743913542033986762322452960126595474642740412111194932498442424") + PrecomputedLines[1][52].A1 = emulated.ValueOf[BaseField]("2995288065509063655204878433593032419361001555657280878228932810763402933565472618640755136903486140985217860614430") // i = 51 - PrecomputedLines[0][51].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3965943146012523012436886123935901259641842878949589183385440733070650071752022700848687298008706652773189789571156") - PrecomputedLines[0][51].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3781587587887830119678014027926478229242655143168314612514566854608758381016640445590396766447463238149599614345643") - PrecomputedLines[1][51].A0 = emulated.ValueOf[emulated.BLS12381Fp]("281493173741755688481134681014554614648591125791327736577228157760720931895294993775883808637897570982349481278455") - PrecomputedLines[1][51].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3993652227334123342020529370134577009762551708442580124648039753538411625652437681601773709227840139276954956023720") + PrecomputedLines[0][51].A0 = emulated.ValueOf[BaseField]("3965943146012523012436886123935901259641842878949589183385440733070650071752022700848687298008706652773189789571156") + PrecomputedLines[0][51].A1 = emulated.ValueOf[BaseField]("3781587587887830119678014027926478229242655143168314612514566854608758381016640445590396766447463238149599614345643") + PrecomputedLines[1][51].A0 = emulated.ValueOf[BaseField]("281493173741755688481134681014554614648591125791327736577228157760720931895294993775883808637897570982349481278455") + PrecomputedLines[1][51].A1 = emulated.ValueOf[BaseField]("3993652227334123342020529370134577009762551708442580124648039753538411625652437681601773709227840139276954956023720") // i = 50 - PrecomputedLines[0][50].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2516524990890051114557830172624952846622696966741855268858924752689012638050134098337291599300347049762631249499009") - PrecomputedLines[0][50].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2838277724440483542250261902488325609796685855313384724751745262627242917164815168643675221659225278029646010530898") - PrecomputedLines[1][50].A0 = emulated.ValueOf[emulated.BLS12381Fp]("205814431017841781529711167473014574588315078838308781682081636487986677792974415834575517630013694964226548873843") - PrecomputedLines[1][50].A1 = emulated.ValueOf[emulated.BLS12381Fp]("457345270056658240314731954295238544045524550279216572405272871385901601878145910922764232048405028749348986319946") - PrecomputedLines[0][50].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2516524990890051114557830172624952846622696966741855268858924752689012638050134098337291599300347049762631249499009") + PrecomputedLines[0][50].A0 = emulated.ValueOf[BaseField]("2516524990890051114557830172624952846622696966741855268858924752689012638050134098337291599300347049762631249499009") + PrecomputedLines[0][50].A1 = emulated.ValueOf[BaseField]("2838277724440483542250261902488325609796685855313384724751745262627242917164815168643675221659225278029646010530898") + PrecomputedLines[1][50].A0 = emulated.ValueOf[BaseField]("205814431017841781529711167473014574588315078838308781682081636487986677792974415834575517630013694964226548873843") + PrecomputedLines[1][50].A1 = emulated.ValueOf[BaseField]("457345270056658240314731954295238544045524550279216572405272871385901601878145910922764232048405028749348986319946") + PrecomputedLines[0][50].A0 = emulated.ValueOf[BaseField]("2516524990890051114557830172624952846622696966741855268858924752689012638050134098337291599300347049762631249499009") // i = 49 - PrecomputedLines[0][49].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1020346919919454689345686298025664492420578570709403850078404276953749437271628605608591033953577550721312654894751") - PrecomputedLines[0][49].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2035233040573767290854203089478489933625643223841740794072513917724855861269094032057797894488383395594601648501710") - PrecomputedLines[1][49].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1327235758160253855593076914415418147974794848908239888587061087772903111782401424731516402162647994151356947511796") - PrecomputedLines[1][49].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2345983157885705725975284492081588828805085626463839465716669020430923654178549024685469937397030677495963662130017") + PrecomputedLines[0][49].A0 = emulated.ValueOf[BaseField]("1020346919919454689345686298025664492420578570709403850078404276953749437271628605608591033953577550721312654894751") + PrecomputedLines[0][49].A1 = emulated.ValueOf[BaseField]("2035233040573767290854203089478489933625643223841740794072513917724855861269094032057797894488383395594601648501710") + PrecomputedLines[1][49].A0 = emulated.ValueOf[BaseField]("1327235758160253855593076914415418147974794848908239888587061087772903111782401424731516402162647994151356947511796") + PrecomputedLines[1][49].A1 = emulated.ValueOf[BaseField]("2345983157885705725975284492081588828805085626463839465716669020430923654178549024685469937397030677495963662130017") // i = 48 - PrecomputedLines[0][48].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3999794500002364705194387996540043058996671076749672420994976952879632456695054734701262124117567376514305999316548") - PrecomputedLines[0][48].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2037523712914198976262251711094301512285508453137565038665483625864472133289646125530201428506022430707543797731060") - PrecomputedLines[1][48].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1634161835818922950487208355001947642560543372116279175990598010448156542079631096605929066390913044814879119808353") - PrecomputedLines[1][48].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2554166153844771975465431059358548130366205693353150926329014635702290148449003780762406943828228518337363360267088") - PrecomputedLines[2][48].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2774236537775390183063657058358755572488017173035729341596763163103225009018936586885492696339030774916510005182013") - PrecomputedLines[2][48].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1173654495128890249932151437147000173891141885237377296676843456320239874043343036348838009942995118588197235041811") - PrecomputedLines[3][48].A0 = emulated.ValueOf[emulated.BLS12381Fp]("319716182789485809633400119894079442154863170302317662942572724308602882847075525211093447184144874467659787199054") - PrecomputedLines[3][48].A1 = emulated.ValueOf[emulated.BLS12381Fp]("665774523119220953421023874996858698673633880237440435786173568687987025043665032919009942945066009450203009618903") + PrecomputedLines[0][48].A0 = emulated.ValueOf[BaseField]("3999794500002364705194387996540043058996671076749672420994976952879632456695054734701262124117567376514305999316548") + PrecomputedLines[0][48].A1 = emulated.ValueOf[BaseField]("2037523712914198976262251711094301512285508453137565038665483625864472133289646125530201428506022430707543797731060") + PrecomputedLines[1][48].A0 = emulated.ValueOf[BaseField]("1634161835818922950487208355001947642560543372116279175990598010448156542079631096605929066390913044814879119808353") + PrecomputedLines[1][48].A1 = emulated.ValueOf[BaseField]("2554166153844771975465431059358548130366205693353150926329014635702290148449003780762406943828228518337363360267088") + PrecomputedLines[2][48].A0 = emulated.ValueOf[BaseField]("2774236537775390183063657058358755572488017173035729341596763163103225009018936586885492696339030774916510005182013") + PrecomputedLines[2][48].A1 = emulated.ValueOf[BaseField]("1173654495128890249932151437147000173891141885237377296676843456320239874043343036348838009942995118588197235041811") + PrecomputedLines[3][48].A0 = emulated.ValueOf[BaseField]("319716182789485809633400119894079442154863170302317662942572724308602882847075525211093447184144874467659787199054") + PrecomputedLines[3][48].A1 = emulated.ValueOf[BaseField]("665774523119220953421023874996858698673633880237440435786173568687987025043665032919009942945066009450203009618903") // i = 47 - PrecomputedLines[0][47].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1352228522597441161137908156105710498714604453933397629408772872193339853796874615484054546448392540809392766374868") - PrecomputedLines[0][47].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1672392011071112149342136031100062933670641454779307380594553264807703694958126664626067442230569492865463262059558") - PrecomputedLines[1][47].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1599374044309101711396661090243685761282731445460192675445448884679532421917337092819806700750615911921798461360121") - PrecomputedLines[1][47].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2512650952901556745731974003978943420505200981672715597095524880689593099413101445780656721815785475053889081706678") + PrecomputedLines[0][47].A0 = emulated.ValueOf[BaseField]("1352228522597441161137908156105710498714604453933397629408772872193339853796874615484054546448392540809392766374868") + PrecomputedLines[0][47].A1 = emulated.ValueOf[BaseField]("1672392011071112149342136031100062933670641454779307380594553264807703694958126664626067442230569492865463262059558") + PrecomputedLines[1][47].A0 = emulated.ValueOf[BaseField]("1599374044309101711396661090243685761282731445460192675445448884679532421917337092819806700750615911921798461360121") + PrecomputedLines[1][47].A1 = emulated.ValueOf[BaseField]("2512650952901556745731974003978943420505200981672715597095524880689593099413101445780656721815785475053889081706678") // i = 46 - PrecomputedLines[0][46].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3471020969331868339274745424267673875484897140558715059509458909017470303217040695247408058206798726472147178123123") - PrecomputedLines[0][46].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2819047325620898479367544526754144985358723664205955650131575490077399551405667341723146320896830720801098582857709") - PrecomputedLines[1][46].A0 = emulated.ValueOf[emulated.BLS12381Fp]("630925931142976074685573795766009010345551824202186317510723152511213269382926514663889003322958192458264917883739") - PrecomputedLines[1][46].A1 = emulated.ValueOf[emulated.BLS12381Fp]("730708946329622469595393173442148447611685401673527273593418546020927684409753133837520124894637951916365839386160") + PrecomputedLines[0][46].A0 = emulated.ValueOf[BaseField]("3471020969331868339274745424267673875484897140558715059509458909017470303217040695247408058206798726472147178123123") + PrecomputedLines[0][46].A1 = emulated.ValueOf[BaseField]("2819047325620898479367544526754144985358723664205955650131575490077399551405667341723146320896830720801098582857709") + PrecomputedLines[1][46].A0 = emulated.ValueOf[BaseField]("630925931142976074685573795766009010345551824202186317510723152511213269382926514663889003322958192458264917883739") + PrecomputedLines[1][46].A1 = emulated.ValueOf[BaseField]("730708946329622469595393173442148447611685401673527273593418546020927684409753133837520124894637951916365839386160") // i = 45 - PrecomputedLines[0][45].A0 = emulated.ValueOf[emulated.BLS12381Fp]("198412400636007802811072148882119615622478984710784674204538043831911964641933587009134635150884704808699172988667") - PrecomputedLines[0][45].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1235538121757394673935269190943945445103307027490144781712140275173202783709742505176430745360811309204020795810303") - PrecomputedLines[1][45].A0 = emulated.ValueOf[emulated.BLS12381Fp]("127449723165767618160544163158081887167750270799206910156801724420258731910725471222101164978860927062135819778920") - PrecomputedLines[1][45].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1980335922546437651709751133736030207175349461879996979062693453362277374709777569183416036000958323716762049291744") + PrecomputedLines[0][45].A0 = emulated.ValueOf[BaseField]("198412400636007802811072148882119615622478984710784674204538043831911964641933587009134635150884704808699172988667") + PrecomputedLines[0][45].A1 = emulated.ValueOf[BaseField]("1235538121757394673935269190943945445103307027490144781712140275173202783709742505176430745360811309204020795810303") + PrecomputedLines[1][45].A0 = emulated.ValueOf[BaseField]("127449723165767618160544163158081887167750270799206910156801724420258731910725471222101164978860927062135819778920") + PrecomputedLines[1][45].A1 = emulated.ValueOf[BaseField]("1980335922546437651709751133736030207175349461879996979062693453362277374709777569183416036000958323716762049291744") // i = 44 - PrecomputedLines[0][44].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3542992614482057236559067235605651529999889272871178993863126553661986885573156923893097305492580034291218414473014") - PrecomputedLines[0][44].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3584527953490094615607685914397103924239362747279962542688598060206411425604001638641737039186638967633649455194291") - PrecomputedLines[1][44].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2933771789553990042831343608346228744924936740235468281265740746084993415654144367825141102522105790771732605662673") - PrecomputedLines[1][44].A1 = emulated.ValueOf[emulated.BLS12381Fp]("357221450466112351467892138625473814367000466631434933520256036228321581439111528221088566194593092448380607628937") + PrecomputedLines[0][44].A0 = emulated.ValueOf[BaseField]("3542992614482057236559067235605651529999889272871178993863126553661986885573156923893097305492580034291218414473014") + PrecomputedLines[0][44].A1 = emulated.ValueOf[BaseField]("3584527953490094615607685914397103924239362747279962542688598060206411425604001638641737039186638967633649455194291") + PrecomputedLines[1][44].A0 = emulated.ValueOf[BaseField]("2933771789553990042831343608346228744924936740235468281265740746084993415654144367825141102522105790771732605662673") + PrecomputedLines[1][44].A1 = emulated.ValueOf[BaseField]("357221450466112351467892138625473814367000466631434933520256036228321581439111528221088566194593092448380607628937") // i = 43 - PrecomputedLines[0][43].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1428505519858414724963788585080455020779142968543396706742348738430903946057154444325924558405113243287649847547028") - PrecomputedLines[0][43].A1 = emulated.ValueOf[emulated.BLS12381Fp]("255469568805094053943811439244838133421341964456430345396115388192792360855759659375210457840330885549905265166174") - PrecomputedLines[1][43].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2841916087237451089871919956880030230404765495311921549225109128734951911064362232331455183143163787624459526919204") - PrecomputedLines[1][43].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2080277921400703811750799004531700060990459649936071284451991088891151958553636754908447208794532902985981717385197") + PrecomputedLines[0][43].A0 = emulated.ValueOf[BaseField]("1428505519858414724963788585080455020779142968543396706742348738430903946057154444325924558405113243287649847547028") + PrecomputedLines[0][43].A1 = emulated.ValueOf[BaseField]("255469568805094053943811439244838133421341964456430345396115388192792360855759659375210457840330885549905265166174") + PrecomputedLines[1][43].A0 = emulated.ValueOf[BaseField]("2841916087237451089871919956880030230404765495311921549225109128734951911064362232331455183143163787624459526919204") + PrecomputedLines[1][43].A1 = emulated.ValueOf[BaseField]("2080277921400703811750799004531700060990459649936071284451991088891151958553636754908447208794532902985981717385197") // i = 42 - PrecomputedLines[0][42].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1161813519543100832448485023726218217911506899980751063568982100444610240283155458678085859357761886310777271380218") - PrecomputedLines[0][42].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2024543557518754018225240025183007210142579342901765863468909024213131985052250019822553016575047190637324971172371") - PrecomputedLines[1][42].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1300348585886929751726227943801215133444838387886469335147731950649896068046555404665420122667116820807544395572991") - PrecomputedLines[1][42].A1 = emulated.ValueOf[emulated.BLS12381Fp]("132553990561974819643301422280568738175710696265452865499319629218595397851655434827834869071879254702329949577177") + PrecomputedLines[0][42].A0 = emulated.ValueOf[BaseField]("1161813519543100832448485023726218217911506899980751063568982100444610240283155458678085859357761886310777271380218") + PrecomputedLines[0][42].A1 = emulated.ValueOf[BaseField]("2024543557518754018225240025183007210142579342901765863468909024213131985052250019822553016575047190637324971172371") + PrecomputedLines[1][42].A0 = emulated.ValueOf[BaseField]("1300348585886929751726227943801215133444838387886469335147731950649896068046555404665420122667116820807544395572991") + PrecomputedLines[1][42].A1 = emulated.ValueOf[BaseField]("132553990561974819643301422280568738175710696265452865499319629218595397851655434827834869071879254702329949577177") // i = 41 - PrecomputedLines[0][41].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3663938147630410348590845529884105686512799097554693485461263550839609650459905357149747443181106900675222183621502") - PrecomputedLines[0][41].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1167353691883536575912237192065757084296471281152540061033126407319851295132511138053309418864479978963783870392046") - PrecomputedLines[1][41].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2502366363958385636575096731742781445822573495751060987471063288395705513008577494849055381410929299192520021143963") - PrecomputedLines[1][41].A1 = emulated.ValueOf[emulated.BLS12381Fp]("168012017786556155916365424936030459963969329890011871555391199195524501359161804719804475541392820589754269324473") + PrecomputedLines[0][41].A0 = emulated.ValueOf[BaseField]("3663938147630410348590845529884105686512799097554693485461263550839609650459905357149747443181106900675222183621502") + PrecomputedLines[0][41].A1 = emulated.ValueOf[BaseField]("1167353691883536575912237192065757084296471281152540061033126407319851295132511138053309418864479978963783870392046") + PrecomputedLines[1][41].A0 = emulated.ValueOf[BaseField]("2502366363958385636575096731742781445822573495751060987471063288395705513008577494849055381410929299192520021143963") + PrecomputedLines[1][41].A1 = emulated.ValueOf[BaseField]("168012017786556155916365424936030459963969329890011871555391199195524501359161804719804475541392820589754269324473") // i = 40 - PrecomputedLines[0][40].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3422147736366383751754174069648796681157726214083354570593473083443425258197833570132918683247736376295040893339583") - PrecomputedLines[0][40].A1 = emulated.ValueOf[emulated.BLS12381Fp]("11337927206202880824871358790200052804337474988256558556739237234008272644532973070128389538534846278251601901582") - PrecomputedLines[1][40].A0 = emulated.ValueOf[emulated.BLS12381Fp]("937059775967306522240360587341180755614199042950625504697937131942983650460054919541269959395433778244986419803777") - PrecomputedLines[1][40].A1 = emulated.ValueOf[emulated.BLS12381Fp]("452377712017692674398905129564653333739311305247415895016831258644194298528119821127996385402381262854234490259250") + PrecomputedLines[0][40].A0 = emulated.ValueOf[BaseField]("3422147736366383751754174069648796681157726214083354570593473083443425258197833570132918683247736376295040893339583") + PrecomputedLines[0][40].A1 = emulated.ValueOf[BaseField]("11337927206202880824871358790200052804337474988256558556739237234008272644532973070128389538534846278251601901582") + PrecomputedLines[1][40].A0 = emulated.ValueOf[BaseField]("937059775967306522240360587341180755614199042950625504697937131942983650460054919541269959395433778244986419803777") + PrecomputedLines[1][40].A1 = emulated.ValueOf[BaseField]("452377712017692674398905129564653333739311305247415895016831258644194298528119821127996385402381262854234490259250") // i = 39 - PrecomputedLines[0][39].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3612997970192046360277946172414595493705800672421085458639618548707813391029436946048064626238111588216813929361632") - PrecomputedLines[0][39].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1878416626790773315050527185017103501757993372372008108763726391343181754684270883343531865692543923966766615449574") - PrecomputedLines[1][39].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1064399826825526943533915590474819784350899403610383371512627205253691058435433480324428528977455879008913187859489") - PrecomputedLines[1][39].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1493858117017686382025018246020080696784248677063660248506323896583625254078001520559429449267479753774555640656115") + PrecomputedLines[0][39].A0 = emulated.ValueOf[BaseField]("3612997970192046360277946172414595493705800672421085458639618548707813391029436946048064626238111588216813929361632") + PrecomputedLines[0][39].A1 = emulated.ValueOf[BaseField]("1878416626790773315050527185017103501757993372372008108763726391343181754684270883343531865692543923966766615449574") + PrecomputedLines[1][39].A0 = emulated.ValueOf[BaseField]("1064399826825526943533915590474819784350899403610383371512627205253691058435433480324428528977455879008913187859489") + PrecomputedLines[1][39].A1 = emulated.ValueOf[BaseField]("1493858117017686382025018246020080696784248677063660248506323896583625254078001520559429449267479753774555640656115") // i = 38 - PrecomputedLines[0][38].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1735664856890207310169253204399524178813326485311425355248369023944857598179113751774794101343852837913801486402934") - PrecomputedLines[0][38].A1 = emulated.ValueOf[emulated.BLS12381Fp]("257987757689159452904715641284385152828467715986517600177681521531352535362174538747360373817060560772313858089722") - PrecomputedLines[1][38].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3946465293088454781014388324927134871913047898475854876800085625862621433529365655612871749364409826568968642462682") - PrecomputedLines[1][38].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3514516048833750160654616198372533402722421230509993177084104711179394585961253245647565370709206323382607579115108") + PrecomputedLines[0][38].A0 = emulated.ValueOf[BaseField]("1735664856890207310169253204399524178813326485311425355248369023944857598179113751774794101343852837913801486402934") + PrecomputedLines[0][38].A1 = emulated.ValueOf[BaseField]("257987757689159452904715641284385152828467715986517600177681521531352535362174538747360373817060560772313858089722") + PrecomputedLines[1][38].A0 = emulated.ValueOf[BaseField]("3946465293088454781014388324927134871913047898475854876800085625862621433529365655612871749364409826568968642462682") + PrecomputedLines[1][38].A1 = emulated.ValueOf[BaseField]("3514516048833750160654616198372533402722421230509993177084104711179394585961253245647565370709206323382607579115108") // i = 37 - PrecomputedLines[0][37].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1401520457984247779943479808418140600316441439198119727504755495446774329464642961053357870501084879285839953943267") - PrecomputedLines[0][37].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3801631184852487334845090396139279606066156434973587251458920274531296829855683500529675477873800149183554843368547") - PrecomputedLines[1][37].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3793843723599766510128907097460302748913564383405034491079209933664814101598005798700867405427941067839702387132551") - PrecomputedLines[1][37].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3306940590973833542721039863858362748858705070089020543718304082366722282663705234043233941444934273726393427156475") + PrecomputedLines[0][37].A0 = emulated.ValueOf[BaseField]("1401520457984247779943479808418140600316441439198119727504755495446774329464642961053357870501084879285839953943267") + PrecomputedLines[0][37].A1 = emulated.ValueOf[BaseField]("3801631184852487334845090396139279606066156434973587251458920274531296829855683500529675477873800149183554843368547") + PrecomputedLines[1][37].A0 = emulated.ValueOf[BaseField]("3793843723599766510128907097460302748913564383405034491079209933664814101598005798700867405427941067839702387132551") + PrecomputedLines[1][37].A1 = emulated.ValueOf[BaseField]("3306940590973833542721039863858362748858705070089020543718304082366722282663705234043233941444934273726393427156475") // i = 36 - PrecomputedLines[0][36].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1386206426371721430883261200223512381487749770457988721883157746964420160482463384316863927260168499246730796790725") - PrecomputedLines[0][36].A1 = emulated.ValueOf[emulated.BLS12381Fp]("105258678333128666521354740403587795176240437377501517632246986958341935429854720947092812955927086837476976184408") - PrecomputedLines[1][36].A0 = emulated.ValueOf[emulated.BLS12381Fp]("932703267338824377065600514218801996331026291359027400436063614448672472594233465820977170328221080390337491527475") - PrecomputedLines[1][36].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1997691216719219792140629951813670927631278876322624455128068353052974430392275280843680022909857531980837305445355") + PrecomputedLines[0][36].A0 = emulated.ValueOf[BaseField]("1386206426371721430883261200223512381487749770457988721883157746964420160482463384316863927260168499246730796790725") + PrecomputedLines[0][36].A1 = emulated.ValueOf[BaseField]("105258678333128666521354740403587795176240437377501517632246986958341935429854720947092812955927086837476976184408") + PrecomputedLines[1][36].A0 = emulated.ValueOf[BaseField]("932703267338824377065600514218801996331026291359027400436063614448672472594233465820977170328221080390337491527475") + PrecomputedLines[1][36].A1 = emulated.ValueOf[BaseField]("1997691216719219792140629951813670927631278876322624455128068353052974430392275280843680022909857531980837305445355") // i = 35 - PrecomputedLines[0][35].A0 = emulated.ValueOf[emulated.BLS12381Fp]("643376698540159636558778051726667023044743522340636476360479502393735290090800846463555049440499660661597709502815") - PrecomputedLines[0][35].A1 = emulated.ValueOf[emulated.BLS12381Fp]("273152130480947176848926276607476536605977478035570463953153325427234725841518087669121533072492261967650512345505") - PrecomputedLines[1][35].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2884756623806302783060959589833895994361358453330946927482503242534883207284024199766671460228049002959968955556544") - PrecomputedLines[1][35].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1104408845625748157498570748739992116575830335623545342349641509468821031457722373198091225304845345864484821816520") + PrecomputedLines[0][35].A0 = emulated.ValueOf[BaseField]("643376698540159636558778051726667023044743522340636476360479502393735290090800846463555049440499660661597709502815") + PrecomputedLines[0][35].A1 = emulated.ValueOf[BaseField]("273152130480947176848926276607476536605977478035570463953153325427234725841518087669121533072492261967650512345505") + PrecomputedLines[1][35].A0 = emulated.ValueOf[BaseField]("2884756623806302783060959589833895994361358453330946927482503242534883207284024199766671460228049002959968955556544") + PrecomputedLines[1][35].A1 = emulated.ValueOf[BaseField]("1104408845625748157498570748739992116575830335623545342349641509468821031457722373198091225304845345864484821816520") // i = 34 - PrecomputedLines[0][34].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2355394091472044936279825599359959938355474687645308765411687460086621236866142452518153528913315194632130423391438") - PrecomputedLines[0][34].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1514545828569599419557358915925562383958111322715051805092136729868625115938669404676383501473562085370690718143393") - PrecomputedLines[1][34].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2342810081178981235002861700946741808510377823228526922452112941039257271124158122048943685128217560845825533768234") - PrecomputedLines[1][34].A1 = emulated.ValueOf[emulated.BLS12381Fp]("503445239041840170015602950815430394154806858030319353226841813139639784228695779691934743598652740721050230266959") + PrecomputedLines[0][34].A0 = emulated.ValueOf[BaseField]("2355394091472044936279825599359959938355474687645308765411687460086621236866142452518153528913315194632130423391438") + PrecomputedLines[0][34].A1 = emulated.ValueOf[BaseField]("1514545828569599419557358915925562383958111322715051805092136729868625115938669404676383501473562085370690718143393") + PrecomputedLines[1][34].A0 = emulated.ValueOf[BaseField]("2342810081178981235002861700946741808510377823228526922452112941039257271124158122048943685128217560845825533768234") + PrecomputedLines[1][34].A1 = emulated.ValueOf[BaseField]("503445239041840170015602950815430394154806858030319353226841813139639784228695779691934743598652740721050230266959") // i = 33 - PrecomputedLines[0][33].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2657084885954644398746184778816531794363952823725527101620555492372505275656368937266127716153751518258248254165182") - PrecomputedLines[0][33].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2950867322457899876246688634040402014645144799326166449560101370115712320898754509054993314536417523566518362136876") - PrecomputedLines[1][33].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2243909572679435242054837525492887593116525671610805132367202750543401085997072583661340355528884399865342689858236") - PrecomputedLines[1][33].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3479899708432584697662617257428806293863393731873139669667415845090665473410343628859481184318696801412878547924785") + PrecomputedLines[0][33].A0 = emulated.ValueOf[BaseField]("2657084885954644398746184778816531794363952823725527101620555492372505275656368937266127716153751518258248254165182") + PrecomputedLines[0][33].A1 = emulated.ValueOf[BaseField]("2950867322457899876246688634040402014645144799326166449560101370115712320898754509054993314536417523566518362136876") + PrecomputedLines[1][33].A0 = emulated.ValueOf[BaseField]("2243909572679435242054837525492887593116525671610805132367202750543401085997072583661340355528884399865342689858236") + PrecomputedLines[1][33].A1 = emulated.ValueOf[BaseField]("3479899708432584697662617257428806293863393731873139669667415845090665473410343628859481184318696801412878547924785") // i = 32 - PrecomputedLines[0][32].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3132063229600917670613891136589922564588967418494067208567202658993587612721110746333109603494327519775953076104661") - PrecomputedLines[0][32].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1275373167524064736373612114593617177217617901632801154941510388392008224603906384641920546232940016648324112284352") - PrecomputedLines[1][32].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1951281490834827378430403879656313795704179094690571238995959924602423201300568801597213153338556343940337082564163") - PrecomputedLines[1][32].A1 = emulated.ValueOf[emulated.BLS12381Fp]("874739535077666291108709093692947749877527789473195415417438679809595046593449884845499149689457088132546512367865") + PrecomputedLines[0][32].A0 = emulated.ValueOf[BaseField]("3132063229600917670613891136589922564588967418494067208567202658993587612721110746333109603494327519775953076104661") + PrecomputedLines[0][32].A1 = emulated.ValueOf[BaseField]("1275373167524064736373612114593617177217617901632801154941510388392008224603906384641920546232940016648324112284352") + PrecomputedLines[1][32].A0 = emulated.ValueOf[BaseField]("1951281490834827378430403879656313795704179094690571238995959924602423201300568801597213153338556343940337082564163") + PrecomputedLines[1][32].A1 = emulated.ValueOf[BaseField]("874739535077666291108709093692947749877527789473195415417438679809595046593449884845499149689457088132546512367865") // i = 31 - PrecomputedLines[0][31].A0 = emulated.ValueOf[emulated.BLS12381Fp]("86053440242818054368053994258080131501108197513542421797885566985997737396079590383222681554582578024765554005575") - PrecomputedLines[0][31].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3230634811109724887953064878272037919734346474897928436938220980193233349186994534217923136215960889197535862790414") - PrecomputedLines[1][31].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1578872153108485586740648390134492363858521364266818906972887979762709384757209232552002419238395578707827072494146") - PrecomputedLines[1][31].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3346182034080587137847082053075136548616290128507231616924000212671337956860278775275340632986689511391294754917950") + PrecomputedLines[0][31].A0 = emulated.ValueOf[BaseField]("86053440242818054368053994258080131501108197513542421797885566985997737396079590383222681554582578024765554005575") + PrecomputedLines[0][31].A1 = emulated.ValueOf[BaseField]("3230634811109724887953064878272037919734346474897928436938220980193233349186994534217923136215960889197535862790414") + PrecomputedLines[1][31].A0 = emulated.ValueOf[BaseField]("1578872153108485586740648390134492363858521364266818906972887979762709384757209232552002419238395578707827072494146") + PrecomputedLines[1][31].A1 = emulated.ValueOf[BaseField]("3346182034080587137847082053075136548616290128507231616924000212671337956860278775275340632986689511391294754917950") // i = 30 - PrecomputedLines[0][30].A0 = emulated.ValueOf[emulated.BLS12381Fp]("563606101962267088332267732828721041043582587025246353580116346987890608083331016733410427361695949570965227520789") - PrecomputedLines[0][30].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1447710510444163006794573556490053458339113778154087329237293023456254973340533160850843017629474417093574674355164") - PrecomputedLines[1][30].A0 = emulated.ValueOf[emulated.BLS12381Fp]("271208876921370646099156956119790748292096870574678731086094113909284881874681676160093634310679644399904203270909") - PrecomputedLines[1][30].A1 = emulated.ValueOf[emulated.BLS12381Fp]("734014135075220340217360055586287717623361723625999277128094287557651444748005340858829326263676471443653917380028") + PrecomputedLines[0][30].A0 = emulated.ValueOf[BaseField]("563606101962267088332267732828721041043582587025246353580116346987890608083331016733410427361695949570965227520789") + PrecomputedLines[0][30].A1 = emulated.ValueOf[BaseField]("1447710510444163006794573556490053458339113778154087329237293023456254973340533160850843017629474417093574674355164") + PrecomputedLines[1][30].A0 = emulated.ValueOf[BaseField]("271208876921370646099156956119790748292096870574678731086094113909284881874681676160093634310679644399904203270909") + PrecomputedLines[1][30].A1 = emulated.ValueOf[BaseField]("734014135075220340217360055586287717623361723625999277128094287557651444748005340858829326263676471443653917380028") // i = 29 - PrecomputedLines[0][29].A0 = emulated.ValueOf[emulated.BLS12381Fp]("553104808200198436637099795198248457859794790285185304908007586812710981503044298036311960523402366230566783003653") - PrecomputedLines[0][29].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2003955291719445647798366785133721961713094985232133195662878880175842141635740179320897168340231736128384133534354") - PrecomputedLines[1][29].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2178147651395974400304695746874894783920829064896437782855376270213935679743301253682869488818132822182583360124241") - PrecomputedLines[1][29].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2021924461162721359703592906360932111888647290905383591545198703128435999832129964838104126457865901358842626541451") + PrecomputedLines[0][29].A0 = emulated.ValueOf[BaseField]("553104808200198436637099795198248457859794790285185304908007586812710981503044298036311960523402366230566783003653") + PrecomputedLines[0][29].A1 = emulated.ValueOf[BaseField]("2003955291719445647798366785133721961713094985232133195662878880175842141635740179320897168340231736128384133534354") + PrecomputedLines[1][29].A0 = emulated.ValueOf[BaseField]("2178147651395974400304695746874894783920829064896437782855376270213935679743301253682869488818132822182583360124241") + PrecomputedLines[1][29].A1 = emulated.ValueOf[BaseField]("2021924461162721359703592906360932111888647290905383591545198703128435999832129964838104126457865901358842626541451") // i = 28 - PrecomputedLines[0][28].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1777745173717667099342756119046464257151872581855146300331383956582867311823203204529781655612736609774045268711658") - PrecomputedLines[0][28].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1041287756528278863695913064899216705646770322785896202378661226081642192837187951527490143718478781509638589819902") - PrecomputedLines[1][28].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1967355981600226768199599440345674395956405622419425164671491474464778947731825391685654108331113188849139873946423") - PrecomputedLines[1][28].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3256694521155602227991873365090666099769483235980732713464480092130836478909542237706421755139181299068417733946618") + PrecomputedLines[0][28].A0 = emulated.ValueOf[BaseField]("1777745173717667099342756119046464257151872581855146300331383956582867311823203204529781655612736609774045268711658") + PrecomputedLines[0][28].A1 = emulated.ValueOf[BaseField]("1041287756528278863695913064899216705646770322785896202378661226081642192837187951527490143718478781509638589819902") + PrecomputedLines[1][28].A0 = emulated.ValueOf[BaseField]("1967355981600226768199599440345674395956405622419425164671491474464778947731825391685654108331113188849139873946423") + PrecomputedLines[1][28].A1 = emulated.ValueOf[BaseField]("3256694521155602227991873365090666099769483235980732713464480092130836478909542237706421755139181299068417733946618") // i = 27 - PrecomputedLines[0][27].A0 = emulated.ValueOf[emulated.BLS12381Fp]("152937177363112535899008097612480126842969909709502300529346908402930035839474413363166062865253708049557944378422") - PrecomputedLines[0][27].A1 = emulated.ValueOf[emulated.BLS12381Fp]("897596282626309905062469669236886665340011419494984372382213783173084576758483513318145997370160010502859725827132") - PrecomputedLines[1][27].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2346758308810875365168118646648040744389722928738625003408785886492711195838395334630420578844405693367496418920211") - PrecomputedLines[1][27].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2656981446205865501558128157203546483094652284695248391187003029925483050287333375605638675631123261261698615316370") + PrecomputedLines[0][27].A0 = emulated.ValueOf[BaseField]("152937177363112535899008097612480126842969909709502300529346908402930035839474413363166062865253708049557944378422") + PrecomputedLines[0][27].A1 = emulated.ValueOf[BaseField]("897596282626309905062469669236886665340011419494984372382213783173084576758483513318145997370160010502859725827132") + PrecomputedLines[1][27].A0 = emulated.ValueOf[BaseField]("2346758308810875365168118646648040744389722928738625003408785886492711195838395334630420578844405693367496418920211") + PrecomputedLines[1][27].A1 = emulated.ValueOf[BaseField]("2656981446205865501558128157203546483094652284695248391187003029925483050287333375605638675631123261261698615316370") // i = 26 - PrecomputedLines[0][26].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3620566506706159804708100239488627313869689908825766518776558079707132636874047944658510407093741323189240311926227") - PrecomputedLines[0][26].A1 = emulated.ValueOf[emulated.BLS12381Fp]("587825566103826950433417267558764839534823650855845168865859272218400707217937201097874915851900418500280049177693") - PrecomputedLines[1][26].A0 = emulated.ValueOf[emulated.BLS12381Fp]("315851704572083517038658574619778523404095735851866846909808016842341190792198628387184169216243993584352479330528") - PrecomputedLines[1][26].A1 = emulated.ValueOf[emulated.BLS12381Fp]("229972078916735518731751050710560968941984639445244488397477314523703531099960305941377239301202435021499588716423") + PrecomputedLines[0][26].A0 = emulated.ValueOf[BaseField]("3620566506706159804708100239488627313869689908825766518776558079707132636874047944658510407093741323189240311926227") + PrecomputedLines[0][26].A1 = emulated.ValueOf[BaseField]("587825566103826950433417267558764839534823650855845168865859272218400707217937201097874915851900418500280049177693") + PrecomputedLines[1][26].A0 = emulated.ValueOf[BaseField]("315851704572083517038658574619778523404095735851866846909808016842341190792198628387184169216243993584352479330528") + PrecomputedLines[1][26].A1 = emulated.ValueOf[BaseField]("229972078916735518731751050710560968941984639445244488397477314523703531099960305941377239301202435021499588716423") // i = 25 - PrecomputedLines[0][25].A0 = emulated.ValueOf[emulated.BLS12381Fp]("979555040667686144734321069717744602937606084006969482488036046063313229494574591630057601636979700665914802203854") - PrecomputedLines[0][25].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1083328512005369786522146909067018806083197802603736575975871992537930820832853483250551205803668495310640749336142") - PrecomputedLines[1][25].A0 = emulated.ValueOf[emulated.BLS12381Fp]("792214870461187352036421584558521612384249649331727031805894500139426113040621396016975323081727321304814602705639") - PrecomputedLines[1][25].A1 = emulated.ValueOf[emulated.BLS12381Fp]("293126960439059888314336502484927086559096380766871756432786584741451879297750115116060526063096689019596377256462") + PrecomputedLines[0][25].A0 = emulated.ValueOf[BaseField]("979555040667686144734321069717744602937606084006969482488036046063313229494574591630057601636979700665914802203854") + PrecomputedLines[0][25].A1 = emulated.ValueOf[BaseField]("1083328512005369786522146909067018806083197802603736575975871992537930820832853483250551205803668495310640749336142") + PrecomputedLines[1][25].A0 = emulated.ValueOf[BaseField]("792214870461187352036421584558521612384249649331727031805894500139426113040621396016975323081727321304814602705639") + PrecomputedLines[1][25].A1 = emulated.ValueOf[BaseField]("293126960439059888314336502484927086559096380766871756432786584741451879297750115116060526063096689019596377256462") // i = 24 - PrecomputedLines[0][24].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3023305939043287566376775840182397466273202632600006671914074027221173655043488882180663551326278326566212930523605") - PrecomputedLines[0][24].A1 = emulated.ValueOf[emulated.BLS12381Fp]("211345580778501530278518067818080421373636225064710189149613966659012842944717863500047454846418617510601303495382") - PrecomputedLines[1][24].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1083967895923493980361373119038766728523388392678856516526946919892547528455219127949867777528733801974645664040222") - PrecomputedLines[1][24].A1 = emulated.ValueOf[emulated.BLS12381Fp]("27259736067175495975204418838888242237774672904102535395102952871757057779325470610149549006171411043997579252843") + PrecomputedLines[0][24].A0 = emulated.ValueOf[BaseField]("3023305939043287566376775840182397466273202632600006671914074027221173655043488882180663551326278326566212930523605") + PrecomputedLines[0][24].A1 = emulated.ValueOf[BaseField]("211345580778501530278518067818080421373636225064710189149613966659012842944717863500047454846418617510601303495382") + PrecomputedLines[1][24].A0 = emulated.ValueOf[BaseField]("1083967895923493980361373119038766728523388392678856516526946919892547528455219127949867777528733801974645664040222") + PrecomputedLines[1][24].A1 = emulated.ValueOf[BaseField]("27259736067175495975204418838888242237774672904102535395102952871757057779325470610149549006171411043997579252843") // i = 23 - PrecomputedLines[0][23].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3524508898240761195109795597763114367092144781256655615102582904100668274549691032362784563296727499220983570152441") - PrecomputedLines[0][23].A1 = emulated.ValueOf[emulated.BLS12381Fp]("154109098599910912999381594862896628943756799853257522903745986263346741806885494047064041211163702319803554533636") - PrecomputedLines[1][23].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1507508929647441259276327449399270586674159083549117937291801300548797928248720243445837206614212644609961366620912") - PrecomputedLines[1][23].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1868673061074969251396600047373562479665360443636499083160191471647935542691413181537129994029355285946490530299296") + PrecomputedLines[0][23].A0 = emulated.ValueOf[BaseField]("3524508898240761195109795597763114367092144781256655615102582904100668274549691032362784563296727499220983570152441") + PrecomputedLines[0][23].A1 = emulated.ValueOf[BaseField]("154109098599910912999381594862896628943756799853257522903745986263346741806885494047064041211163702319803554533636") + PrecomputedLines[1][23].A0 = emulated.ValueOf[BaseField]("1507508929647441259276327449399270586674159083549117937291801300548797928248720243445837206614212644609961366620912") + PrecomputedLines[1][23].A1 = emulated.ValueOf[BaseField]("1868673061074969251396600047373562479665360443636499083160191471647935542691413181537129994029355285946490530299296") // i = 22 - PrecomputedLines[0][22].A0 = emulated.ValueOf[emulated.BLS12381Fp]("908014978798891590190712328207935319381397213593311780079258255744362291021841393725131242015616027170757756445593") - PrecomputedLines[0][22].A1 = emulated.ValueOf[emulated.BLS12381Fp]("200639170601284184001774623835371352522039806052768444417749601795225843628193407696221357162246810418514142831843") - PrecomputedLines[1][22].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2350371217279740579820143271264453949977038917578227565960325061648448714010069328159980890814283501689783961524702") - PrecomputedLines[1][22].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1593895841197462027228582101998016460630082782005665672367357528349861944810760713747730739706721098594296662524458") + PrecomputedLines[0][22].A0 = emulated.ValueOf[BaseField]("908014978798891590190712328207935319381397213593311780079258255744362291021841393725131242015616027170757756445593") + PrecomputedLines[0][22].A1 = emulated.ValueOf[BaseField]("200639170601284184001774623835371352522039806052768444417749601795225843628193407696221357162246810418514142831843") + PrecomputedLines[1][22].A0 = emulated.ValueOf[BaseField]("2350371217279740579820143271264453949977038917578227565960325061648448714010069328159980890814283501689783961524702") + PrecomputedLines[1][22].A1 = emulated.ValueOf[BaseField]("1593895841197462027228582101998016460630082782005665672367357528349861944810760713747730739706721098594296662524458") // i = 21 - PrecomputedLines[0][21].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2360461348846359806382917405942817466536487234848314274910044461635090577997989305621192270573165846745607113076841") - PrecomputedLines[0][21].A1 = emulated.ValueOf[emulated.BLS12381Fp]("947341937929141884122447526020770991735996295941158962518194558209791699726852221249234839377751905155930729993341") - PrecomputedLines[1][21].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2371915419268388555770713628437540544538124706813717269034056295021127101714581368189393845415492802863632836193876") - PrecomputedLines[1][21].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3820176191003385401211443983255159967207554116103848359429328989702264327090629066820234833787173268959129598582288") + PrecomputedLines[0][21].A0 = emulated.ValueOf[BaseField]("2360461348846359806382917405942817466536487234848314274910044461635090577997989305621192270573165846745607113076841") + PrecomputedLines[0][21].A1 = emulated.ValueOf[BaseField]("947341937929141884122447526020770991735996295941158962518194558209791699726852221249234839377751905155930729993341") + PrecomputedLines[1][21].A0 = emulated.ValueOf[BaseField]("2371915419268388555770713628437540544538124706813717269034056295021127101714581368189393845415492802863632836193876") + PrecomputedLines[1][21].A1 = emulated.ValueOf[BaseField]("3820176191003385401211443983255159967207554116103848359429328989702264327090629066820234833787173268959129598582288") // i = 20 - PrecomputedLines[0][20].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1572650153562580171679461063610490558238392713851486235102056983067440099520233982149463624217641871971604769598051") - PrecomputedLines[0][20].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2618980509891451881049009354979162559943307077780444024131691302777717224275262406075437879469156653370163741776352") - PrecomputedLines[1][20].A0 = emulated.ValueOf[emulated.BLS12381Fp]("914440712713401078461992974124539925054406459556882995700401997575824770950958824081091612726953802622133206086132") - PrecomputedLines[1][20].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3761729476045264945742115214328854993283781354642998410783435809759489218467630853313060142896942920368784023624564") + PrecomputedLines[0][20].A0 = emulated.ValueOf[BaseField]("1572650153562580171679461063610490558238392713851486235102056983067440099520233982149463624217641871971604769598051") + PrecomputedLines[0][20].A1 = emulated.ValueOf[BaseField]("2618980509891451881049009354979162559943307077780444024131691302777717224275262406075437879469156653370163741776352") + PrecomputedLines[1][20].A0 = emulated.ValueOf[BaseField]("914440712713401078461992974124539925054406459556882995700401997575824770950958824081091612726953802622133206086132") + PrecomputedLines[1][20].A1 = emulated.ValueOf[BaseField]("3761729476045264945742115214328854993283781354642998410783435809759489218467630853313060142896942920368784023624564") // i = 19 - PrecomputedLines[0][19].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3121648410086279280187939190420325208219240333621791237185060309660921657630544662333480321336847899031625344257388") - PrecomputedLines[0][19].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2427620357688217067501558172333787193041787904721169429351785053557711405904561884061991426620314542234334857364382") - PrecomputedLines[1][19].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2708786771252814590617678344796738582404650900020338773987915299039612698556736430693452560828818771063820703207467") - PrecomputedLines[1][19].A1 = emulated.ValueOf[emulated.BLS12381Fp]("517411305194592772809763582146889163055266117798808949181626918347108724425656691661675351924493197452027981397318") + PrecomputedLines[0][19].A0 = emulated.ValueOf[BaseField]("3121648410086279280187939190420325208219240333621791237185060309660921657630544662333480321336847899031625344257388") + PrecomputedLines[0][19].A1 = emulated.ValueOf[BaseField]("2427620357688217067501558172333787193041787904721169429351785053557711405904561884061991426620314542234334857364382") + PrecomputedLines[1][19].A0 = emulated.ValueOf[BaseField]("2708786771252814590617678344796738582404650900020338773987915299039612698556736430693452560828818771063820703207467") + PrecomputedLines[1][19].A1 = emulated.ValueOf[BaseField]("517411305194592772809763582146889163055266117798808949181626918347108724425656691661675351924493197452027981397318") // i = 18 - PrecomputedLines[0][18].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2517225236557550934850433410068330464823062596484997219643623944432723816139315676042622268129511422705552411378459") - PrecomputedLines[0][18].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2316477955778739510775794399658217674719353791845398241574961924479405948992154924007863632495072289492221251858022") - PrecomputedLines[1][18].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3355942814100146198477737240362747495473665280368926326861352687278625310382944378160190997562974389721544171232057") - PrecomputedLines[1][18].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1405256119069207071356021656215306373736938017990909711990090738437615436721191173454389898556042490086922502478452") + PrecomputedLines[0][18].A0 = emulated.ValueOf[BaseField]("2517225236557550934850433410068330464823062596484997219643623944432723816139315676042622268129511422705552411378459") + PrecomputedLines[0][18].A1 = emulated.ValueOf[BaseField]("2316477955778739510775794399658217674719353791845398241574961924479405948992154924007863632495072289492221251858022") + PrecomputedLines[1][18].A0 = emulated.ValueOf[BaseField]("3355942814100146198477737240362747495473665280368926326861352687278625310382944378160190997562974389721544171232057") + PrecomputedLines[1][18].A1 = emulated.ValueOf[BaseField]("1405256119069207071356021656215306373736938017990909711990090738437615436721191173454389898556042490086922502478452") // i = 17 - PrecomputedLines[0][17].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1871012489878727224876595505058665788857585521570986653035860338904253701870605154927982874728131181637596420475443") - PrecomputedLines[0][17].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1901160185068128975791454167192809834079447334201748146854907081248444189191761875810491917795581071947191880288163") - PrecomputedLines[1][17].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1508805355272822827788090744062050727018818455929522068131059654827967915946146897794939483471020907220031424503902") - PrecomputedLines[1][17].A1 = emulated.ValueOf[emulated.BLS12381Fp]("392176457381240086084667193945896246039077028491953999599542527450836164540698798542367795135108835354979937729176") + PrecomputedLines[0][17].A0 = emulated.ValueOf[BaseField]("1871012489878727224876595505058665788857585521570986653035860338904253701870605154927982874728131181637596420475443") + PrecomputedLines[0][17].A1 = emulated.ValueOf[BaseField]("1901160185068128975791454167192809834079447334201748146854907081248444189191761875810491917795581071947191880288163") + PrecomputedLines[1][17].A0 = emulated.ValueOf[BaseField]("1508805355272822827788090744062050727018818455929522068131059654827967915946146897794939483471020907220031424503902") + PrecomputedLines[1][17].A1 = emulated.ValueOf[BaseField]("392176457381240086084667193945896246039077028491953999599542527450836164540698798542367795135108835354979937729176") // i = 16 - PrecomputedLines[0][16].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2741229165070269117924902999145560172156178221528003351492036613433272629200676282018955648591068110182854114550924") - PrecomputedLines[0][16].A1 = emulated.ValueOf[emulated.BLS12381Fp]("394754449245515942947222210401725628247299909612001534445659911053162507221378908343285116791344668589530229643106") - PrecomputedLines[1][16].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3281821044964510076704259445805281918044215707355772313190483116134259563285207680309643894942896092949741436198183") - PrecomputedLines[1][16].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2279727743915060359386920658508386508396853897423119737675172726894449285404134596174496441719084502944932053797831") - PrecomputedLines[2][16].A0 = emulated.ValueOf[emulated.BLS12381Fp]("353345079382094137526926194700107849760485245746200219086878713290578018072683764914127968225936663626062935997429") - PrecomputedLines[2][16].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1564619051727543092268240068918461744410102185232141167890515232410738747169856682086977412134170322374787182604285") - PrecomputedLines[3][16].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1031783123982449084107331586608935203701652584407973805774838114682364185882412466765964240680264636252893789921832") - PrecomputedLines[3][16].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1674505309126597529030651480135394381023726406881712713659095642254644276683224627684705587858451842527993474727715") + PrecomputedLines[0][16].A0 = emulated.ValueOf[BaseField]("2741229165070269117924902999145560172156178221528003351492036613433272629200676282018955648591068110182854114550924") + PrecomputedLines[0][16].A1 = emulated.ValueOf[BaseField]("394754449245515942947222210401725628247299909612001534445659911053162507221378908343285116791344668589530229643106") + PrecomputedLines[1][16].A0 = emulated.ValueOf[BaseField]("3281821044964510076704259445805281918044215707355772313190483116134259563285207680309643894942896092949741436198183") + PrecomputedLines[1][16].A1 = emulated.ValueOf[BaseField]("2279727743915060359386920658508386508396853897423119737675172726894449285404134596174496441719084502944932053797831") + PrecomputedLines[2][16].A0 = emulated.ValueOf[BaseField]("353345079382094137526926194700107849760485245746200219086878713290578018072683764914127968225936663626062935997429") + PrecomputedLines[2][16].A1 = emulated.ValueOf[BaseField]("1564619051727543092268240068918461744410102185232141167890515232410738747169856682086977412134170322374787182604285") + PrecomputedLines[3][16].A0 = emulated.ValueOf[BaseField]("1031783123982449084107331586608935203701652584407973805774838114682364185882412466765964240680264636252893789921832") + PrecomputedLines[3][16].A1 = emulated.ValueOf[BaseField]("1674505309126597529030651480135394381023726406881712713659095642254644276683224627684705587858451842527993474727715") // i = 15 - PrecomputedLines[0][15].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2456248725387547397262525114643040834056469397193019364301066598073765581121143668240981415630210804907944829744944") - PrecomputedLines[0][15].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1043012900187598140574711455572545751706624394067345211899147242871854241505831150194052069901037949851965337396572") - PrecomputedLines[1][15].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2818047063092228393255521223699593672793582976332754074700446958296103353245361019407731583187313322019846120441360") - PrecomputedLines[1][15].A1 = emulated.ValueOf[emulated.BLS12381Fp]("609324778570449498894287960818577137803498106249221775461586760331332978890739893282037207179739452898113233757842") + PrecomputedLines[0][15].A0 = emulated.ValueOf[BaseField]("2456248725387547397262525114643040834056469397193019364301066598073765581121143668240981415630210804907944829744944") + PrecomputedLines[0][15].A1 = emulated.ValueOf[BaseField]("1043012900187598140574711455572545751706624394067345211899147242871854241505831150194052069901037949851965337396572") + PrecomputedLines[1][15].A0 = emulated.ValueOf[BaseField]("2818047063092228393255521223699593672793582976332754074700446958296103353245361019407731583187313322019846120441360") + PrecomputedLines[1][15].A1 = emulated.ValueOf[BaseField]("609324778570449498894287960818577137803498106249221775461586760331332978890739893282037207179739452898113233757842") // i = 14 - PrecomputedLines[0][14].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1583907611945126402969342158670251457555916265122712423938192754774277188592755130719033171706996928741333176355259") - PrecomputedLines[0][14].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1480043754732647907528102591669853624107177184606806464768162240804848473641199943564132307414898940662237778707880") - PrecomputedLines[1][14].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1073770434466187296401264518401836490010154190466732406500178370991399776232002701153045477118496857622558404986124") - PrecomputedLines[1][14].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2040088101627138737987871617873915758242178143051551613106980725563415248571813669113484542372670569201005661094588") + PrecomputedLines[0][14].A0 = emulated.ValueOf[BaseField]("1583907611945126402969342158670251457555916265122712423938192754774277188592755130719033171706996928741333176355259") + PrecomputedLines[0][14].A1 = emulated.ValueOf[BaseField]("1480043754732647907528102591669853624107177184606806464768162240804848473641199943564132307414898940662237778707880") + PrecomputedLines[1][14].A0 = emulated.ValueOf[BaseField]("1073770434466187296401264518401836490010154190466732406500178370991399776232002701153045477118496857622558404986124") + PrecomputedLines[1][14].A1 = emulated.ValueOf[BaseField]("2040088101627138737987871617873915758242178143051551613106980725563415248571813669113484542372670569201005661094588") // i = 13 - PrecomputedLines[0][13].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3611482998132061804020855119834275656700118225321062337009879540758621588230203253953916980074315068068764047335052") - PrecomputedLines[0][13].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2346170214863078560104862811778279655418099426832641872989862189028138184629798194757339729949883260228219986435351") - PrecomputedLines[1][13].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1200357469471453477416622874970904427768324541884587100292052206488927915687048371988316685540349619282470657037061") - PrecomputedLines[1][13].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3484088805784391480522749040297723013103515240980206599299861821416786877289405050312590194417722749870526191019673") + PrecomputedLines[0][13].A0 = emulated.ValueOf[BaseField]("3611482998132061804020855119834275656700118225321062337009879540758621588230203253953916980074315068068764047335052") + PrecomputedLines[0][13].A1 = emulated.ValueOf[BaseField]("2346170214863078560104862811778279655418099426832641872989862189028138184629798194757339729949883260228219986435351") + PrecomputedLines[1][13].A0 = emulated.ValueOf[BaseField]("1200357469471453477416622874970904427768324541884587100292052206488927915687048371988316685540349619282470657037061") + PrecomputedLines[1][13].A1 = emulated.ValueOf[BaseField]("3484088805784391480522749040297723013103515240980206599299861821416786877289405050312590194417722749870526191019673") // i = 12 - PrecomputedLines[0][12].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1175103434969115663465243478736530988428094788060063630270795460718911007942618967214053003288533838183840301794166") - PrecomputedLines[0][12].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2153876779718109562719530248580382631701336274595917146227223627547555040502114589540617386615636683082237211673265") - PrecomputedLines[1][12].A0 = emulated.ValueOf[emulated.BLS12381Fp]("196906826244106976903807716766844478488002154571305434677738804785501147563736236264422551863677725322188941142814") - PrecomputedLines[1][12].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3003134029129368381569085969742217191347104600214895562498282523853129629358228016925981694439115028848189047930274") + PrecomputedLines[0][12].A0 = emulated.ValueOf[BaseField]("1175103434969115663465243478736530988428094788060063630270795460718911007942618967214053003288533838183840301794166") + PrecomputedLines[0][12].A1 = emulated.ValueOf[BaseField]("2153876779718109562719530248580382631701336274595917146227223627547555040502114589540617386615636683082237211673265") + PrecomputedLines[1][12].A0 = emulated.ValueOf[BaseField]("196906826244106976903807716766844478488002154571305434677738804785501147563736236264422551863677725322188941142814") + PrecomputedLines[1][12].A1 = emulated.ValueOf[BaseField]("3003134029129368381569085969742217191347104600214895562498282523853129629358228016925981694439115028848189047930274") // i = 11 - PrecomputedLines[0][11].A0 = emulated.ValueOf[emulated.BLS12381Fp]("288579508917537216032217176846572026112298341738458834446349503424029838166869418511639725695422373336634256356505") - PrecomputedLines[0][11].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3992933519722599233380063922132718381812819049463872046892870883016443953054792323020456056344685398204485574386423") - PrecomputedLines[1][11].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1901084398218251517716150525360269215916704505616118339628161776708362087441629181428748618965084417219509574513576") - PrecomputedLines[1][11].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1952189648467839796870124474683061875216340850091397726737866109626602833143447824132199531004749663678290861592934") + PrecomputedLines[0][11].A0 = emulated.ValueOf[BaseField]("288579508917537216032217176846572026112298341738458834446349503424029838166869418511639725695422373336634256356505") + PrecomputedLines[0][11].A1 = emulated.ValueOf[BaseField]("3992933519722599233380063922132718381812819049463872046892870883016443953054792323020456056344685398204485574386423") + PrecomputedLines[1][11].A0 = emulated.ValueOf[BaseField]("1901084398218251517716150525360269215916704505616118339628161776708362087441629181428748618965084417219509574513576") + PrecomputedLines[1][11].A1 = emulated.ValueOf[BaseField]("1952189648467839796870124474683061875216340850091397726737866109626602833143447824132199531004749663678290861592934") // i = 10 - PrecomputedLines[0][10].A0 = emulated.ValueOf[emulated.BLS12381Fp]("674049131642920716773292998275635125430185488384219499251573331404631012361307801528514714700059774333017906904071") - PrecomputedLines[0][10].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2986041691645477878693593345744447039959458233932414756236894338913165710653579464932153470232310464980926622514460") - PrecomputedLines[1][10].A0 = emulated.ValueOf[emulated.BLS12381Fp]("396980881920070119281371625216467857543862821632618429299867864848221772789254174263915490714491686803960122676841") - PrecomputedLines[1][10].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3363488693200112955217599550745786026344253629302768961678458665321585247924625609690843453377126238012557561047704") + PrecomputedLines[0][10].A0 = emulated.ValueOf[BaseField]("674049131642920716773292998275635125430185488384219499251573331404631012361307801528514714700059774333017906904071") + PrecomputedLines[0][10].A1 = emulated.ValueOf[BaseField]("2986041691645477878693593345744447039959458233932414756236894338913165710653579464932153470232310464980926622514460") + PrecomputedLines[1][10].A0 = emulated.ValueOf[BaseField]("396980881920070119281371625216467857543862821632618429299867864848221772789254174263915490714491686803960122676841") + PrecomputedLines[1][10].A1 = emulated.ValueOf[BaseField]("3363488693200112955217599550745786026344253629302768961678458665321585247924625609690843453377126238012557561047704") // i = 9 - PrecomputedLines[0][9].A0 = emulated.ValueOf[emulated.BLS12381Fp]("903980085139727083659669247383921724226476199049306205220045968334604361831284928601247223629870059814604444022210") - PrecomputedLines[0][9].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1347827538635308235340411256030642664724853897798539165023305691688910037429723163256786901153134931835025303767837") - PrecomputedLines[1][9].A0 = emulated.ValueOf[emulated.BLS12381Fp]("362946095859932580358415564370912182581787648319175363986622115682210008263959828660939888692668763890646644654633") - PrecomputedLines[1][9].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1521162638370174260915444190906972864974462580865371310106941096343692947339423700927310107639026264108572639880763") + PrecomputedLines[0][9].A0 = emulated.ValueOf[BaseField]("903980085139727083659669247383921724226476199049306205220045968334604361831284928601247223629870059814604444022210") + PrecomputedLines[0][9].A1 = emulated.ValueOf[BaseField]("1347827538635308235340411256030642664724853897798539165023305691688910037429723163256786901153134931835025303767837") + PrecomputedLines[1][9].A0 = emulated.ValueOf[BaseField]("362946095859932580358415564370912182581787648319175363986622115682210008263959828660939888692668763890646644654633") + PrecomputedLines[1][9].A1 = emulated.ValueOf[BaseField]("1521162638370174260915444190906972864974462580865371310106941096343692947339423700927310107639026264108572639880763") // i = 8 - PrecomputedLines[0][8].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1451288507938675216820664191752001443661941658972340336364138619052459160919783010387521742272982958657081720589057") - PrecomputedLines[0][8].A1 = emulated.ValueOf[emulated.BLS12381Fp]("780091844842754045057312647019433725300884829443248665854800094483946888790564309147834461359778064434157512664965") - PrecomputedLines[1][8].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2025397797410857541801387239105980546331437474914109199821350959051310813036349354931803123302652471034747102363943") - PrecomputedLines[1][8].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1349804482686745175789105413999273853512844505258621270714326733460020468417764035353237622608805002148395864268050") + PrecomputedLines[0][8].A0 = emulated.ValueOf[BaseField]("1451288507938675216820664191752001443661941658972340336364138619052459160919783010387521742272982958657081720589057") + PrecomputedLines[0][8].A1 = emulated.ValueOf[BaseField]("780091844842754045057312647019433725300884829443248665854800094483946888790564309147834461359778064434157512664965") + PrecomputedLines[1][8].A0 = emulated.ValueOf[BaseField]("2025397797410857541801387239105980546331437474914109199821350959051310813036349354931803123302652471034747102363943") + PrecomputedLines[1][8].A1 = emulated.ValueOf[BaseField]("1349804482686745175789105413999273853512844505258621270714326733460020468417764035353237622608805002148395864268050") // i = 7 - PrecomputedLines[0][7].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3108259519725255622160865392868985983941931146911727818694357361341016397681604262681477576824444998720748752183853") - PrecomputedLines[0][7].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2746312800933380638719051663688878535959804042913702866743872475497377391010820849783618378511743189938152475719597") - PrecomputedLines[1][7].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2080362443193479154911701830952814560889592049737440328591160551538249466843193733836470398280062259043136979920854") - PrecomputedLines[1][7].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3964650959705446256700736846818753122873391146832851772353426653959701656164345607420376069170669631695894867766661") + PrecomputedLines[0][7].A0 = emulated.ValueOf[BaseField]("3108259519725255622160865392868985983941931146911727818694357361341016397681604262681477576824444998720748752183853") + PrecomputedLines[0][7].A1 = emulated.ValueOf[BaseField]("2746312800933380638719051663688878535959804042913702866743872475497377391010820849783618378511743189938152475719597") + PrecomputedLines[1][7].A0 = emulated.ValueOf[BaseField]("2080362443193479154911701830952814560889592049737440328591160551538249466843193733836470398280062259043136979920854") + PrecomputedLines[1][7].A1 = emulated.ValueOf[BaseField]("3964650959705446256700736846818753122873391146832851772353426653959701656164345607420376069170669631695894867766661") // i = 6 - PrecomputedLines[0][6].A0 = emulated.ValueOf[emulated.BLS12381Fp]("998401711577030801499823016548091904661868235334825752872616271090737140683615722295667334501710630177910370409188") - PrecomputedLines[0][6].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3113580388271795111973808218003838749115342656107628938242379127409951356994761702310134652453351993186439880409956") - PrecomputedLines[1][6].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2209895036333273778785791339299432698003341556381168283301669691693492869926045293967113459553699553056033465779798") - PrecomputedLines[1][6].A1 = emulated.ValueOf[emulated.BLS12381Fp]("959647019662444226972580453114544223706755036638831753478672703623585644987424105312187217218661108832975493877168") + PrecomputedLines[0][6].A0 = emulated.ValueOf[BaseField]("998401711577030801499823016548091904661868235334825752872616271090737140683615722295667334501710630177910370409188") + PrecomputedLines[0][6].A1 = emulated.ValueOf[BaseField]("3113580388271795111973808218003838749115342656107628938242379127409951356994761702310134652453351993186439880409956") + PrecomputedLines[1][6].A0 = emulated.ValueOf[BaseField]("2209895036333273778785791339299432698003341556381168283301669691693492869926045293967113459553699553056033465779798") + PrecomputedLines[1][6].A1 = emulated.ValueOf[BaseField]("959647019662444226972580453114544223706755036638831753478672703623585644987424105312187217218661108832975493877168") // i = 5 - PrecomputedLines[0][5].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2841471010438431779967254954386974501546987002770608809461472519141013537463963266051229253731270768522508156999616") - PrecomputedLines[0][5].A1 = emulated.ValueOf[emulated.BLS12381Fp]("696566894503412538642690079753767069302913336129171106478522752438805851287179825258314756117624623080809738255414") - PrecomputedLines[1][5].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2911265147164022514710363886878608210045172248737826097784218655566417385178563726914426070452767585831687080991147") - PrecomputedLines[1][5].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2744818944054579004598792944387297677957805313049835664087933533436786259115891347376732045096926518910859165808954") + PrecomputedLines[0][5].A0 = emulated.ValueOf[BaseField]("2841471010438431779967254954386974501546987002770608809461472519141013537463963266051229253731270768522508156999616") + PrecomputedLines[0][5].A1 = emulated.ValueOf[BaseField]("696566894503412538642690079753767069302913336129171106478522752438805851287179825258314756117624623080809738255414") + PrecomputedLines[1][5].A0 = emulated.ValueOf[BaseField]("2911265147164022514710363886878608210045172248737826097784218655566417385178563726914426070452767585831687080991147") + PrecomputedLines[1][5].A1 = emulated.ValueOf[BaseField]("2744818944054579004598792944387297677957805313049835664087933533436786259115891347376732045096926518910859165808954") // i = 4 - PrecomputedLines[0][4].A0 = emulated.ValueOf[emulated.BLS12381Fp]("2626722221901546525450495131546494365497693562193436563425832546273615525185343652803128707511796650054409580651607") - PrecomputedLines[0][4].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2898515900951479363905069458547895124826329747625108263493772297820331408153856994348030852520595550159245759652161") - PrecomputedLines[1][4].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1921592673575952646060010989725488734583736903852633912443953723136259718959911482580429310015710706499067320270317") - PrecomputedLines[1][4].A1 = emulated.ValueOf[emulated.BLS12381Fp]("956251362899975176731442839970722287994171762098273356212496480881340499428283976466263674939566948363663432606399") + PrecomputedLines[0][4].A0 = emulated.ValueOf[BaseField]("2626722221901546525450495131546494365497693562193436563425832546273615525185343652803128707511796650054409580651607") + PrecomputedLines[0][4].A1 = emulated.ValueOf[BaseField]("2898515900951479363905069458547895124826329747625108263493772297820331408153856994348030852520595550159245759652161") + PrecomputedLines[1][4].A0 = emulated.ValueOf[BaseField]("1921592673575952646060010989725488734583736903852633912443953723136259718959911482580429310015710706499067320270317") + PrecomputedLines[1][4].A1 = emulated.ValueOf[BaseField]("956251362899975176731442839970722287994171762098273356212496480881340499428283976466263674939566948363663432606399") // i = 3 - PrecomputedLines[0][3].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3921602381215869979684331626432646546716509921608717347721382117849039021022887606324288626301870542752693783471927") - PrecomputedLines[0][3].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2523702364140531959195061579572246079207345591008472492207286834773077913074321681802231395020396532561725831993635") - PrecomputedLines[1][3].A0 = emulated.ValueOf[emulated.BLS12381Fp]("365550321315950743851268167652946217061103742807645488424195332015419615371374089484470568460278262393265512170365") - PrecomputedLines[1][3].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2367775129286209205281261235584543398195849023700633569371476648532398963866035316135040295345655465417403167550696") + PrecomputedLines[0][3].A0 = emulated.ValueOf[BaseField]("3921602381215869979684331626432646546716509921608717347721382117849039021022887606324288626301870542752693783471927") + PrecomputedLines[0][3].A1 = emulated.ValueOf[BaseField]("2523702364140531959195061579572246079207345591008472492207286834773077913074321681802231395020396532561725831993635") + PrecomputedLines[1][3].A0 = emulated.ValueOf[BaseField]("365550321315950743851268167652946217061103742807645488424195332015419615371374089484470568460278262393265512170365") + PrecomputedLines[1][3].A1 = emulated.ValueOf[BaseField]("2367775129286209205281261235584543398195849023700633569371476648532398963866035316135040295345655465417403167550696") // i = 2 - PrecomputedLines[0][2].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1680458512589067571896634706380419213249047340047151052382898514607798507250939135807299863867577040318561590393585") - PrecomputedLines[0][2].A1 = emulated.ValueOf[emulated.BLS12381Fp]("1033946335839836561404870194835625676362202728567409441052246502652005038621446258562651084280524280496231515354305") - PrecomputedLines[1][2].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3777662686667655344658815583791672223988649461202850693112863279144808037867254199316045088493867424310466772435262") - PrecomputedLines[1][2].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2064839480899148857837309570504205604502488145969799920908269678849234113812590058688143649401420761848749422330662") + PrecomputedLines[0][2].A0 = emulated.ValueOf[BaseField]("1680458512589067571896634706380419213249047340047151052382898514607798507250939135807299863867577040318561590393585") + PrecomputedLines[0][2].A1 = emulated.ValueOf[BaseField]("1033946335839836561404870194835625676362202728567409441052246502652005038621446258562651084280524280496231515354305") + PrecomputedLines[1][2].A0 = emulated.ValueOf[BaseField]("3777662686667655344658815583791672223988649461202850693112863279144808037867254199316045088493867424310466772435262") + PrecomputedLines[1][2].A1 = emulated.ValueOf[BaseField]("2064839480899148857837309570504205604502488145969799920908269678849234113812590058688143649401420761848749422330662") // i = 1 - PrecomputedLines[0][1].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3565448959257374800198419850448580122970161672942598117316274721696483682407630545127619505130456918163042800666213") - PrecomputedLines[0][1].A1 = emulated.ValueOf[emulated.BLS12381Fp]("3345751791634611319739837464169473359182614679402518952036363106531863475124919612432455420087836710231316659292948") - PrecomputedLines[1][1].A0 = emulated.ValueOf[emulated.BLS12381Fp]("1617681413845042635925097980110882198826532425223057956385624726626794238122669810593496494648798312736702002674001") - PrecomputedLines[1][1].A1 = emulated.ValueOf[emulated.BLS12381Fp]("623718078700217167207278824799657763292593672163484469137343331952443014063067608809944893696957512085202161610194") + PrecomputedLines[0][1].A0 = emulated.ValueOf[BaseField]("3565448959257374800198419850448580122970161672942598117316274721696483682407630545127619505130456918163042800666213") + PrecomputedLines[0][1].A1 = emulated.ValueOf[BaseField]("3345751791634611319739837464169473359182614679402518952036363106531863475124919612432455420087836710231316659292948") + PrecomputedLines[1][1].A0 = emulated.ValueOf[BaseField]("1617681413845042635925097980110882198826532425223057956385624726626794238122669810593496494648798312736702002674001") + PrecomputedLines[1][1].A1 = emulated.ValueOf[BaseField]("623718078700217167207278824799657763292593672163484469137343331952443014063067608809944893696957512085202161610194") // i = 0 - PrecomputedLines[0][0].A0 = emulated.ValueOf[emulated.BLS12381Fp]("3021393366864267596780779365081014671914599573258232428274167592862693896278193045742059529785963318957699876618598") - PrecomputedLines[0][0].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2774709764298624490594173467667228199179204402302427867108160491882432826696994080161627641500497330778328523750634") - PrecomputedLines[1][0].A0 = emulated.ValueOf[emulated.BLS12381Fp]("887601706871077344640254225359406175214680885957404575459587548760809083522151140664098119031225155506199574629967") - PrecomputedLines[1][0].A1 = emulated.ValueOf[emulated.BLS12381Fp]("2676643094794718705520885263561335025726613452251214882260540192490012199952733082631183814711038861520905961974067") + PrecomputedLines[0][0].A0 = emulated.ValueOf[BaseField]("3021393366864267596780779365081014671914599573258232428274167592862693896278193045742059529785963318957699876618598") + PrecomputedLines[0][0].A1 = emulated.ValueOf[BaseField]("2774709764298624490594173467667228199179204402302427867108160491882432826696994080161627641500497330778328523750634") + PrecomputedLines[1][0].A0 = emulated.ValueOf[BaseField]("887601706871077344640254225359406175214680885957404575459587548760809083522151140664098119031225155506199574629967") + PrecomputedLines[1][0].A1 = emulated.ValueOf[BaseField]("2676643094794718705520885263561335025726613452251214882260540192490012199952733082631183814711038861520905961974067") return PrecomputedLines } diff --git a/std/algebra/emulated/sw_bn254/g1.go b/std/algebra/emulated/sw_bn254/g1.go index 1d528cb404..82b9bb7689 100644 --- a/std/algebra/emulated/sw_bn254/g1.go +++ b/std/algebra/emulated/sw_bn254/g1.go @@ -9,21 +9,27 @@ import ( // G1Affine is the point in G1. It is an alias to the generic emulated affine // point. -type G1Affine = sw_emulated.AffinePoint[emulated.BN254Fp] +type G1Affine = sw_emulated.AffinePoint[BaseField] // Scalar is the scalar in the groups. It is an alias to the emulated element // defined over the scalar field of the groups. -type Scalar = emulated.Element[emulated.BN254Fr] +type Scalar = emulated.Element[ScalarField] // NewG1Affine allocates a witness from the native G1 element and returns it. func NewG1Affine(v bn254.G1Affine) G1Affine { return G1Affine{ - X: emulated.ValueOf[emulated.BN254Fp](v.X), - Y: emulated.ValueOf[emulated.BN254Fp](v.Y), + X: emulated.ValueOf[BaseField](v.X), + Y: emulated.ValueOf[BaseField](v.Y), } } // NewScalar allocates a witness from the native scalar and returns it. func NewScalar(v fr_bn254.Element) Scalar { - return emulated.ValueOf[emulated.BN254Fr](v) + return emulated.ValueOf[ScalarField](v) } + +// ScalarField is the [emulated.FieldParams] impelementation of the curve scalar field. +type ScalarField = emulated.BN254Fr + +// BaseField is the [emulated.FieldParams] impelementation of the curve base field. +type BaseField = emulated.BN254Fp diff --git a/std/algebra/emulated/sw_bn254/g2.go b/std/algebra/emulated/sw_bn254/g2.go index 71026f66f0..4ac978e684 100644 --- a/std/algebra/emulated/sw_bn254/g2.go +++ b/std/algebra/emulated/sw_bn254/g2.go @@ -11,7 +11,7 @@ import ( type G2 struct { *fields_bn254.Ext2 - w *emulated.Element[emulated.BN254Fp] + w *emulated.Element[BaseField] u, v *fields_bn254.E2 } @@ -20,14 +20,14 @@ type G2Affine struct { } func NewG2(api frontend.API) *G2 { - w := emulated.ValueOf[emulated.BN254Fp]("21888242871839275220042445260109153167277707414472061641714758635765020556616") + w := emulated.ValueOf[BaseField]("21888242871839275220042445260109153167277707414472061641714758635765020556616") u := fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp]("21575463638280843010398324269430826099269044274347216827212613867836435027261"), - A1: emulated.ValueOf[emulated.BN254Fp]("10307601595873709700152284273816112264069230130616436755625194854815875713954"), + A0: emulated.ValueOf[BaseField]("21575463638280843010398324269430826099269044274347216827212613867836435027261"), + A1: emulated.ValueOf[BaseField]("10307601595873709700152284273816112264069230130616436755625194854815875713954"), } v := fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp]("2821565182194536844548159561693502659359617185244120367078079554186484126554"), - A1: emulated.ValueOf[emulated.BN254Fp]("3505843767911556378687030309984248845540243509899259641013678093033130930403"), + A0: emulated.ValueOf[BaseField]("2821565182194536844548159561693502659359617185244120367078079554186484126554"), + A1: emulated.ValueOf[BaseField]("3505843767911556378687030309984248845540243509899259641013678093033130930403"), } return &G2{ Ext2: fields_bn254.NewExt2(api), @@ -40,12 +40,12 @@ func NewG2(api frontend.API) *G2 { func NewG2Affine(v bn254.G2Affine) G2Affine { return G2Affine{ X: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.X.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.X.A1), + A0: emulated.ValueOf[BaseField](v.X.A0), + A1: emulated.ValueOf[BaseField](v.X.A1), }, Y: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.Y.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.Y.A1), + A0: emulated.ValueOf[BaseField](v.Y.A0), + A1: emulated.ValueOf[BaseField](v.Y.A1), }, } } diff --git a/std/algebra/emulated/sw_bn254/pairing.go b/std/algebra/emulated/sw_bn254/pairing.go index 11b9ba7d75..e954beaeaa 100644 --- a/std/algebra/emulated/sw_bn254/pairing.go +++ b/std/algebra/emulated/sw_bn254/pairing.go @@ -15,8 +15,8 @@ import ( type Pairing struct { api frontend.API *fields_bn254.Ext12 - curveF *emulated.Field[emulated.BN254Fp] - curve *sw_emulated.Curve[emulated.BN254Fp, emulated.BN254Fr] + curveF *emulated.Field[BaseField] + curve *sw_emulated.Curve[BaseField, ScalarField] g2 *G2 bTwist *fields_bn254.E2 lines [4][67]fields_bn254.E2 @@ -28,47 +28,47 @@ func NewGTEl(v bn254.GT) GTEl { return GTEl{ C0: fields_bn254.E6{ B0: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C0.B0.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C0.B0.A1), + A0: emulated.ValueOf[BaseField](v.C0.B0.A0), + A1: emulated.ValueOf[BaseField](v.C0.B0.A1), }, B1: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C0.B1.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C0.B1.A1), + A0: emulated.ValueOf[BaseField](v.C0.B1.A0), + A1: emulated.ValueOf[BaseField](v.C0.B1.A1), }, B2: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C0.B2.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C0.B2.A1), + A0: emulated.ValueOf[BaseField](v.C0.B2.A0), + A1: emulated.ValueOf[BaseField](v.C0.B2.A1), }, }, C1: fields_bn254.E6{ B0: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C1.B0.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C1.B0.A1), + A0: emulated.ValueOf[BaseField](v.C1.B0.A0), + A1: emulated.ValueOf[BaseField](v.C1.B0.A1), }, B1: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C1.B1.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C1.B1.A1), + A0: emulated.ValueOf[BaseField](v.C1.B1.A0), + A1: emulated.ValueOf[BaseField](v.C1.B1.A1), }, B2: fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp](v.C1.B2.A0), - A1: emulated.ValueOf[emulated.BN254Fp](v.C1.B2.A1), + A0: emulated.ValueOf[BaseField](v.C1.B2.A0), + A1: emulated.ValueOf[BaseField](v.C1.B2.A1), }, }, } } func NewPairing(api frontend.API) (*Pairing, error) { - ba, err := emulated.NewField[emulated.BN254Fp](api) + ba, err := emulated.NewField[BaseField](api) if err != nil { return nil, fmt.Errorf("new base api: %w", err) } - curve, err := sw_emulated.New[emulated.BN254Fp, emulated.BN254Fr](api, sw_emulated.GetBN254Params()) + curve, err := sw_emulated.New[BaseField, ScalarField](api, sw_emulated.GetBN254Params()) if err != nil { return nil, fmt.Errorf("new curve: %w", err) } bTwist := fields_bn254.E2{ - A0: emulated.ValueOf[emulated.BN254Fp]("19485874751759354771024239261021720505790618469301721065564631296452457478373"), - A1: emulated.ValueOf[emulated.BN254Fp]("266929791119991161246907387137283842545076965332900288569378510910307636690"), + A0: emulated.ValueOf[BaseField]("19485874751759354771024239261021720505790618469301721065564631296452457478373"), + A1: emulated.ValueOf[BaseField]("266929791119991161246907387137283842545076965332900288569378510910307636690"), } return &Pairing{ api: api, @@ -337,8 +337,8 @@ func (pr Pairing) MillerLoop(P []*G1Affine, Q []*G2Affine) (*GTEl, error) { var l1, l2 *lineEvaluation Qacc := make([]*G2Affine, n) QNeg := make([]*G2Affine, n) - yInv := make([]*emulated.Element[emulated.BN254Fp], n) - xNegOverY := make([]*emulated.Element[emulated.BN254Fp], n) + yInv := make([]*emulated.Element[BaseField], n) + xNegOverY := make([]*emulated.Element[BaseField], n) for k := 0; k < n; k++ { Qacc[k] = Q[k] @@ -860,7 +860,7 @@ func (pr Pairing) DoubleMillerLoopFixedQ(P, T *G1Affine, Q *G2Affine) (*GTEl, er var Qacc, QNeg *G2Affine Qacc = Q QNeg = &G2Affine{X: Q.X, Y: *pr.Ext2.Neg(&Q.Y)} - var yInv, xNegOverY, y2Inv, x2OverY2 *emulated.Element[emulated.BN254Fp] + var yInv, xNegOverY, y2Inv, x2OverY2 *emulated.Element[BaseField] yInv = pr.curveF.Inverse(&P.Y) xNegOverY = pr.curveF.MulMod(&P.X, yInv) xNegOverY = pr.curveF.Neg(xNegOverY) diff --git a/std/algebra/emulated/sw_bn254/precomputations.go b/std/algebra/emulated/sw_bn254/precomputations.go index 7f9b67a8e3..b51e600b04 100644 --- a/std/algebra/emulated/sw_bn254/precomputations.go +++ b/std/algebra/emulated/sw_bn254/precomputations.go @@ -27,424 +27,424 @@ func getPrecomputeLines() [4][67]fields_bn254.E2 { func computePrecomputeLines() [4][67]fields_bn254.E2 { var PrecomputedLines [4][67]fields_bn254.E2 // i = 64 - PrecomputedLines[0][64].A0 = emulated.ValueOf[emulated.BN254Fp]("5835204804648978854777809389163082959673580093383091483568092875198341589362") - PrecomputedLines[0][64].A1 = emulated.ValueOf[emulated.BN254Fp]("13632706003546654277482391832141703292091762015816023705040318800028245927696") - PrecomputedLines[1][64].A0 = emulated.ValueOf[emulated.BN254Fp]("1680434087217908762188513888731180967069012235541138281753317594838287941133") - PrecomputedLines[1][64].A1 = emulated.ValueOf[emulated.BN254Fp]("19491433686921975987918669077017867748435767299607210121547313497083429353042") + PrecomputedLines[0][64].A0 = emulated.ValueOf[BaseField]("5835204804648978854777809389163082959673580093383091483568092875198341589362") + PrecomputedLines[0][64].A1 = emulated.ValueOf[BaseField]("13632706003546654277482391832141703292091762015816023705040318800028245927696") + PrecomputedLines[1][64].A0 = emulated.ValueOf[BaseField]("1680434087217908762188513888731180967069012235541138281753317594838287941133") + PrecomputedLines[1][64].A1 = emulated.ValueOf[BaseField]("19491433686921975987918669077017867748435767299607210121547313497083429353042") // i = 63 - PrecomputedLines[0][63].A0 = emulated.ValueOf[emulated.BN254Fp]("8834747017950039806917730978057895018652669773221183534396319488771182322273") - PrecomputedLines[0][63].A1 = emulated.ValueOf[emulated.BN254Fp]("20569453214085543698303175670835565927230899674712780610087152439201543453755") - PrecomputedLines[1][63].A0 = emulated.ValueOf[emulated.BN254Fp]("12474451462113811170279691739806155555255035988412241892389371812852943279791") - PrecomputedLines[1][63].A1 = emulated.ValueOf[emulated.BN254Fp]("11583683749753447484324963631355529779732614390183595665835388782603973114554") - PrecomputedLines[2][63].A0 = emulated.ValueOf[emulated.BN254Fp]("4351619662097199247792407486841887892728868845867619468460367957111511777281") - PrecomputedLines[2][63].A1 = emulated.ValueOf[emulated.BN254Fp]("5684094267725805546491764759679865993449104797108069757958938517705465746853") - PrecomputedLines[3][63].A0 = emulated.ValueOf[emulated.BN254Fp]("10353962084714942711958392698892131194533550945227135631964812972535754938740") - PrecomputedLines[3][63].A1 = emulated.ValueOf[emulated.BN254Fp]("1928175489709988399997528177153275473647160619426141896807527496697530478537") + PrecomputedLines[0][63].A0 = emulated.ValueOf[BaseField]("8834747017950039806917730978057895018652669773221183534396319488771182322273") + PrecomputedLines[0][63].A1 = emulated.ValueOf[BaseField]("20569453214085543698303175670835565927230899674712780610087152439201543453755") + PrecomputedLines[1][63].A0 = emulated.ValueOf[BaseField]("12474451462113811170279691739806155555255035988412241892389371812852943279791") + PrecomputedLines[1][63].A1 = emulated.ValueOf[BaseField]("11583683749753447484324963631355529779732614390183595665835388782603973114554") + PrecomputedLines[2][63].A0 = emulated.ValueOf[BaseField]("4351619662097199247792407486841887892728868845867619468460367957111511777281") + PrecomputedLines[2][63].A1 = emulated.ValueOf[BaseField]("5684094267725805546491764759679865993449104797108069757958938517705465746853") + PrecomputedLines[3][63].A0 = emulated.ValueOf[BaseField]("10353962084714942711958392698892131194533550945227135631964812972535754938740") + PrecomputedLines[3][63].A1 = emulated.ValueOf[BaseField]("1928175489709988399997528177153275473647160619426141896807527496697530478537") // i = 62 - PrecomputedLines[0][62].A0 = emulated.ValueOf[emulated.BN254Fp]("8235221535982217724508088798625418488934211808403480937732051788034499272591") - PrecomputedLines[0][62].A1 = emulated.ValueOf[emulated.BN254Fp]("21624988872631589384985418538844721483027269339384612878942921292555079826013") - PrecomputedLines[1][62].A0 = emulated.ValueOf[emulated.BN254Fp]("20348378478608120338812639349974340732102235507506642310441900724921087826247") - PrecomputedLines[1][62].A1 = emulated.ValueOf[emulated.BN254Fp]("8566792459109340182179639521038613097990900893660026554466166360331455617193") + PrecomputedLines[0][62].A0 = emulated.ValueOf[BaseField]("8235221535982217724508088798625418488934211808403480937732051788034499272591") + PrecomputedLines[0][62].A1 = emulated.ValueOf[BaseField]("21624988872631589384985418538844721483027269339384612878942921292555079826013") + PrecomputedLines[1][62].A0 = emulated.ValueOf[BaseField]("20348378478608120338812639349974340732102235507506642310441900724921087826247") + PrecomputedLines[1][62].A1 = emulated.ValueOf[BaseField]("8566792459109340182179639521038613097990900893660026554466166360331455617193") // i = 61 - PrecomputedLines[0][61].A0 = emulated.ValueOf[emulated.BN254Fp]("6627719691581136027519842318508717081939451729821280503007308537592603220412") - PrecomputedLines[0][61].A1 = emulated.ValueOf[emulated.BN254Fp]("11524325490035505497336553724692563653964162500918217938886754632362466082811") - PrecomputedLines[1][61].A0 = emulated.ValueOf[emulated.BN254Fp]("19731985605225575090697166005028587616606038298772396496599168985556363200631") - PrecomputedLines[1][61].A1 = emulated.ValueOf[emulated.BN254Fp]("7373556318285282840971580083079025136539854915977927179933078831491469609682") - PrecomputedLines[2][61].A0 = emulated.ValueOf[emulated.BN254Fp]("13733440734738072597076384372509888040506082931566095722592032318509288104124") - PrecomputedLines[2][61].A1 = emulated.ValueOf[emulated.BN254Fp]("14721209502407905805334137781178425261132829203821641437369233014505902590526") - PrecomputedLines[3][61].A0 = emulated.ValueOf[emulated.BN254Fp]("5027080457503687104862577903377368485365806076692125497436352950815222879179") - PrecomputedLines[3][61].A1 = emulated.ValueOf[emulated.BN254Fp]("19289658640175986155793149849769305065167539432896819573858459105348955554557") + PrecomputedLines[0][61].A0 = emulated.ValueOf[BaseField]("6627719691581136027519842318508717081939451729821280503007308537592603220412") + PrecomputedLines[0][61].A1 = emulated.ValueOf[BaseField]("11524325490035505497336553724692563653964162500918217938886754632362466082811") + PrecomputedLines[1][61].A0 = emulated.ValueOf[BaseField]("19731985605225575090697166005028587616606038298772396496599168985556363200631") + PrecomputedLines[1][61].A1 = emulated.ValueOf[BaseField]("7373556318285282840971580083079025136539854915977927179933078831491469609682") + PrecomputedLines[2][61].A0 = emulated.ValueOf[BaseField]("13733440734738072597076384372509888040506082931566095722592032318509288104124") + PrecomputedLines[2][61].A1 = emulated.ValueOf[BaseField]("14721209502407905805334137781178425261132829203821641437369233014505902590526") + PrecomputedLines[3][61].A0 = emulated.ValueOf[BaseField]("5027080457503687104862577903377368485365806076692125497436352950815222879179") + PrecomputedLines[3][61].A1 = emulated.ValueOf[BaseField]("19289658640175986155793149849769305065167539432896819573858459105348955554557") // i = 60 - PrecomputedLines[0][60].A0 = emulated.ValueOf[emulated.BN254Fp]("14632988473650232706638308445044627656823840762055592679861976480201049786937") - PrecomputedLines[0][60].A1 = emulated.ValueOf[emulated.BN254Fp]("18477931370497242185852032413411380760829755240315614825130799062365486125783") - PrecomputedLines[1][60].A0 = emulated.ValueOf[emulated.BN254Fp]("18049101236999327864886811068212417971066320579871553559963860415669018134496") - PrecomputedLines[1][60].A1 = emulated.ValueOf[emulated.BN254Fp]("3340541398203178600550723254278705350179917842084176758931787480715875388093") + PrecomputedLines[0][60].A0 = emulated.ValueOf[BaseField]("14632988473650232706638308445044627656823840762055592679861976480201049786937") + PrecomputedLines[0][60].A1 = emulated.ValueOf[BaseField]("18477931370497242185852032413411380760829755240315614825130799062365486125783") + PrecomputedLines[1][60].A0 = emulated.ValueOf[BaseField]("18049101236999327864886811068212417971066320579871553559963860415669018134496") + PrecomputedLines[1][60].A1 = emulated.ValueOf[BaseField]("3340541398203178600550723254278705350179917842084176758931787480715875388093") // i = 59 - PrecomputedLines[0][59].A0 = emulated.ValueOf[emulated.BN254Fp]("17045135689595429000496650894177684583849536764983720634964441404516121899392") - PrecomputedLines[0][59].A1 = emulated.ValueOf[emulated.BN254Fp]("20874559392346445015406487528270220685966388146273495510982431769773849348197") - PrecomputedLines[1][59].A0 = emulated.ValueOf[emulated.BN254Fp]("8223740335264218373639292193525349753225213618348104360137437003379775025437") - PrecomputedLines[1][59].A1 = emulated.ValueOf[emulated.BN254Fp]("2548870952786184681128163676627501278690702287544993422150040172278516478745") + PrecomputedLines[0][59].A0 = emulated.ValueOf[BaseField]("17045135689595429000496650894177684583849536764983720634964441404516121899392") + PrecomputedLines[0][59].A1 = emulated.ValueOf[BaseField]("20874559392346445015406487528270220685966388146273495510982431769773849348197") + PrecomputedLines[1][59].A0 = emulated.ValueOf[BaseField]("8223740335264218373639292193525349753225213618348104360137437003379775025437") + PrecomputedLines[1][59].A1 = emulated.ValueOf[BaseField]("2548870952786184681128163676627501278690702287544993422150040172278516478745") // i = 58 - PrecomputedLines[0][58].A0 = emulated.ValueOf[emulated.BN254Fp]("10954828682858274260092126382718192953262472685421314903371241946559589624873") - PrecomputedLines[0][58].A1 = emulated.ValueOf[emulated.BN254Fp]("8743995751245898721379411778296781208636410240371573947003929850344297435525") - PrecomputedLines[1][58].A0 = emulated.ValueOf[emulated.BN254Fp]("17024182879676720943763727838881486298580583134896607657788582772952988629132") - PrecomputedLines[1][58].A1 = emulated.ValueOf[emulated.BN254Fp]("233080409219735443943562019109568508823238327587973458579303286089303864680") + PrecomputedLines[0][58].A0 = emulated.ValueOf[BaseField]("10954828682858274260092126382718192953262472685421314903371241946559589624873") + PrecomputedLines[0][58].A1 = emulated.ValueOf[BaseField]("8743995751245898721379411778296781208636410240371573947003929850344297435525") + PrecomputedLines[1][58].A0 = emulated.ValueOf[BaseField]("17024182879676720943763727838881486298580583134896607657788582772952988629132") + PrecomputedLines[1][58].A1 = emulated.ValueOf[BaseField]("233080409219735443943562019109568508823238327587973458579303286089303864680") // i = 57 - PrecomputedLines[0][57].A0 = emulated.ValueOf[emulated.BN254Fp]("12410140729570783839406161286916119301565534084495020370980905806792203460134") - PrecomputedLines[0][57].A1 = emulated.ValueOf[emulated.BN254Fp]("14094884930234597736770350376505495314765932446313713250354944203186636575455") - PrecomputedLines[1][57].A0 = emulated.ValueOf[emulated.BN254Fp]("532840589523723053112594079794333892977065522820117356517422849664750230778") - PrecomputedLines[1][57].A1 = emulated.ValueOf[emulated.BN254Fp]("5660638474743049541851028697096356971110017724650313911198424181549845543920") - PrecomputedLines[2][57].A0 = emulated.ValueOf[emulated.BN254Fp]("18032936869020334689349219157241011538136257425003297594369894001691209779164") - PrecomputedLines[2][57].A1 = emulated.ValueOf[emulated.BN254Fp]("16754765645720625866506074952008486046920919307557056709799845067180351678981") - PrecomputedLines[3][57].A0 = emulated.ValueOf[emulated.BN254Fp]("18040737120690367958636522976877072351597960312418873862053894642308039267165") - PrecomputedLines[3][57].A1 = emulated.ValueOf[emulated.BN254Fp]("12847080167727762220604062477143165139413815667631144830150678996896243094397") + PrecomputedLines[0][57].A0 = emulated.ValueOf[BaseField]("12410140729570783839406161286916119301565534084495020370980905806792203460134") + PrecomputedLines[0][57].A1 = emulated.ValueOf[BaseField]("14094884930234597736770350376505495314765932446313713250354944203186636575455") + PrecomputedLines[1][57].A0 = emulated.ValueOf[BaseField]("532840589523723053112594079794333892977065522820117356517422849664750230778") + PrecomputedLines[1][57].A1 = emulated.ValueOf[BaseField]("5660638474743049541851028697096356971110017724650313911198424181549845543920") + PrecomputedLines[2][57].A0 = emulated.ValueOf[BaseField]("18032936869020334689349219157241011538136257425003297594369894001691209779164") + PrecomputedLines[2][57].A1 = emulated.ValueOf[BaseField]("16754765645720625866506074952008486046920919307557056709799845067180351678981") + PrecomputedLines[3][57].A0 = emulated.ValueOf[BaseField]("18040737120690367958636522976877072351597960312418873862053894642308039267165") + PrecomputedLines[3][57].A1 = emulated.ValueOf[BaseField]("12847080167727762220604062477143165139413815667631144830150678996896243094397") // i = 56 - PrecomputedLines[0][56].A0 = emulated.ValueOf[emulated.BN254Fp]("19645311236785860275323414293804502000247542616913482529314177973392964070041") - PrecomputedLines[0][56].A1 = emulated.ValueOf[emulated.BN254Fp]("11127380619767050390611672259834755402156496596006857437940271701361623250389") - PrecomputedLines[1][56].A0 = emulated.ValueOf[emulated.BN254Fp]("12866789663733235640870663615630153955969739486663450312836464903244952796759") - PrecomputedLines[1][56].A1 = emulated.ValueOf[emulated.BN254Fp]("20334247261155778215897034951123988527365486037964674499287611566337802994246") + PrecomputedLines[0][56].A0 = emulated.ValueOf[BaseField]("19645311236785860275323414293804502000247542616913482529314177973392964070041") + PrecomputedLines[0][56].A1 = emulated.ValueOf[BaseField]("11127380619767050390611672259834755402156496596006857437940271701361623250389") + PrecomputedLines[1][56].A0 = emulated.ValueOf[BaseField]("12866789663733235640870663615630153955969739486663450312836464903244952796759") + PrecomputedLines[1][56].A1 = emulated.ValueOf[BaseField]("20334247261155778215897034951123988527365486037964674499287611566337802994246") // i = 55 - PrecomputedLines[0][55].A0 = emulated.ValueOf[emulated.BN254Fp]("4909602325743718030494127948247513676144699561762181851595755686145634562165") - PrecomputedLines[0][55].A1 = emulated.ValueOf[emulated.BN254Fp]("4980795661388523093721831770060089904711582345302707214936616089440639723701") - PrecomputedLines[1][55].A0 = emulated.ValueOf[emulated.BN254Fp]("15971329859948607389718743711907428875739552759192560895900443046558268384833") - PrecomputedLines[1][55].A1 = emulated.ValueOf[emulated.BN254Fp]("6865348535803696642084936610119046588478673910965860309150729592421280179161") - PrecomputedLines[2][55].A0 = emulated.ValueOf[emulated.BN254Fp]("2764448302387997018686838945031167114772677413806369496295142807496601012389") - PrecomputedLines[2][55].A1 = emulated.ValueOf[emulated.BN254Fp]("11531890680898353878360012539400900008526988690934761520248628457335690795123") - PrecomputedLines[3][55].A0 = emulated.ValueOf[emulated.BN254Fp]("20477902323488575991951213865423297622833142796361576949400620096696322938714") - PrecomputedLines[3][55].A1 = emulated.ValueOf[emulated.BN254Fp]("15588298079216618665269525070947878050724410941478388548632206918344265255660") + PrecomputedLines[0][55].A0 = emulated.ValueOf[BaseField]("4909602325743718030494127948247513676144699561762181851595755686145634562165") + PrecomputedLines[0][55].A1 = emulated.ValueOf[BaseField]("4980795661388523093721831770060089904711582345302707214936616089440639723701") + PrecomputedLines[1][55].A0 = emulated.ValueOf[BaseField]("15971329859948607389718743711907428875739552759192560895900443046558268384833") + PrecomputedLines[1][55].A1 = emulated.ValueOf[BaseField]("6865348535803696642084936610119046588478673910965860309150729592421280179161") + PrecomputedLines[2][55].A0 = emulated.ValueOf[BaseField]("2764448302387997018686838945031167114772677413806369496295142807496601012389") + PrecomputedLines[2][55].A1 = emulated.ValueOf[BaseField]("11531890680898353878360012539400900008526988690934761520248628457335690795123") + PrecomputedLines[3][55].A0 = emulated.ValueOf[BaseField]("20477902323488575991951213865423297622833142796361576949400620096696322938714") + PrecomputedLines[3][55].A1 = emulated.ValueOf[BaseField]("15588298079216618665269525070947878050724410941478388548632206918344265255660") // i = 54 - PrecomputedLines[0][54].A0 = emulated.ValueOf[emulated.BN254Fp]("2423954684975409421113106111483795343402357285046083347957019460241561263903") - PrecomputedLines[0][54].A1 = emulated.ValueOf[emulated.BN254Fp]("21686350663615057943513793308336218547546151034882551854568393652361503247048") - PrecomputedLines[1][54].A0 = emulated.ValueOf[emulated.BN254Fp]("17983889902010442989037806626756227210350021563685842847697610334754612024861") - PrecomputedLines[1][54].A1 = emulated.ValueOf[emulated.BN254Fp]("16240742027186297373450412352773641086393171254541832522856010008961570443994") + PrecomputedLines[0][54].A0 = emulated.ValueOf[BaseField]("2423954684975409421113106111483795343402357285046083347957019460241561263903") + PrecomputedLines[0][54].A1 = emulated.ValueOf[BaseField]("21686350663615057943513793308336218547546151034882551854568393652361503247048") + PrecomputedLines[1][54].A0 = emulated.ValueOf[BaseField]("17983889902010442989037806626756227210350021563685842847697610334754612024861") + PrecomputedLines[1][54].A1 = emulated.ValueOf[BaseField]("16240742027186297373450412352773641086393171254541832522856010008961570443994") // i = 53 - PrecomputedLines[0][53].A0 = emulated.ValueOf[emulated.BN254Fp]("3299397589651430835046889418728383096966563010050347574588126659195099410858") - PrecomputedLines[0][53].A1 = emulated.ValueOf[emulated.BN254Fp]("2702370610853020400314647094191315939694996588064902553275009984508683489928") - PrecomputedLines[1][53].A0 = emulated.ValueOf[emulated.BN254Fp]("3979157981082211890213327198809251890345860044112490020571189248429346769401") - PrecomputedLines[1][53].A1 = emulated.ValueOf[emulated.BN254Fp]("19944567808172014331943455052193835769131894893228158061444755101571479200005") + PrecomputedLines[0][53].A0 = emulated.ValueOf[BaseField]("3299397589651430835046889418728383096966563010050347574588126659195099410858") + PrecomputedLines[0][53].A1 = emulated.ValueOf[BaseField]("2702370610853020400314647094191315939694996588064902553275009984508683489928") + PrecomputedLines[1][53].A0 = emulated.ValueOf[BaseField]("3979157981082211890213327198809251890345860044112490020571189248429346769401") + PrecomputedLines[1][53].A1 = emulated.ValueOf[BaseField]("19944567808172014331943455052193835769131894893228158061444755101571479200005") // i = 52 - PrecomputedLines[0][52].A0 = emulated.ValueOf[emulated.BN254Fp]("6258196544160211102321925954410279782816574037374433438978246710964080754940") - PrecomputedLines[0][52].A1 = emulated.ValueOf[emulated.BN254Fp]("3005660902529334848218755993004858578785696325272369744839253118680617897204") - PrecomputedLines[1][52].A0 = emulated.ValueOf[emulated.BN254Fp]("814264396833942665903531553752517163857204609821495556934616064593387497987") - PrecomputedLines[1][52].A1 = emulated.ValueOf[emulated.BN254Fp]("18008736309258122452427755394070359806936368847348640156095452637685946009270") + PrecomputedLines[0][52].A0 = emulated.ValueOf[BaseField]("6258196544160211102321925954410279782816574037374433438978246710964080754940") + PrecomputedLines[0][52].A1 = emulated.ValueOf[BaseField]("3005660902529334848218755993004858578785696325272369744839253118680617897204") + PrecomputedLines[1][52].A0 = emulated.ValueOf[BaseField]("814264396833942665903531553752517163857204609821495556934616064593387497987") + PrecomputedLines[1][52].A1 = emulated.ValueOf[BaseField]("18008736309258122452427755394070359806936368847348640156095452637685946009270") // i = 51 - PrecomputedLines[0][51].A0 = emulated.ValueOf[emulated.BN254Fp]("12420890053219508598807591154496379602809478224965227087113822934299408691873") - PrecomputedLines[0][51].A1 = emulated.ValueOf[emulated.BN254Fp]("17303367877986414511475092300779955134419370651210868516114472535617760078437") - PrecomputedLines[1][51].A0 = emulated.ValueOf[emulated.BN254Fp]("5654129892575944946690000888934348891080307733028900301840391685691529358356") - PrecomputedLines[1][51].A1 = emulated.ValueOf[emulated.BN254Fp]("16233036145896569525486180974188009724711185398467310790001445624076382127411") - PrecomputedLines[2][51].A0 = emulated.ValueOf[emulated.BN254Fp]("15280789913398818336264656867575336658350410371574894768730045385395713509640") - PrecomputedLines[2][51].A1 = emulated.ValueOf[emulated.BN254Fp]("19086876210297108145367386096540798080237895501217269732090299553431756186874") - PrecomputedLines[3][51].A0 = emulated.ValueOf[emulated.BN254Fp]("20152602455257424885705855540594687474352896500023277194652697233085988612702") - PrecomputedLines[3][51].A1 = emulated.ValueOf[emulated.BN254Fp]("5047067997772839341060798895369969865071494197407643998682395775472163143236") + PrecomputedLines[0][51].A0 = emulated.ValueOf[BaseField]("12420890053219508598807591154496379602809478224965227087113822934299408691873") + PrecomputedLines[0][51].A1 = emulated.ValueOf[BaseField]("17303367877986414511475092300779955134419370651210868516114472535617760078437") + PrecomputedLines[1][51].A0 = emulated.ValueOf[BaseField]("5654129892575944946690000888934348891080307733028900301840391685691529358356") + PrecomputedLines[1][51].A1 = emulated.ValueOf[BaseField]("16233036145896569525486180974188009724711185398467310790001445624076382127411") + PrecomputedLines[2][51].A0 = emulated.ValueOf[BaseField]("15280789913398818336264656867575336658350410371574894768730045385395713509640") + PrecomputedLines[2][51].A1 = emulated.ValueOf[BaseField]("19086876210297108145367386096540798080237895501217269732090299553431756186874") + PrecomputedLines[3][51].A0 = emulated.ValueOf[BaseField]("20152602455257424885705855540594687474352896500023277194652697233085988612702") + PrecomputedLines[3][51].A1 = emulated.ValueOf[BaseField]("5047067997772839341060798895369969865071494197407643998682395775472163143236") // i = 50 - PrecomputedLines[0][50].A0 = emulated.ValueOf[emulated.BN254Fp]("9679722372596923253224153788895318885991703645078795262894298224910585336719") - PrecomputedLines[0][50].A1 = emulated.ValueOf[emulated.BN254Fp]("14514223747309844563686332289086628131330780550209469152711732915738910690017") - PrecomputedLines[1][50].A0 = emulated.ValueOf[emulated.BN254Fp]("21089781100202322623793764397713628697432828784246141248094996360041604110331") - PrecomputedLines[1][50].A1 = emulated.ValueOf[emulated.BN254Fp]("17528189601039012041588006220155360374406334568305836940619703484971862864495") + PrecomputedLines[0][50].A0 = emulated.ValueOf[BaseField]("9679722372596923253224153788895318885991703645078795262894298224910585336719") + PrecomputedLines[0][50].A1 = emulated.ValueOf[BaseField]("14514223747309844563686332289086628131330780550209469152711732915738910690017") + PrecomputedLines[1][50].A0 = emulated.ValueOf[BaseField]("21089781100202322623793764397713628697432828784246141248094996360041604110331") + PrecomputedLines[1][50].A1 = emulated.ValueOf[BaseField]("17528189601039012041588006220155360374406334568305836940619703484971862864495") // i = 49 - PrecomputedLines[0][49].A0 = emulated.ValueOf[emulated.BN254Fp]("11070264611763304059093376142120848903484793346053636108950365869037426569578") - PrecomputedLines[0][49].A1 = emulated.ValueOf[emulated.BN254Fp]("5566620684243985148174385257832990705507517654546203571578376077206518542096") - PrecomputedLines[1][49].A0 = emulated.ValueOf[emulated.BN254Fp]("21439244283016676608324861890592606819171700780439376409220912790618219709100") - PrecomputedLines[1][49].A1 = emulated.ValueOf[emulated.BN254Fp]("7429886405799165109635340226052960810301612425806339795255948228548720117114") - PrecomputedLines[2][49].A0 = emulated.ValueOf[emulated.BN254Fp]("15262812223739557968076855432738368535216463506023656398166408211596744345480") - PrecomputedLines[2][49].A1 = emulated.ValueOf[emulated.BN254Fp]("21718155741215205740714059098811649981889099801055042894213824492357370586441") - PrecomputedLines[3][49].A0 = emulated.ValueOf[emulated.BN254Fp]("18117071879837371740798839911980038457907852615599242665408622350971595899012") - PrecomputedLines[3][49].A1 = emulated.ValueOf[emulated.BN254Fp]("8568859093111261946081380679772818415299601251733724245998939644866684988958") + PrecomputedLines[0][49].A0 = emulated.ValueOf[BaseField]("11070264611763304059093376142120848903484793346053636108950365869037426569578") + PrecomputedLines[0][49].A1 = emulated.ValueOf[BaseField]("5566620684243985148174385257832990705507517654546203571578376077206518542096") + PrecomputedLines[1][49].A0 = emulated.ValueOf[BaseField]("21439244283016676608324861890592606819171700780439376409220912790618219709100") + PrecomputedLines[1][49].A1 = emulated.ValueOf[BaseField]("7429886405799165109635340226052960810301612425806339795255948228548720117114") + PrecomputedLines[2][49].A0 = emulated.ValueOf[BaseField]("15262812223739557968076855432738368535216463506023656398166408211596744345480") + PrecomputedLines[2][49].A1 = emulated.ValueOf[BaseField]("21718155741215205740714059098811649981889099801055042894213824492357370586441") + PrecomputedLines[3][49].A0 = emulated.ValueOf[BaseField]("18117071879837371740798839911980038457907852615599242665408622350971595899012") + PrecomputedLines[3][49].A1 = emulated.ValueOf[BaseField]("8568859093111261946081380679772818415299601251733724245998939644866684988958") // i = 48 - PrecomputedLines[0][48].A0 = emulated.ValueOf[emulated.BN254Fp]("7653502376183972189528005574912937698901707992597867413732313005949090861078") - PrecomputedLines[0][48].A1 = emulated.ValueOf[emulated.BN254Fp]("18078299108818183297076160903115040870971029681103562344505507059920109498724") - PrecomputedLines[1][48].A0 = emulated.ValueOf[emulated.BN254Fp]("5958828994437554107496173026037633753578905513469664500371044380353413307215") - PrecomputedLines[1][48].A1 = emulated.ValueOf[emulated.BN254Fp]("4457857287549567054803825263261489919553034648299704807245359432847888563495") + PrecomputedLines[0][48].A0 = emulated.ValueOf[BaseField]("7653502376183972189528005574912937698901707992597867413732313005949090861078") + PrecomputedLines[0][48].A1 = emulated.ValueOf[BaseField]("18078299108818183297076160903115040870971029681103562344505507059920109498724") + PrecomputedLines[1][48].A0 = emulated.ValueOf[BaseField]("5958828994437554107496173026037633753578905513469664500371044380353413307215") + PrecomputedLines[1][48].A1 = emulated.ValueOf[BaseField]("4457857287549567054803825263261489919553034648299704807245359432847888563495") // i = 47 - PrecomputedLines[0][47].A0 = emulated.ValueOf[emulated.BN254Fp]("11785245607980003005839007342283447681532074921512117922377232062695696875063") - PrecomputedLines[0][47].A1 = emulated.ValueOf[emulated.BN254Fp]("3674471715303242650639836240573952653116010918695452109397036698752292897898") - PrecomputedLines[1][47].A0 = emulated.ValueOf[emulated.BN254Fp]("45627793441629135917601349379085503635034794546470734893491110198522468332") - PrecomputedLines[1][47].A1 = emulated.ValueOf[emulated.BN254Fp]("13592279364712648679231730257313513790926888930629759987134996708519290791723") - PrecomputedLines[2][47].A0 = emulated.ValueOf[emulated.BN254Fp]("4219137964241005960272202013946114675691474544442298976511002870769419504812") - PrecomputedLines[2][47].A1 = emulated.ValueOf[emulated.BN254Fp]("14310914677517468679944086988957529739710673981285059899394344618236313440099") - PrecomputedLines[3][47].A0 = emulated.ValueOf[emulated.BN254Fp]("10374119938212414799339884240754452606245790388879855930781662754854289264542") - PrecomputedLines[3][47].A1 = emulated.ValueOf[emulated.BN254Fp]("7249803302968745898565931551390491553765429802954021150194461040817468653516") + PrecomputedLines[0][47].A0 = emulated.ValueOf[BaseField]("11785245607980003005839007342283447681532074921512117922377232062695696875063") + PrecomputedLines[0][47].A1 = emulated.ValueOf[BaseField]("3674471715303242650639836240573952653116010918695452109397036698752292897898") + PrecomputedLines[1][47].A0 = emulated.ValueOf[BaseField]("45627793441629135917601349379085503635034794546470734893491110198522468332") + PrecomputedLines[1][47].A1 = emulated.ValueOf[BaseField]("13592279364712648679231730257313513790926888930629759987134996708519290791723") + PrecomputedLines[2][47].A0 = emulated.ValueOf[BaseField]("4219137964241005960272202013946114675691474544442298976511002870769419504812") + PrecomputedLines[2][47].A1 = emulated.ValueOf[BaseField]("14310914677517468679944086988957529739710673981285059899394344618236313440099") + PrecomputedLines[3][47].A0 = emulated.ValueOf[BaseField]("10374119938212414799339884240754452606245790388879855930781662754854289264542") + PrecomputedLines[3][47].A1 = emulated.ValueOf[BaseField]("7249803302968745898565931551390491553765429802954021150194461040817468653516") // i = 46 - PrecomputedLines[0][46].A0 = emulated.ValueOf[emulated.BN254Fp]("3322469610693328663691825947323331441415625540966696120651002654440253319052") - PrecomputedLines[0][46].A1 = emulated.ValueOf[emulated.BN254Fp]("1942780532870155484021476731037192630204446135294484553429490820308706502574") - PrecomputedLines[1][46].A0 = emulated.ValueOf[emulated.BN254Fp]("17202876709489003816438966092823149993355061110971733076837388178975675061543") - PrecomputedLines[1][46].A1 = emulated.ValueOf[emulated.BN254Fp]("1827707550130567292619674424799209527730638026770607682353371933371424896649") + PrecomputedLines[0][46].A0 = emulated.ValueOf[BaseField]("3322469610693328663691825947323331441415625540966696120651002654440253319052") + PrecomputedLines[0][46].A1 = emulated.ValueOf[BaseField]("1942780532870155484021476731037192630204446135294484553429490820308706502574") + PrecomputedLines[1][46].A0 = emulated.ValueOf[BaseField]("17202876709489003816438966092823149993355061110971733076837388178975675061543") + PrecomputedLines[1][46].A1 = emulated.ValueOf[BaseField]("1827707550130567292619674424799209527730638026770607682353371933371424896649") // i = 45 - PrecomputedLines[0][45].A0 = emulated.ValueOf[emulated.BN254Fp]("4454860302834193997922027643677141826335477685905943160881719665216396316023") - PrecomputedLines[0][45].A1 = emulated.ValueOf[emulated.BN254Fp]("13460420380135308103263096461528931372790583621207990906826840013420510427402") - PrecomputedLines[1][45].A0 = emulated.ValueOf[emulated.BN254Fp]("6173471785502118124181307330287807246726679438042165280456980585789204024261") - PrecomputedLines[1][45].A1 = emulated.ValueOf[emulated.BN254Fp]("9115487602626298454909684608831879314662251126849935581628519764110399653742") + PrecomputedLines[0][45].A0 = emulated.ValueOf[BaseField]("4454860302834193997922027643677141826335477685905943160881719665216396316023") + PrecomputedLines[0][45].A1 = emulated.ValueOf[BaseField]("13460420380135308103263096461528931372790583621207990906826840013420510427402") + PrecomputedLines[1][45].A0 = emulated.ValueOf[BaseField]("6173471785502118124181307330287807246726679438042165280456980585789204024261") + PrecomputedLines[1][45].A1 = emulated.ValueOf[BaseField]("9115487602626298454909684608831879314662251126849935581628519764110399653742") // i = 44 - PrecomputedLines[0][44].A0 = emulated.ValueOf[emulated.BN254Fp]("1808160525575058758917825482888189988480854443063379197012638697518523206015") - PrecomputedLines[0][44].A1 = emulated.ValueOf[emulated.BN254Fp]("17974039573517006177103900772046815180642726119197145299789772931932242373761") - PrecomputedLines[1][44].A0 = emulated.ValueOf[emulated.BN254Fp]("4836565830302726743825617174678612813412946168360212251833373381562334895992") - PrecomputedLines[1][44].A1 = emulated.ValueOf[emulated.BN254Fp]("6540127829396182735905780776540077847286814503740931399470223558889379807318") - PrecomputedLines[2][44].A0 = emulated.ValueOf[emulated.BN254Fp]("14217246290721035597535922596218461586467355332509420181286410302541613841694") - PrecomputedLines[2][44].A1 = emulated.ValueOf[emulated.BN254Fp]("2908093977878325873797969441052414806114066218549559765693286267809031453390") - PrecomputedLines[3][44].A0 = emulated.ValueOf[emulated.BN254Fp]("11160891947094503976396935083892652810330554397537039864076674697178398903810") - PrecomputedLines[3][44].A1 = emulated.ValueOf[emulated.BN254Fp]("8932087540233051702344716353214580354819556708224293257744342595927104649379") + PrecomputedLines[0][44].A0 = emulated.ValueOf[BaseField]("1808160525575058758917825482888189988480854443063379197012638697518523206015") + PrecomputedLines[0][44].A1 = emulated.ValueOf[BaseField]("17974039573517006177103900772046815180642726119197145299789772931932242373761") + PrecomputedLines[1][44].A0 = emulated.ValueOf[BaseField]("4836565830302726743825617174678612813412946168360212251833373381562334895992") + PrecomputedLines[1][44].A1 = emulated.ValueOf[BaseField]("6540127829396182735905780776540077847286814503740931399470223558889379807318") + PrecomputedLines[2][44].A0 = emulated.ValueOf[BaseField]("14217246290721035597535922596218461586467355332509420181286410302541613841694") + PrecomputedLines[2][44].A1 = emulated.ValueOf[BaseField]("2908093977878325873797969441052414806114066218549559765693286267809031453390") + PrecomputedLines[3][44].A0 = emulated.ValueOf[BaseField]("11160891947094503976396935083892652810330554397537039864076674697178398903810") + PrecomputedLines[3][44].A1 = emulated.ValueOf[BaseField]("8932087540233051702344716353214580354819556708224293257744342595927104649379") // i = 43 - PrecomputedLines[0][43].A0 = emulated.ValueOf[emulated.BN254Fp]("21406534929501956719171835897604615263148474051911745550006151022849957388643") - PrecomputedLines[0][43].A1 = emulated.ValueOf[emulated.BN254Fp]("10279781929005127439140488793928581246508457419866317770606378400774241150772") - PrecomputedLines[1][43].A0 = emulated.ValueOf[emulated.BN254Fp]("9709078210642965619422714825761003836985439131762449854224392441007339412834") - PrecomputedLines[1][43].A1 = emulated.ValueOf[emulated.BN254Fp]("11129005740706905660803848575047973153280590126228714832868068527425037373751") + PrecomputedLines[0][43].A0 = emulated.ValueOf[BaseField]("21406534929501956719171835897604615263148474051911745550006151022849957388643") + PrecomputedLines[0][43].A1 = emulated.ValueOf[BaseField]("10279781929005127439140488793928581246508457419866317770606378400774241150772") + PrecomputedLines[1][43].A0 = emulated.ValueOf[BaseField]("9709078210642965619422714825761003836985439131762449854224392441007339412834") + PrecomputedLines[1][43].A1 = emulated.ValueOf[BaseField]("11129005740706905660803848575047973153280590126228714832868068527425037373751") // i = 42 - PrecomputedLines[0][42].A0 = emulated.ValueOf[emulated.BN254Fp]("5570866902587445338732530591687200111549728761628124016050692968437706751601") - PrecomputedLines[0][42].A1 = emulated.ValueOf[emulated.BN254Fp]("10275848058977370789435005534809927911069178479505311836113062825745267179381") - PrecomputedLines[1][42].A0 = emulated.ValueOf[emulated.BN254Fp]("3633887160270413594942060642216918996537999582294210057554627044590039786234") - PrecomputedLines[1][42].A1 = emulated.ValueOf[emulated.BN254Fp]("8939668248755020860948171356447789359992139917425514662320694855157405768150") + PrecomputedLines[0][42].A0 = emulated.ValueOf[BaseField]("5570866902587445338732530591687200111549728761628124016050692968437706751601") + PrecomputedLines[0][42].A1 = emulated.ValueOf[BaseField]("10275848058977370789435005534809927911069178479505311836113062825745267179381") + PrecomputedLines[1][42].A0 = emulated.ValueOf[BaseField]("3633887160270413594942060642216918996537999582294210057554627044590039786234") + PrecomputedLines[1][42].A1 = emulated.ValueOf[BaseField]("8939668248755020860948171356447789359992139917425514662320694855157405768150") // i = 41 - PrecomputedLines[0][41].A0 = emulated.ValueOf[emulated.BN254Fp]("18885470138073884864482120331203309626511755319182411648838895487000802451896") - PrecomputedLines[0][41].A1 = emulated.ValueOf[emulated.BN254Fp]("9622125734920158797843141885788251658263242254352775708729064763529753374409") - PrecomputedLines[1][41].A0 = emulated.ValueOf[emulated.BN254Fp]("19492892729379236004557729196741558779480783232265355978008529229208638077001") - PrecomputedLines[1][41].A1 = emulated.ValueOf[emulated.BN254Fp]("9026667103760964167291393581811590447916219414798161581254060489069424386713") + PrecomputedLines[0][41].A0 = emulated.ValueOf[BaseField]("18885470138073884864482120331203309626511755319182411648838895487000802451896") + PrecomputedLines[0][41].A1 = emulated.ValueOf[BaseField]("9622125734920158797843141885788251658263242254352775708729064763529753374409") + PrecomputedLines[1][41].A0 = emulated.ValueOf[BaseField]("19492892729379236004557729196741558779480783232265355978008529229208638077001") + PrecomputedLines[1][41].A1 = emulated.ValueOf[BaseField]("9026667103760964167291393581811590447916219414798161581254060489069424386713") // i = 40 - PrecomputedLines[0][40].A0 = emulated.ValueOf[emulated.BN254Fp]("7917086886314173678014982140498314563333885917374381676048136849306589970300") - PrecomputedLines[0][40].A1 = emulated.ValueOf[emulated.BN254Fp]("12261633934171134354022033316006453963392366695723701109381951932703857762414") - PrecomputedLines[1][40].A0 = emulated.ValueOf[emulated.BN254Fp]("10914160321677904051918987802671845728099932842880059488686382944858229492896") - PrecomputedLines[1][40].A1 = emulated.ValueOf[emulated.BN254Fp]("8359557585977416078793909793984425896635087139789596461899708508514130896302") + PrecomputedLines[0][40].A0 = emulated.ValueOf[BaseField]("7917086886314173678014982140498314563333885917374381676048136849306589970300") + PrecomputedLines[0][40].A1 = emulated.ValueOf[BaseField]("12261633934171134354022033316006453963392366695723701109381951932703857762414") + PrecomputedLines[1][40].A0 = emulated.ValueOf[BaseField]("10914160321677904051918987802671845728099932842880059488686382944858229492896") + PrecomputedLines[1][40].A1 = emulated.ValueOf[BaseField]("8359557585977416078793909793984425896635087139789596461899708508514130896302") // i = 39 - PrecomputedLines[0][39].A0 = emulated.ValueOf[emulated.BN254Fp]("2832877770969085666300187729756811975718245115828438742107798110254443365408") - PrecomputedLines[0][39].A1 = emulated.ValueOf[emulated.BN254Fp]("4015898436582302751338662177471784429329474816900569691956338217668304075143") - PrecomputedLines[1][39].A0 = emulated.ValueOf[emulated.BN254Fp]("6842872200246861427705093037496466614015446887756834045870833833876444837543") - PrecomputedLines[1][39].A1 = emulated.ValueOf[emulated.BN254Fp]("15273790836304547702356985139791848656234288403812600849950908226829046944652") + PrecomputedLines[0][39].A0 = emulated.ValueOf[BaseField]("2832877770969085666300187729756811975718245115828438742107798110254443365408") + PrecomputedLines[0][39].A1 = emulated.ValueOf[BaseField]("4015898436582302751338662177471784429329474816900569691956338217668304075143") + PrecomputedLines[1][39].A0 = emulated.ValueOf[BaseField]("6842872200246861427705093037496466614015446887756834045870833833876444837543") + PrecomputedLines[1][39].A1 = emulated.ValueOf[BaseField]("15273790836304547702356985139791848656234288403812600849950908226829046944652") // i = 38 - PrecomputedLines[0][38].A0 = emulated.ValueOf[emulated.BN254Fp]("17748964682733066496477674137304072265649362699626972384780286384184403231976") - PrecomputedLines[0][38].A1 = emulated.ValueOf[emulated.BN254Fp]("2838655568440449121815178130424124290652171075642869140451330756670997612885") - PrecomputedLines[1][38].A0 = emulated.ValueOf[emulated.BN254Fp]("1913181888602803253410490851322440164398255901127376824362120108174814218344") - PrecomputedLines[1][38].A1 = emulated.ValueOf[emulated.BN254Fp]("17740518402110173452265054327145725313649280334580334996118883085307288091170") - PrecomputedLines[2][38].A0 = emulated.ValueOf[emulated.BN254Fp]("12808369270471380551462058943009794572165562282177042824025566058227667838719") - PrecomputedLines[2][38].A1 = emulated.ValueOf[emulated.BN254Fp]("13850937935385199095549631062956009887187878536528675610032140109569037386090") - PrecomputedLines[3][38].A0 = emulated.ValueOf[emulated.BN254Fp]("9571531692086612395026521386471462664121950697416902123408435110246350832630") - PrecomputedLines[3][38].A1 = emulated.ValueOf[emulated.BN254Fp]("9262658991286591312944640932012648892614883797518222287840538936149182139125") + PrecomputedLines[0][38].A0 = emulated.ValueOf[BaseField]("17748964682733066496477674137304072265649362699626972384780286384184403231976") + PrecomputedLines[0][38].A1 = emulated.ValueOf[BaseField]("2838655568440449121815178130424124290652171075642869140451330756670997612885") + PrecomputedLines[1][38].A0 = emulated.ValueOf[BaseField]("1913181888602803253410490851322440164398255901127376824362120108174814218344") + PrecomputedLines[1][38].A1 = emulated.ValueOf[BaseField]("17740518402110173452265054327145725313649280334580334996118883085307288091170") + PrecomputedLines[2][38].A0 = emulated.ValueOf[BaseField]("12808369270471380551462058943009794572165562282177042824025566058227667838719") + PrecomputedLines[2][38].A1 = emulated.ValueOf[BaseField]("13850937935385199095549631062956009887187878536528675610032140109569037386090") + PrecomputedLines[3][38].A0 = emulated.ValueOf[BaseField]("9571531692086612395026521386471462664121950697416902123408435110246350832630") + PrecomputedLines[3][38].A1 = emulated.ValueOf[BaseField]("9262658991286591312944640932012648892614883797518222287840538936149182139125") // i = 37 - PrecomputedLines[0][37].A0 = emulated.ValueOf[emulated.BN254Fp]("12457672116858821147570417815713622479940621522732096986429050939590597339051") - PrecomputedLines[0][37].A1 = emulated.ValueOf[emulated.BN254Fp]("18398985605215365318947837405711002640755060748945931179484765291655005193783") - PrecomputedLines[1][37].A0 = emulated.ValueOf[emulated.BN254Fp]("6761100916752031499470061472959664103643695753371128647767956417871801525935") - PrecomputedLines[1][37].A1 = emulated.ValueOf[emulated.BN254Fp]("11516568990599057505448657013624491615577778080330416531299339213631684799703") + PrecomputedLines[0][37].A0 = emulated.ValueOf[BaseField]("12457672116858821147570417815713622479940621522732096986429050939590597339051") + PrecomputedLines[0][37].A1 = emulated.ValueOf[BaseField]("18398985605215365318947837405711002640755060748945931179484765291655005193783") + PrecomputedLines[1][37].A0 = emulated.ValueOf[BaseField]("6761100916752031499470061472959664103643695753371128647767956417871801525935") + PrecomputedLines[1][37].A1 = emulated.ValueOf[BaseField]("11516568990599057505448657013624491615577778080330416531299339213631684799703") // i = 36 - PrecomputedLines[0][36].A0 = emulated.ValueOf[emulated.BN254Fp]("20157739938048499791825110639183940868502246006091528387643069694176344051024") - PrecomputedLines[0][36].A1 = emulated.ValueOf[emulated.BN254Fp]("2828679024172680272609250174898575639278853817285186536953499674429263641394") - PrecomputedLines[1][36].A0 = emulated.ValueOf[emulated.BN254Fp]("5507629493376754776780948128794176380876913178566429119195698066509123857842") - PrecomputedLines[1][36].A1 = emulated.ValueOf[emulated.BN254Fp]("11989866298421717405888814591756712355645135873368124241103659461001231130026") + PrecomputedLines[0][36].A0 = emulated.ValueOf[BaseField]("20157739938048499791825110639183940868502246006091528387643069694176344051024") + PrecomputedLines[0][36].A1 = emulated.ValueOf[BaseField]("2828679024172680272609250174898575639278853817285186536953499674429263641394") + PrecomputedLines[1][36].A0 = emulated.ValueOf[BaseField]("5507629493376754776780948128794176380876913178566429119195698066509123857842") + PrecomputedLines[1][36].A1 = emulated.ValueOf[BaseField]("11989866298421717405888814591756712355645135873368124241103659461001231130026") // i = 35 - PrecomputedLines[0][35].A0 = emulated.ValueOf[emulated.BN254Fp]("18803362902571183160534990574868966535501222775740632166562002643682331204055") - PrecomputedLines[0][35].A1 = emulated.ValueOf[emulated.BN254Fp]("2233847910285387579556930418866824465027863750525494540604564132801222851847") - PrecomputedLines[1][35].A0 = emulated.ValueOf[emulated.BN254Fp]("14894594813989329665437337634052128835849772709222460160323937655662277269998") - PrecomputedLines[1][35].A1 = emulated.ValueOf[emulated.BN254Fp]("16401863794856018538890651330710306550150048203763791766885991058365625250312") - PrecomputedLines[2][35].A0 = emulated.ValueOf[emulated.BN254Fp]("13863001468971850689773930443498106621781607351046321740833110320784300885462") - PrecomputedLines[2][35].A1 = emulated.ValueOf[emulated.BN254Fp]("12531482429379825647834106004615712608548514329644694776489888393706881261235") - PrecomputedLines[3][35].A0 = emulated.ValueOf[emulated.BN254Fp]("9873979880229408105971223367529128014487901861772253050912642581888257648233") - PrecomputedLines[3][35].A1 = emulated.ValueOf[emulated.BN254Fp]("17024384825828294129839942917357501284449447510471307237753297102647863989056") + PrecomputedLines[0][35].A0 = emulated.ValueOf[BaseField]("18803362902571183160534990574868966535501222775740632166562002643682331204055") + PrecomputedLines[0][35].A1 = emulated.ValueOf[BaseField]("2233847910285387579556930418866824465027863750525494540604564132801222851847") + PrecomputedLines[1][35].A0 = emulated.ValueOf[BaseField]("14894594813989329665437337634052128835849772709222460160323937655662277269998") + PrecomputedLines[1][35].A1 = emulated.ValueOf[BaseField]("16401863794856018538890651330710306550150048203763791766885991058365625250312") + PrecomputedLines[2][35].A0 = emulated.ValueOf[BaseField]("13863001468971850689773930443498106621781607351046321740833110320784300885462") + PrecomputedLines[2][35].A1 = emulated.ValueOf[BaseField]("12531482429379825647834106004615712608548514329644694776489888393706881261235") + PrecomputedLines[3][35].A0 = emulated.ValueOf[BaseField]("9873979880229408105971223367529128014487901861772253050912642581888257648233") + PrecomputedLines[3][35].A1 = emulated.ValueOf[BaseField]("17024384825828294129839942917357501284449447510471307237753297102647863989056") // i = 34 - PrecomputedLines[0][34].A0 = emulated.ValueOf[emulated.BN254Fp]("9653366074145323295722703240755007396582576595924214989534987903378311878297") - PrecomputedLines[0][34].A1 = emulated.ValueOf[emulated.BN254Fp]("20335540665422011227662851543501012053614149159296868563872809593806311578153") - PrecomputedLines[1][34].A0 = emulated.ValueOf[emulated.BN254Fp]("3346681777791788671775024643719873028656163698396937227379634931654104469710") - PrecomputedLines[1][34].A1 = emulated.ValueOf[emulated.BN254Fp]("3307435597320603699014389476882124244457440216712858513447652502717610656034") + PrecomputedLines[0][34].A0 = emulated.ValueOf[BaseField]("9653366074145323295722703240755007396582576595924214989534987903378311878297") + PrecomputedLines[0][34].A1 = emulated.ValueOf[BaseField]("20335540665422011227662851543501012053614149159296868563872809593806311578153") + PrecomputedLines[1][34].A0 = emulated.ValueOf[BaseField]("3346681777791788671775024643719873028656163698396937227379634931654104469710") + PrecomputedLines[1][34].A1 = emulated.ValueOf[BaseField]("3307435597320603699014389476882124244457440216712858513447652502717610656034") // i = 33 - PrecomputedLines[0][33].A0 = emulated.ValueOf[emulated.BN254Fp]("18209443688907178902666130371838848829021303314723242040408374329257505874298") - PrecomputedLines[0][33].A1 = emulated.ValueOf[emulated.BN254Fp]("17012865229030954811928627442171265444826656974298650920955602237427025269570") - PrecomputedLines[1][33].A0 = emulated.ValueOf[emulated.BN254Fp]("13251168487096931816968492472936283913931508108412049848483510193471001761262") - PrecomputedLines[1][33].A1 = emulated.ValueOf[emulated.BN254Fp]("917662416056698492181621755862599484479280610762074595968390001996439032523") - PrecomputedLines[2][33].A0 = emulated.ValueOf[emulated.BN254Fp]("2780404211823942337646698841772801564153614837266356530930914670418264278722") - PrecomputedLines[2][33].A1 = emulated.ValueOf[emulated.BN254Fp]("3782019545450857785432418735694615956576199844498504213150631388689924073378") - PrecomputedLines[3][33].A0 = emulated.ValueOf[emulated.BN254Fp]("10219383385884950870363850119493120482938585228366425933545069183698860959545") - PrecomputedLines[3][33].A1 = emulated.ValueOf[emulated.BN254Fp]("4610898162835928978462538221841591782260443101663343291474718241976139555925") + PrecomputedLines[0][33].A0 = emulated.ValueOf[BaseField]("18209443688907178902666130371838848829021303314723242040408374329257505874298") + PrecomputedLines[0][33].A1 = emulated.ValueOf[BaseField]("17012865229030954811928627442171265444826656974298650920955602237427025269570") + PrecomputedLines[1][33].A0 = emulated.ValueOf[BaseField]("13251168487096931816968492472936283913931508108412049848483510193471001761262") + PrecomputedLines[1][33].A1 = emulated.ValueOf[BaseField]("917662416056698492181621755862599484479280610762074595968390001996439032523") + PrecomputedLines[2][33].A0 = emulated.ValueOf[BaseField]("2780404211823942337646698841772801564153614837266356530930914670418264278722") + PrecomputedLines[2][33].A1 = emulated.ValueOf[BaseField]("3782019545450857785432418735694615956576199844498504213150631388689924073378") + PrecomputedLines[3][33].A0 = emulated.ValueOf[BaseField]("10219383385884950870363850119493120482938585228366425933545069183698860959545") + PrecomputedLines[3][33].A1 = emulated.ValueOf[BaseField]("4610898162835928978462538221841591782260443101663343291474718241976139555925") // i = 32 - PrecomputedLines[0][32].A0 = emulated.ValueOf[emulated.BN254Fp]("20934811687581609260873070602688515368109046845218194607210991416167897816402") - PrecomputedLines[0][32].A1 = emulated.ValueOf[emulated.BN254Fp]("5862163452113823219899111570982726953048159166456119375917149119349465378872") - PrecomputedLines[1][32].A0 = emulated.ValueOf[emulated.BN254Fp]("18680771072947791515144826030430400508598943175893875281965984728348827258637") - PrecomputedLines[1][32].A1 = emulated.ValueOf[emulated.BN254Fp]("21040117418693567065352610126251750729568112020473406293397044779880248456691") + PrecomputedLines[0][32].A0 = emulated.ValueOf[BaseField]("20934811687581609260873070602688515368109046845218194607210991416167897816402") + PrecomputedLines[0][32].A1 = emulated.ValueOf[BaseField]("5862163452113823219899111570982726953048159166456119375917149119349465378872") + PrecomputedLines[1][32].A0 = emulated.ValueOf[BaseField]("18680771072947791515144826030430400508598943175893875281965984728348827258637") + PrecomputedLines[1][32].A1 = emulated.ValueOf[BaseField]("21040117418693567065352610126251750729568112020473406293397044779880248456691") // i = 31 - PrecomputedLines[0][31].A0 = emulated.ValueOf[emulated.BN254Fp]("7964439593062737400984035539878664198651178025806860534579667949165595587005") - PrecomputedLines[0][31].A1 = emulated.ValueOf[emulated.BN254Fp]("2838157160991125797583478331796928440511613965670870614157463438056333538151") - PrecomputedLines[1][31].A0 = emulated.ValueOf[emulated.BN254Fp]("15229006183665644290447325495913132772531638749927123822183273630764466089789") - PrecomputedLines[1][31].A1 = emulated.ValueOf[emulated.BN254Fp]("16074291619482614777639379462192763167638195517822265884849973509949484533348") + PrecomputedLines[0][31].A0 = emulated.ValueOf[BaseField]("7964439593062737400984035539878664198651178025806860534579667949165595587005") + PrecomputedLines[0][31].A1 = emulated.ValueOf[BaseField]("2838157160991125797583478331796928440511613965670870614157463438056333538151") + PrecomputedLines[1][31].A0 = emulated.ValueOf[BaseField]("15229006183665644290447325495913132772531638749927123822183273630764466089789") + PrecomputedLines[1][31].A1 = emulated.ValueOf[BaseField]("16074291619482614777639379462192763167638195517822265884849973509949484533348") // i = 30 - PrecomputedLines[0][30].A0 = emulated.ValueOf[emulated.BN254Fp]("17216673940334785289516808707485909812399730071261828078641261494030193339151") - PrecomputedLines[0][30].A1 = emulated.ValueOf[emulated.BN254Fp]("1558246640723974010862813923593922625293354601470135041696925666565577625238") - PrecomputedLines[1][30].A0 = emulated.ValueOf[emulated.BN254Fp]("3854786674985460796726122882377437532974958505502673869156016507727783114650") - PrecomputedLines[1][30].A1 = emulated.ValueOf[emulated.BN254Fp]("16797162886036336980590366085149259027597156341494947863166011673482030283822") - PrecomputedLines[2][30].A0 = emulated.ValueOf[emulated.BN254Fp]("18793648319122864915144966308137999498287217564919580214223847976324114889072") - PrecomputedLines[2][30].A1 = emulated.ValueOf[emulated.BN254Fp]("16864911664763277142359301452971910091257378264425969043189691884660256976414") - PrecomputedLines[3][30].A0 = emulated.ValueOf[emulated.BN254Fp]("6152358889597859795339082960365216775296352387558616966143609899597537421031") - PrecomputedLines[3][30].A1 = emulated.ValueOf[emulated.BN254Fp]("16653254093932107167798383542777416165270049087427470272658796467120270028484") + PrecomputedLines[0][30].A0 = emulated.ValueOf[BaseField]("17216673940334785289516808707485909812399730071261828078641261494030193339151") + PrecomputedLines[0][30].A1 = emulated.ValueOf[BaseField]("1558246640723974010862813923593922625293354601470135041696925666565577625238") + PrecomputedLines[1][30].A0 = emulated.ValueOf[BaseField]("3854786674985460796726122882377437532974958505502673869156016507727783114650") + PrecomputedLines[1][30].A1 = emulated.ValueOf[BaseField]("16797162886036336980590366085149259027597156341494947863166011673482030283822") + PrecomputedLines[2][30].A0 = emulated.ValueOf[BaseField]("18793648319122864915144966308137999498287217564919580214223847976324114889072") + PrecomputedLines[2][30].A1 = emulated.ValueOf[BaseField]("16864911664763277142359301452971910091257378264425969043189691884660256976414") + PrecomputedLines[3][30].A0 = emulated.ValueOf[BaseField]("6152358889597859795339082960365216775296352387558616966143609899597537421031") + PrecomputedLines[3][30].A1 = emulated.ValueOf[BaseField]("16653254093932107167798383542777416165270049087427470272658796467120270028484") // i = 29 - PrecomputedLines[0][29].A0 = emulated.ValueOf[emulated.BN254Fp]("14632407693471058889728140077691609987771263933332165632341567611801065809022") - PrecomputedLines[0][29].A1 = emulated.ValueOf[emulated.BN254Fp]("11272021435858583497469551493401241107077029606274078664163635970617420849248") - PrecomputedLines[1][29].A0 = emulated.ValueOf[emulated.BN254Fp]("4770200410992146769475852516775361139844234572488330099462736062550552604829") - PrecomputedLines[1][29].A1 = emulated.ValueOf[emulated.BN254Fp]("7530403448372346045695321765829491479483699869272077605645557759889158081085") + PrecomputedLines[0][29].A0 = emulated.ValueOf[BaseField]("14632407693471058889728140077691609987771263933332165632341567611801065809022") + PrecomputedLines[0][29].A1 = emulated.ValueOf[BaseField]("11272021435858583497469551493401241107077029606274078664163635970617420849248") + PrecomputedLines[1][29].A0 = emulated.ValueOf[BaseField]("4770200410992146769475852516775361139844234572488330099462736062550552604829") + PrecomputedLines[1][29].A1 = emulated.ValueOf[BaseField]("7530403448372346045695321765829491479483699869272077605645557759889158081085") // i = 28 - PrecomputedLines[0][28].A0 = emulated.ValueOf[emulated.BN254Fp]("11519923879341878511380494246354517413557387093469380775615805559630889395544") - PrecomputedLines[0][28].A1 = emulated.ValueOf[emulated.BN254Fp]("1407583269883799199470286256592915474697530621627456286943142767826758460634") - PrecomputedLines[1][28].A0 = emulated.ValueOf[emulated.BN254Fp]("11904307076773678983926013243694306017809942930429096021607731892636261237434") - PrecomputedLines[1][28].A1 = emulated.ValueOf[emulated.BN254Fp]("5418228693521695819333327920054742553191693728075186406978931357199320286728") + PrecomputedLines[0][28].A0 = emulated.ValueOf[BaseField]("11519923879341878511380494246354517413557387093469380775615805559630889395544") + PrecomputedLines[0][28].A1 = emulated.ValueOf[BaseField]("1407583269883799199470286256592915474697530621627456286943142767826758460634") + PrecomputedLines[1][28].A0 = emulated.ValueOf[BaseField]("11904307076773678983926013243694306017809942930429096021607731892636261237434") + PrecomputedLines[1][28].A1 = emulated.ValueOf[BaseField]("5418228693521695819333327920054742553191693728075186406978931357199320286728") // i = 27 - PrecomputedLines[0][27].A0 = emulated.ValueOf[emulated.BN254Fp]("13583649344163235628273822059455216086651158972357128597527291053634930639606") - PrecomputedLines[0][27].A1 = emulated.ValueOf[emulated.BN254Fp]("1580303658246025496517878831829049949728218261141271124320904477564504770538") - PrecomputedLines[1][27].A0 = emulated.ValueOf[emulated.BN254Fp]("21116413106194933456702972814632992147195390921459561292248712868055344887668") - PrecomputedLines[1][27].A1 = emulated.ValueOf[emulated.BN254Fp]("2722273224111047596007628929518646734380443821631939025258952090508660165266") + PrecomputedLines[0][27].A0 = emulated.ValueOf[BaseField]("13583649344163235628273822059455216086651158972357128597527291053634930639606") + PrecomputedLines[0][27].A1 = emulated.ValueOf[BaseField]("1580303658246025496517878831829049949728218261141271124320904477564504770538") + PrecomputedLines[1][27].A0 = emulated.ValueOf[BaseField]("21116413106194933456702972814632992147195390921459561292248712868055344887668") + PrecomputedLines[1][27].A1 = emulated.ValueOf[BaseField]("2722273224111047596007628929518646734380443821631939025258952090508660165266") // i = 26 - PrecomputedLines[0][26].A0 = emulated.ValueOf[emulated.BN254Fp]("18471407238975412722919516576273263250888565110885782624375161300902906625257") - PrecomputedLines[0][26].A1 = emulated.ValueOf[emulated.BN254Fp]("1703792855453408300033031347710143415065900804014322538641022938745091381930") - PrecomputedLines[1][26].A0 = emulated.ValueOf[emulated.BN254Fp]("10863470541316497325728428920551887981270488659171371431262418928646119718147") - PrecomputedLines[1][26].A1 = emulated.ValueOf[emulated.BN254Fp]("17241260064348476546268798180555052578472388987371855915353518730015387072298") + PrecomputedLines[0][26].A0 = emulated.ValueOf[BaseField]("18471407238975412722919516576273263250888565110885782624375161300902906625257") + PrecomputedLines[0][26].A1 = emulated.ValueOf[BaseField]("1703792855453408300033031347710143415065900804014322538641022938745091381930") + PrecomputedLines[1][26].A0 = emulated.ValueOf[BaseField]("10863470541316497325728428920551887981270488659171371431262418928646119718147") + PrecomputedLines[1][26].A1 = emulated.ValueOf[BaseField]("17241260064348476546268798180555052578472388987371855915353518730015387072298") // i = 25 - PrecomputedLines[0][25].A0 = emulated.ValueOf[emulated.BN254Fp]("8932519706584413797822306415256639256040689258169061374436911262999997993142") - PrecomputedLines[0][25].A1 = emulated.ValueOf[emulated.BN254Fp]("393522374513586188088711426908867437661499514838744902729423194492781594674") - PrecomputedLines[1][25].A0 = emulated.ValueOf[emulated.BN254Fp]("16189841300225557029339625228091337040532368631861952893841567332696428948407") - PrecomputedLines[1][25].A1 = emulated.ValueOf[emulated.BN254Fp]("1478939903044857860077184972935680812866817631078410725667566430070755143644") - PrecomputedLines[2][25].A0 = emulated.ValueOf[emulated.BN254Fp]("11577786770240021634241162518303444432845727667924972478311944308780176883448") - PrecomputedLines[2][25].A1 = emulated.ValueOf[emulated.BN254Fp]("12996576065238071442557753878581565019438532181136511892084803477505718680757") - PrecomputedLines[3][25].A0 = emulated.ValueOf[emulated.BN254Fp]("10044194885594442142147609155416421922257472356796305453772928783393388899067") - PrecomputedLines[3][25].A1 = emulated.ValueOf[emulated.BN254Fp]("18263760812393990074188911070757643007564984011360754662297829292657271464150") + PrecomputedLines[0][25].A0 = emulated.ValueOf[BaseField]("8932519706584413797822306415256639256040689258169061374436911262999997993142") + PrecomputedLines[0][25].A1 = emulated.ValueOf[BaseField]("393522374513586188088711426908867437661499514838744902729423194492781594674") + PrecomputedLines[1][25].A0 = emulated.ValueOf[BaseField]("16189841300225557029339625228091337040532368631861952893841567332696428948407") + PrecomputedLines[1][25].A1 = emulated.ValueOf[BaseField]("1478939903044857860077184972935680812866817631078410725667566430070755143644") + PrecomputedLines[2][25].A0 = emulated.ValueOf[BaseField]("11577786770240021634241162518303444432845727667924972478311944308780176883448") + PrecomputedLines[2][25].A1 = emulated.ValueOf[BaseField]("12996576065238071442557753878581565019438532181136511892084803477505718680757") + PrecomputedLines[3][25].A0 = emulated.ValueOf[BaseField]("10044194885594442142147609155416421922257472356796305453772928783393388899067") + PrecomputedLines[3][25].A1 = emulated.ValueOf[BaseField]("18263760812393990074188911070757643007564984011360754662297829292657271464150") // i = 24 - PrecomputedLines[0][24].A0 = emulated.ValueOf[emulated.BN254Fp]("3061883141739315602214563556302122268976467112226903626183003265864700797561") - PrecomputedLines[0][24].A1 = emulated.ValueOf[emulated.BN254Fp]("18877577761913543892554361883552980798297636968407602018463962047995764813219") - PrecomputedLines[1][24].A0 = emulated.ValueOf[emulated.BN254Fp]("3126746139599510717075143025311775654763541372790089146406042067854741163507") - PrecomputedLines[1][24].A1 = emulated.ValueOf[emulated.BN254Fp]("17167127260886017815263816291999617868265214449605859656444200044917253310911") + PrecomputedLines[0][24].A0 = emulated.ValueOf[BaseField]("3061883141739315602214563556302122268976467112226903626183003265864700797561") + PrecomputedLines[0][24].A1 = emulated.ValueOf[BaseField]("18877577761913543892554361883552980798297636968407602018463962047995764813219") + PrecomputedLines[1][24].A0 = emulated.ValueOf[BaseField]("3126746139599510717075143025311775654763541372790089146406042067854741163507") + PrecomputedLines[1][24].A1 = emulated.ValueOf[BaseField]("17167127260886017815263816291999617868265214449605859656444200044917253310911") // i = 23 - PrecomputedLines[0][23].A0 = emulated.ValueOf[emulated.BN254Fp]("16870441941931526976119500440658808713972889735578011962941661985358104161131") - PrecomputedLines[0][23].A1 = emulated.ValueOf[emulated.BN254Fp]("6001109932250934659271452903112877161042944352421424685637313477276198572097") - PrecomputedLines[1][23].A0 = emulated.ValueOf[emulated.BN254Fp]("16637142689871529585590417483409806422524779986734732708338690138313396058389") - PrecomputedLines[1][23].A1 = emulated.ValueOf[emulated.BN254Fp]("1309909770792043822424896387657498550838255076099809006357764402595094108197") - PrecomputedLines[2][23].A0 = emulated.ValueOf[emulated.BN254Fp]("18549939322311775505081964944043714528572927965273709888232607395084548206000") - PrecomputedLines[2][23].A1 = emulated.ValueOf[emulated.BN254Fp]("20399818991869794833324015990855132322105497628093638572012296248349524670190") - PrecomputedLines[3][23].A0 = emulated.ValueOf[emulated.BN254Fp]("7342977470454632355392560878259850035965508595638789766324590700762099135681") - PrecomputedLines[3][23].A1 = emulated.ValueOf[emulated.BN254Fp]("13133475924936788812547393936820540309170125548865828094250523111922518822075") + PrecomputedLines[0][23].A0 = emulated.ValueOf[BaseField]("16870441941931526976119500440658808713972889735578011962941661985358104161131") + PrecomputedLines[0][23].A1 = emulated.ValueOf[BaseField]("6001109932250934659271452903112877161042944352421424685637313477276198572097") + PrecomputedLines[1][23].A0 = emulated.ValueOf[BaseField]("16637142689871529585590417483409806422524779986734732708338690138313396058389") + PrecomputedLines[1][23].A1 = emulated.ValueOf[BaseField]("1309909770792043822424896387657498550838255076099809006357764402595094108197") + PrecomputedLines[2][23].A0 = emulated.ValueOf[BaseField]("18549939322311775505081964944043714528572927965273709888232607395084548206000") + PrecomputedLines[2][23].A1 = emulated.ValueOf[BaseField]("20399818991869794833324015990855132322105497628093638572012296248349524670190") + PrecomputedLines[3][23].A0 = emulated.ValueOf[BaseField]("7342977470454632355392560878259850035965508595638789766324590700762099135681") + PrecomputedLines[3][23].A1 = emulated.ValueOf[BaseField]("13133475924936788812547393936820540309170125548865828094250523111922518822075") // i = 22 - PrecomputedLines[0][22].A0 = emulated.ValueOf[emulated.BN254Fp]("4748990156186402568189268203915060520971178335693786330788682736855281763837") - PrecomputedLines[0][22].A1 = emulated.ValueOf[emulated.BN254Fp]("1309123459585246519346967984684303594496756037532773816040933448912027627499") - PrecomputedLines[1][22].A0 = emulated.ValueOf[emulated.BN254Fp]("14774495602218432844736442669860287970046937120486943306048410603925270631316") - PrecomputedLines[1][22].A1 = emulated.ValueOf[emulated.BN254Fp]("7758103039306620389373197481991170462191047006336390431484191868400773850577") + PrecomputedLines[0][22].A0 = emulated.ValueOf[BaseField]("4748990156186402568189268203915060520971178335693786330788682736855281763837") + PrecomputedLines[0][22].A1 = emulated.ValueOf[BaseField]("1309123459585246519346967984684303594496756037532773816040933448912027627499") + PrecomputedLines[1][22].A0 = emulated.ValueOf[BaseField]("14774495602218432844736442669860287970046937120486943306048410603925270631316") + PrecomputedLines[1][22].A1 = emulated.ValueOf[BaseField]("7758103039306620389373197481991170462191047006336390431484191868400773850577") // i = 21 - PrecomputedLines[0][21].A0 = emulated.ValueOf[emulated.BN254Fp]("20467216100325522645996376085496391619753268832330437756343044572011862940545") - PrecomputedLines[0][21].A1 = emulated.ValueOf[emulated.BN254Fp]("14887102390814534704591565166101282155253192464472393232200334099849552058977") - PrecomputedLines[1][21].A0 = emulated.ValueOf[emulated.BN254Fp]("21078606515401393469046677323685463512748861024754049000789577483054033214476") - PrecomputedLines[1][21].A1 = emulated.ValueOf[emulated.BN254Fp]("4564303136472462460176799031863979133770926707479849529175620334944346563602") + PrecomputedLines[0][21].A0 = emulated.ValueOf[BaseField]("20467216100325522645996376085496391619753268832330437756343044572011862940545") + PrecomputedLines[0][21].A1 = emulated.ValueOf[BaseField]("14887102390814534704591565166101282155253192464472393232200334099849552058977") + PrecomputedLines[1][21].A0 = emulated.ValueOf[BaseField]("21078606515401393469046677323685463512748861024754049000789577483054033214476") + PrecomputedLines[1][21].A1 = emulated.ValueOf[BaseField]("4564303136472462460176799031863979133770926707479849529175620334944346563602") // i = 20 - PrecomputedLines[0][20].A0 = emulated.ValueOf[emulated.BN254Fp]("2934547587293842961452405179156964753642527525482090204385414595783458332955") - PrecomputedLines[0][20].A1 = emulated.ValueOf[emulated.BN254Fp]("13388881467399048052694263240074072556503679672952359032570384893452576065521") - PrecomputedLines[1][20].A0 = emulated.ValueOf[emulated.BN254Fp]("20835022106176713220060462057962830658550225802689628738113269878374295200567") - PrecomputedLines[1][20].A1 = emulated.ValueOf[emulated.BN254Fp]("16905312434058784658661572959194517726558593812351378232506422776680415520438") + PrecomputedLines[0][20].A0 = emulated.ValueOf[BaseField]("2934547587293842961452405179156964753642527525482090204385414595783458332955") + PrecomputedLines[0][20].A1 = emulated.ValueOf[BaseField]("13388881467399048052694263240074072556503679672952359032570384893452576065521") + PrecomputedLines[1][20].A0 = emulated.ValueOf[BaseField]("20835022106176713220060462057962830658550225802689628738113269878374295200567") + PrecomputedLines[1][20].A1 = emulated.ValueOf[BaseField]("16905312434058784658661572959194517726558593812351378232506422776680415520438") // i = 19 - PrecomputedLines[0][19].A0 = emulated.ValueOf[emulated.BN254Fp]("9379108182894698430849303731451612013091506165395461542418088794313609818924") - PrecomputedLines[0][19].A1 = emulated.ValueOf[emulated.BN254Fp]("2907967239075992964474535088161648903162956259142634038906064837044072456436") - PrecomputedLines[1][19].A0 = emulated.ValueOf[emulated.BN254Fp]("20782609764653852909287250407883639725034699195478521117170508454748489944739") - PrecomputedLines[1][19].A1 = emulated.ValueOf[emulated.BN254Fp]("6619607978961240534355495781535994024557310385388068869619586172109347559558") - PrecomputedLines[2][19].A0 = emulated.ValueOf[emulated.BN254Fp]("19532033666164956798033098163550806595466824118787667796975924917702885634055") - PrecomputedLines[2][19].A1 = emulated.ValueOf[emulated.BN254Fp]("21262034978109692747726845264241152568669959314932048093743486024410820587806") - PrecomputedLines[3][19].A0 = emulated.ValueOf[emulated.BN254Fp]("4130709627975833054760191215714688654831243211864203332343057006624671877225") - PrecomputedLines[3][19].A1 = emulated.ValueOf[emulated.BN254Fp]("13472955160176293525849695637350417649009388964115438600570520044550603528353") + PrecomputedLines[0][19].A0 = emulated.ValueOf[BaseField]("9379108182894698430849303731451612013091506165395461542418088794313609818924") + PrecomputedLines[0][19].A1 = emulated.ValueOf[BaseField]("2907967239075992964474535088161648903162956259142634038906064837044072456436") + PrecomputedLines[1][19].A0 = emulated.ValueOf[BaseField]("20782609764653852909287250407883639725034699195478521117170508454748489944739") + PrecomputedLines[1][19].A1 = emulated.ValueOf[BaseField]("6619607978961240534355495781535994024557310385388068869619586172109347559558") + PrecomputedLines[2][19].A0 = emulated.ValueOf[BaseField]("19532033666164956798033098163550806595466824118787667796975924917702885634055") + PrecomputedLines[2][19].A1 = emulated.ValueOf[BaseField]("21262034978109692747726845264241152568669959314932048093743486024410820587806") + PrecomputedLines[3][19].A0 = emulated.ValueOf[BaseField]("4130709627975833054760191215714688654831243211864203332343057006624671877225") + PrecomputedLines[3][19].A1 = emulated.ValueOf[BaseField]("13472955160176293525849695637350417649009388964115438600570520044550603528353") // i = 18 - PrecomputedLines[0][18].A0 = emulated.ValueOf[emulated.BN254Fp]("16217086076844556529363966917086131649757503473381572790624279844617553496364") - PrecomputedLines[0][18].A1 = emulated.ValueOf[emulated.BN254Fp]("10713288731971058998221606378429065825113414556825913172815543429990736818376") - PrecomputedLines[1][18].A0 = emulated.ValueOf[emulated.BN254Fp]("12552050545636774575337026751447963392888877749601484102741403327500446156874") - PrecomputedLines[1][18].A1 = emulated.ValueOf[emulated.BN254Fp]("1889715733419853004961620455197495456081564113924277969675613143136837135513") + PrecomputedLines[0][18].A0 = emulated.ValueOf[BaseField]("16217086076844556529363966917086131649757503473381572790624279844617553496364") + PrecomputedLines[0][18].A1 = emulated.ValueOf[BaseField]("10713288731971058998221606378429065825113414556825913172815543429990736818376") + PrecomputedLines[1][18].A0 = emulated.ValueOf[BaseField]("12552050545636774575337026751447963392888877749601484102741403327500446156874") + PrecomputedLines[1][18].A1 = emulated.ValueOf[BaseField]("1889715733419853004961620455197495456081564113924277969675613143136837135513") // i = 17 - PrecomputedLines[0][17].A0 = emulated.ValueOf[emulated.BN254Fp]("281209871248542006516712473420034295321120298208074788459534204367198535142") - PrecomputedLines[0][17].A1 = emulated.ValueOf[emulated.BN254Fp]("11427002786003194988328672063057116278011347987499596141846392618935095919375") - PrecomputedLines[1][17].A0 = emulated.ValueOf[emulated.BN254Fp]("8249292749133127482785740847289832702955066233577280917498121478679299264218") - PrecomputedLines[1][17].A1 = emulated.ValueOf[emulated.BN254Fp]("8641484141124226670682171491065546757600227936199444728945999484137993005385") - PrecomputedLines[2][17].A0 = emulated.ValueOf[emulated.BN254Fp]("16599812170685991386506806371665534372750857143857635056957476184228979064472") - PrecomputedLines[2][17].A1 = emulated.ValueOf[emulated.BN254Fp]("10626908974014138715216269718238311856490393026039163714213665951817067052590") - PrecomputedLines[3][17].A0 = emulated.ValueOf[emulated.BN254Fp]("6357700871494731822410049284748295785098346320944639515384097511493616712415") - PrecomputedLines[3][17].A1 = emulated.ValueOf[emulated.BN254Fp]("18094386343075402462056828857430458085585468610519347879110366976800945012238") + PrecomputedLines[0][17].A0 = emulated.ValueOf[BaseField]("281209871248542006516712473420034295321120298208074788459534204367198535142") + PrecomputedLines[0][17].A1 = emulated.ValueOf[BaseField]("11427002786003194988328672063057116278011347987499596141846392618935095919375") + PrecomputedLines[1][17].A0 = emulated.ValueOf[BaseField]("8249292749133127482785740847289832702955066233577280917498121478679299264218") + PrecomputedLines[1][17].A1 = emulated.ValueOf[BaseField]("8641484141124226670682171491065546757600227936199444728945999484137993005385") + PrecomputedLines[2][17].A0 = emulated.ValueOf[BaseField]("16599812170685991386506806371665534372750857143857635056957476184228979064472") + PrecomputedLines[2][17].A1 = emulated.ValueOf[BaseField]("10626908974014138715216269718238311856490393026039163714213665951817067052590") + PrecomputedLines[3][17].A0 = emulated.ValueOf[BaseField]("6357700871494731822410049284748295785098346320944639515384097511493616712415") + PrecomputedLines[3][17].A1 = emulated.ValueOf[BaseField]("18094386343075402462056828857430458085585468610519347879110366976800945012238") // i = 16 - PrecomputedLines[0][16].A0 = emulated.ValueOf[emulated.BN254Fp]("14531595037104551623335765422361255737783733804534887309336561182386022894609") - PrecomputedLines[0][16].A1 = emulated.ValueOf[emulated.BN254Fp]("13693292038242340138317667055996944950242100560633566577428335327100558601931") - PrecomputedLines[1][16].A0 = emulated.ValueOf[emulated.BN254Fp]("19882300238879412083813185345065778671818694192928769536446198022672502614800") - PrecomputedLines[1][16].A1 = emulated.ValueOf[emulated.BN254Fp]("19023802829192861606681770049155217498069279515832660659542794970260956599076") + PrecomputedLines[0][16].A0 = emulated.ValueOf[BaseField]("14531595037104551623335765422361255737783733804534887309336561182386022894609") + PrecomputedLines[0][16].A1 = emulated.ValueOf[BaseField]("13693292038242340138317667055996944950242100560633566577428335327100558601931") + PrecomputedLines[1][16].A0 = emulated.ValueOf[BaseField]("19882300238879412083813185345065778671818694192928769536446198022672502614800") + PrecomputedLines[1][16].A1 = emulated.ValueOf[BaseField]("19023802829192861606681770049155217498069279515832660659542794970260956599076") // i = 15 - PrecomputedLines[0][15].A0 = emulated.ValueOf[emulated.BN254Fp]("214428669950930239037502001140346676398224589363492833374258252706619225095") - PrecomputedLines[0][15].A1 = emulated.ValueOf[emulated.BN254Fp]("9700482781441182965875593020977851473671521652260949157117738997229458832612") - PrecomputedLines[1][15].A0 = emulated.ValueOf[emulated.BN254Fp]("5707939202694442208311052687419434583655218004451905019053384532157090849511") - PrecomputedLines[1][15].A1 = emulated.ValueOf[emulated.BN254Fp]("9249003779150082855802401674917195099999438620295626021241732108833595933661") + PrecomputedLines[0][15].A0 = emulated.ValueOf[BaseField]("214428669950930239037502001140346676398224589363492833374258252706619225095") + PrecomputedLines[0][15].A1 = emulated.ValueOf[BaseField]("9700482781441182965875593020977851473671521652260949157117738997229458832612") + PrecomputedLines[1][15].A0 = emulated.ValueOf[BaseField]("5707939202694442208311052687419434583655218004451905019053384532157090849511") + PrecomputedLines[1][15].A1 = emulated.ValueOf[BaseField]("9249003779150082855802401674917195099999438620295626021241732108833595933661") // i = 14 - PrecomputedLines[0][14].A0 = emulated.ValueOf[emulated.BN254Fp]("7805886586080369896587926569311726027953215021897217781996744411655756551999") - PrecomputedLines[0][14].A1 = emulated.ValueOf[emulated.BN254Fp]("4475945661578122172966964851067681040356518221787176436864599099315745378607") - PrecomputedLines[1][14].A0 = emulated.ValueOf[emulated.BN254Fp]("1436676498637654967294854037272027428354069617227014207131783637892060911873") - PrecomputedLines[1][14].A1 = emulated.ValueOf[emulated.BN254Fp]("2305366134511694415797376996283850181652766442173047187160012616555129059726") - PrecomputedLines[2][14].A0 = emulated.ValueOf[emulated.BN254Fp]("3948625959186731630883431212774050798377359369729173092466505343872731816213") - PrecomputedLines[2][14].A1 = emulated.ValueOf[emulated.BN254Fp]("2358246181418771103293301333572732567327456223492056127888059507221213191432") - PrecomputedLines[3][14].A0 = emulated.ValueOf[emulated.BN254Fp]("3214429786637011410044793447049402874657838824607091686668942744472659699178") - PrecomputedLines[3][14].A1 = emulated.ValueOf[emulated.BN254Fp]("3311041522569135867590138245723395084506957431406246791002073444583824677944") + PrecomputedLines[0][14].A0 = emulated.ValueOf[BaseField]("7805886586080369896587926569311726027953215021897217781996744411655756551999") + PrecomputedLines[0][14].A1 = emulated.ValueOf[BaseField]("4475945661578122172966964851067681040356518221787176436864599099315745378607") + PrecomputedLines[1][14].A0 = emulated.ValueOf[BaseField]("1436676498637654967294854037272027428354069617227014207131783637892060911873") + PrecomputedLines[1][14].A1 = emulated.ValueOf[BaseField]("2305366134511694415797376996283850181652766442173047187160012616555129059726") + PrecomputedLines[2][14].A0 = emulated.ValueOf[BaseField]("3948625959186731630883431212774050798377359369729173092466505343872731816213") + PrecomputedLines[2][14].A1 = emulated.ValueOf[BaseField]("2358246181418771103293301333572732567327456223492056127888059507221213191432") + PrecomputedLines[3][14].A0 = emulated.ValueOf[BaseField]("3214429786637011410044793447049402874657838824607091686668942744472659699178") + PrecomputedLines[3][14].A1 = emulated.ValueOf[BaseField]("3311041522569135867590138245723395084506957431406246791002073444583824677944") // i = 13 - PrecomputedLines[0][13].A0 = emulated.ValueOf[emulated.BN254Fp]("7940653081686121254560574898875834993172673192201552554589347797020017756575") - PrecomputedLines[0][13].A1 = emulated.ValueOf[emulated.BN254Fp]("15974145135205498451459757927505164636050928369369965530985889343297252806673") - PrecomputedLines[1][13].A0 = emulated.ValueOf[emulated.BN254Fp]("7686257707869567857469834549336963702481639214633150259937731475944847915123") - PrecomputedLines[1][13].A1 = emulated.ValueOf[emulated.BN254Fp]("8581852611449322691153270314388156853032486316219977253503422966968101541654") + PrecomputedLines[0][13].A0 = emulated.ValueOf[BaseField]("7940653081686121254560574898875834993172673192201552554589347797020017756575") + PrecomputedLines[0][13].A1 = emulated.ValueOf[BaseField]("15974145135205498451459757927505164636050928369369965530985889343297252806673") + PrecomputedLines[1][13].A0 = emulated.ValueOf[BaseField]("7686257707869567857469834549336963702481639214633150259937731475944847915123") + PrecomputedLines[1][13].A1 = emulated.ValueOf[BaseField]("8581852611449322691153270314388156853032486316219977253503422966968101541654") // i = 12 - PrecomputedLines[0][12].A0 = emulated.ValueOf[emulated.BN254Fp]("7606607159448995415026938236473845673703071556204161879755865676515825543592") - PrecomputedLines[0][12].A1 = emulated.ValueOf[emulated.BN254Fp]("8956068938006055699967046837110471704135545397148189742180442797078694877053") - PrecomputedLines[1][12].A0 = emulated.ValueOf[emulated.BN254Fp]("11022564885667925490414698424833447218714993895366895350576595161435910155603") - PrecomputedLines[1][12].A1 = emulated.ValueOf[emulated.BN254Fp]("2937380761826300692577553924917170147052369549814500103731019151442626339958") + PrecomputedLines[0][12].A0 = emulated.ValueOf[BaseField]("7606607159448995415026938236473845673703071556204161879755865676515825543592") + PrecomputedLines[0][12].A1 = emulated.ValueOf[BaseField]("8956068938006055699967046837110471704135545397148189742180442797078694877053") + PrecomputedLines[1][12].A0 = emulated.ValueOf[BaseField]("11022564885667925490414698424833447218714993895366895350576595161435910155603") + PrecomputedLines[1][12].A1 = emulated.ValueOf[BaseField]("2937380761826300692577553924917170147052369549814500103731019151442626339958") // i = 11 - PrecomputedLines[0][11].A0 = emulated.ValueOf[emulated.BN254Fp]("12051248266980606591117486251497672077260922365434536343080997678580860092839") - PrecomputedLines[0][11].A1 = emulated.ValueOf[emulated.BN254Fp]("1101948046901408684769644765236167201751826825758237448303491655657473871883") - PrecomputedLines[1][11].A0 = emulated.ValueOf[emulated.BN254Fp]("19040361699025595665325643767494987684082158366896439415230194791631253146950") - PrecomputedLines[1][11].A1 = emulated.ValueOf[emulated.BN254Fp]("19593948793881594577280833499171904486133659865964978128524672716381353415110") + PrecomputedLines[0][11].A0 = emulated.ValueOf[BaseField]("12051248266980606591117486251497672077260922365434536343080997678580860092839") + PrecomputedLines[0][11].A1 = emulated.ValueOf[BaseField]("1101948046901408684769644765236167201751826825758237448303491655657473871883") + PrecomputedLines[1][11].A0 = emulated.ValueOf[BaseField]("19040361699025595665325643767494987684082158366896439415230194791631253146950") + PrecomputedLines[1][11].A1 = emulated.ValueOf[BaseField]("19593948793881594577280833499171904486133659865964978128524672716381353415110") // i = 10 - PrecomputedLines[0][10].A0 = emulated.ValueOf[emulated.BN254Fp]("2695861635377070245469834129082472669158214946653615403814586888514439809659") - PrecomputedLines[0][10].A1 = emulated.ValueOf[emulated.BN254Fp]("3517424455933415445379245336041862787934743784030363349436486456627711568935") - PrecomputedLines[1][10].A0 = emulated.ValueOf[emulated.BN254Fp]("1297121294706129311008967261335655974545941670322230404082189407981090136606") - PrecomputedLines[1][10].A1 = emulated.ValueOf[emulated.BN254Fp]("7269007213738731831376716995811160240537269554959925765999109257469235068970") - PrecomputedLines[2][10].A0 = emulated.ValueOf[emulated.BN254Fp]("11136530791838387464153280137325004767292250958794387187550512501095403277023") - PrecomputedLines[2][10].A1 = emulated.ValueOf[emulated.BN254Fp]("106502518068427873618571970037977909894299363465928161471159218521528331255") - PrecomputedLines[3][10].A0 = emulated.ValueOf[emulated.BN254Fp]("9621932176503134785751044845073759336043415956999820764897251636989455619322") - PrecomputedLines[3][10].A1 = emulated.ValueOf[emulated.BN254Fp]("11988385993623676567525757027648256037399190847305440889617409768798277399896") + PrecomputedLines[0][10].A0 = emulated.ValueOf[BaseField]("2695861635377070245469834129082472669158214946653615403814586888514439809659") + PrecomputedLines[0][10].A1 = emulated.ValueOf[BaseField]("3517424455933415445379245336041862787934743784030363349436486456627711568935") + PrecomputedLines[1][10].A0 = emulated.ValueOf[BaseField]("1297121294706129311008967261335655974545941670322230404082189407981090136606") + PrecomputedLines[1][10].A1 = emulated.ValueOf[BaseField]("7269007213738731831376716995811160240537269554959925765999109257469235068970") + PrecomputedLines[2][10].A0 = emulated.ValueOf[BaseField]("11136530791838387464153280137325004767292250958794387187550512501095403277023") + PrecomputedLines[2][10].A1 = emulated.ValueOf[BaseField]("106502518068427873618571970037977909894299363465928161471159218521528331255") + PrecomputedLines[3][10].A0 = emulated.ValueOf[BaseField]("9621932176503134785751044845073759336043415956999820764897251636989455619322") + PrecomputedLines[3][10].A1 = emulated.ValueOf[BaseField]("11988385993623676567525757027648256037399190847305440889617409768798277399896") // i = 9 - PrecomputedLines[0][9].A0 = emulated.ValueOf[emulated.BN254Fp]("19372185202903332212213460689668073391237276001679830995407820540229540001238") - PrecomputedLines[0][9].A1 = emulated.ValueOf[emulated.BN254Fp]("5616465305834971731681446522628928621391712075162309643124420681983851054131") - PrecomputedLines[1][9].A0 = emulated.ValueOf[emulated.BN254Fp]("15130750112907645494599377984115117159035751050040977084315605482681536587330") - PrecomputedLines[1][9].A1 = emulated.ValueOf[emulated.BN254Fp]("4112821409985026926465852755077338777425800159968275868518690696940060997519") + PrecomputedLines[0][9].A0 = emulated.ValueOf[BaseField]("19372185202903332212213460689668073391237276001679830995407820540229540001238") + PrecomputedLines[0][9].A1 = emulated.ValueOf[BaseField]("5616465305834971731681446522628928621391712075162309643124420681983851054131") + PrecomputedLines[1][9].A0 = emulated.ValueOf[BaseField]("15130750112907645494599377984115117159035751050040977084315605482681536587330") + PrecomputedLines[1][9].A1 = emulated.ValueOf[BaseField]("4112821409985026926465852755077338777425800159968275868518690696940060997519") // i = 8 - PrecomputedLines[0][8].A0 = emulated.ValueOf[emulated.BN254Fp]("1177350099731769374927755229371912682105254009198092299667981153894962892911") - PrecomputedLines[0][8].A1 = emulated.ValueOf[emulated.BN254Fp]("12783556398948310494078028567080245047035120485548200979455238088948172228620") - PrecomputedLines[1][8].A0 = emulated.ValueOf[emulated.BN254Fp]("12038222281185955050483388631945863715711114498195498301547718431783742484642") - PrecomputedLines[1][8].A1 = emulated.ValueOf[emulated.BN254Fp]("9264166105136475526327132322149055656031511662283307277292723856236620490189") + PrecomputedLines[0][8].A0 = emulated.ValueOf[BaseField]("1177350099731769374927755229371912682105254009198092299667981153894962892911") + PrecomputedLines[0][8].A1 = emulated.ValueOf[BaseField]("12783556398948310494078028567080245047035120485548200979455238088948172228620") + PrecomputedLines[1][8].A0 = emulated.ValueOf[BaseField]("12038222281185955050483388631945863715711114498195498301547718431783742484642") + PrecomputedLines[1][8].A1 = emulated.ValueOf[BaseField]("9264166105136475526327132322149055656031511662283307277292723856236620490189") // i = 7 - PrecomputedLines[0][7].A0 = emulated.ValueOf[emulated.BN254Fp]("21486077995282264447124488458477451264448290571356619721096235651158475590070") - PrecomputedLines[0][7].A1 = emulated.ValueOf[emulated.BN254Fp]("14259294332493846514184808308757331443862876275854439881679087349107324605887") - PrecomputedLines[1][7].A0 = emulated.ValueOf[emulated.BN254Fp]("21310181591085388723115701669056667379511330213691931034851726064119888872673") - PrecomputedLines[1][7].A1 = emulated.ValueOf[emulated.BN254Fp]("5075823038830179820764812274438824585993277163376381791462971634098010103671") - PrecomputedLines[2][7].A0 = emulated.ValueOf[emulated.BN254Fp]("13112636618783066585137462084175830499516645653422124722623967609618373134219") - PrecomputedLines[2][7].A1 = emulated.ValueOf[emulated.BN254Fp]("6606562192543571614836403257264220466480425913053458051187575436069152776683") - PrecomputedLines[3][7].A0 = emulated.ValueOf[emulated.BN254Fp]("10163523267982706542267128230964678625528511744949894317202814240082601743946") - PrecomputedLines[3][7].A1 = emulated.ValueOf[emulated.BN254Fp]("6356510014456263346824710768921779981830557122736686713952594920913429569627") + PrecomputedLines[0][7].A0 = emulated.ValueOf[BaseField]("21486077995282264447124488458477451264448290571356619721096235651158475590070") + PrecomputedLines[0][7].A1 = emulated.ValueOf[BaseField]("14259294332493846514184808308757331443862876275854439881679087349107324605887") + PrecomputedLines[1][7].A0 = emulated.ValueOf[BaseField]("21310181591085388723115701669056667379511330213691931034851726064119888872673") + PrecomputedLines[1][7].A1 = emulated.ValueOf[BaseField]("5075823038830179820764812274438824585993277163376381791462971634098010103671") + PrecomputedLines[2][7].A0 = emulated.ValueOf[BaseField]("13112636618783066585137462084175830499516645653422124722623967609618373134219") + PrecomputedLines[2][7].A1 = emulated.ValueOf[BaseField]("6606562192543571614836403257264220466480425913053458051187575436069152776683") + PrecomputedLines[3][7].A0 = emulated.ValueOf[BaseField]("10163523267982706542267128230964678625528511744949894317202814240082601743946") + PrecomputedLines[3][7].A1 = emulated.ValueOf[BaseField]("6356510014456263346824710768921779981830557122736686713952594920913429569627") // i = 6 - PrecomputedLines[0][6].A0 = emulated.ValueOf[emulated.BN254Fp]("6993754568930208115692311734335110502575073944799196719243980186522826192500") - PrecomputedLines[0][6].A1 = emulated.ValueOf[emulated.BN254Fp]("8644183822713440026441857877903243046934367497877832294531055867710247192861") - PrecomputedLines[1][6].A0 = emulated.ValueOf[emulated.BN254Fp]("6162215014365963127944303642424328743998922537326512693704891583562046811368") - PrecomputedLines[1][6].A1 = emulated.ValueOf[emulated.BN254Fp]("10154626677971349735949904871597330658975481223864906253916895014919837738925") + PrecomputedLines[0][6].A0 = emulated.ValueOf[BaseField]("6993754568930208115692311734335110502575073944799196719243980186522826192500") + PrecomputedLines[0][6].A1 = emulated.ValueOf[BaseField]("8644183822713440026441857877903243046934367497877832294531055867710247192861") + PrecomputedLines[1][6].A0 = emulated.ValueOf[BaseField]("6162215014365963127944303642424328743998922537326512693704891583562046811368") + PrecomputedLines[1][6].A1 = emulated.ValueOf[BaseField]("10154626677971349735949904871597330658975481223864906253916895014919837738925") // i = 5 - PrecomputedLines[0][5].A0 = emulated.ValueOf[emulated.BN254Fp]("1937978127062894188242539535500798667590225073902686974782593130206599845007") - PrecomputedLines[0][5].A1 = emulated.ValueOf[emulated.BN254Fp]("17119013397235014212137323292998779519533594281540918081901210988375145292838") - PrecomputedLines[1][5].A0 = emulated.ValueOf[emulated.BN254Fp]("7459302385665395083210154080521520536970822621811543022810558924096495990803") - PrecomputedLines[1][5].A1 = emulated.ValueOf[emulated.BN254Fp]("21518092698439432423716311366625905640550440032600495926825070561121714064966") - PrecomputedLines[2][5].A0 = emulated.ValueOf[emulated.BN254Fp]("1037191233256242024591850390288460629996863167044965323205998218470478292293") - PrecomputedLines[2][5].A1 = emulated.ValueOf[emulated.BN254Fp]("3506829931079437251122292736914870037093525843321317425550720179685754066171") - PrecomputedLines[3][5].A0 = emulated.ValueOf[emulated.BN254Fp]("17820182080707051991327549024823189851054031788540897864701560845270403753109") - PrecomputedLines[3][5].A1 = emulated.ValueOf[emulated.BN254Fp]("9899305209455152807161919079699365227282179194615715116357423849253490779682") + PrecomputedLines[0][5].A0 = emulated.ValueOf[BaseField]("1937978127062894188242539535500798667590225073902686974782593130206599845007") + PrecomputedLines[0][5].A1 = emulated.ValueOf[BaseField]("17119013397235014212137323292998779519533594281540918081901210988375145292838") + PrecomputedLines[1][5].A0 = emulated.ValueOf[BaseField]("7459302385665395083210154080521520536970822621811543022810558924096495990803") + PrecomputedLines[1][5].A1 = emulated.ValueOf[BaseField]("21518092698439432423716311366625905640550440032600495926825070561121714064966") + PrecomputedLines[2][5].A0 = emulated.ValueOf[BaseField]("1037191233256242024591850390288460629996863167044965323205998218470478292293") + PrecomputedLines[2][5].A1 = emulated.ValueOf[BaseField]("3506829931079437251122292736914870037093525843321317425550720179685754066171") + PrecomputedLines[3][5].A0 = emulated.ValueOf[BaseField]("17820182080707051991327549024823189851054031788540897864701560845270403753109") + PrecomputedLines[3][5].A1 = emulated.ValueOf[BaseField]("9899305209455152807161919079699365227282179194615715116357423849253490779682") // i = 4 - PrecomputedLines[0][4].A0 = emulated.ValueOf[emulated.BN254Fp]("5324324825155514158487515405280394681879278019015840159544809591606158257332") - PrecomputedLines[0][4].A1 = emulated.ValueOf[emulated.BN254Fp]("9103354596188444592813598822287678248145908880267402190573436459100897831528") - PrecomputedLines[1][4].A0 = emulated.ValueOf[emulated.BN254Fp]("18167200785083515576687640058379703244722940349781476704929858352562239814160") - PrecomputedLines[1][4].A1 = emulated.ValueOf[emulated.BN254Fp]("17137305555905969523835852662612004277081830974452307053507378102895278528589") + PrecomputedLines[0][4].A0 = emulated.ValueOf[BaseField]("5324324825155514158487515405280394681879278019015840159544809591606158257332") + PrecomputedLines[0][4].A1 = emulated.ValueOf[BaseField]("9103354596188444592813598822287678248145908880267402190573436459100897831528") + PrecomputedLines[1][4].A0 = emulated.ValueOf[BaseField]("18167200785083515576687640058379703244722940349781476704929858352562239814160") + PrecomputedLines[1][4].A1 = emulated.ValueOf[BaseField]("17137305555905969523835852662612004277081830974452307053507378102895278528589") // i = 3 - PrecomputedLines[0][3].A0 = emulated.ValueOf[emulated.BN254Fp]("10264790697161180899816663648211298388740251958120764796906064810666177499646") - PrecomputedLines[0][3].A1 = emulated.ValueOf[emulated.BN254Fp]("20258752168525716639405362594120556561630156450371244903071234737141561446514") - PrecomputedLines[1][3].A0 = emulated.ValueOf[emulated.BN254Fp]("1047785956871651181652762185265609154515890741811384676308782178186674721333") - PrecomputedLines[1][3].A1 = emulated.ValueOf[emulated.BN254Fp]("11832321406774014396058335342903409824167804020892883894340494373874448406") - PrecomputedLines[2][3].A0 = emulated.ValueOf[emulated.BN254Fp]("14092236220532563722273193993345070075560441348432917207002037677338453582804") - PrecomputedLines[2][3].A1 = emulated.ValueOf[emulated.BN254Fp]("11497587520289618598164153674981445132323171186923426171334582641683949994368") - PrecomputedLines[3][3].A0 = emulated.ValueOf[emulated.BN254Fp]("20758819501863100067579713445623163018598253994701203661225784213541257554016") - PrecomputedLines[3][3].A1 = emulated.ValueOf[emulated.BN254Fp]("13856843617321777013534357727779974444221810617686309708742406908090120962388") + PrecomputedLines[0][3].A0 = emulated.ValueOf[BaseField]("10264790697161180899816663648211298388740251958120764796906064810666177499646") + PrecomputedLines[0][3].A1 = emulated.ValueOf[BaseField]("20258752168525716639405362594120556561630156450371244903071234737141561446514") + PrecomputedLines[1][3].A0 = emulated.ValueOf[BaseField]("1047785956871651181652762185265609154515890741811384676308782178186674721333") + PrecomputedLines[1][3].A1 = emulated.ValueOf[BaseField]("11832321406774014396058335342903409824167804020892883894340494373874448406") + PrecomputedLines[2][3].A0 = emulated.ValueOf[BaseField]("14092236220532563722273193993345070075560441348432917207002037677338453582804") + PrecomputedLines[2][3].A1 = emulated.ValueOf[BaseField]("11497587520289618598164153674981445132323171186923426171334582641683949994368") + PrecomputedLines[3][3].A0 = emulated.ValueOf[BaseField]("20758819501863100067579713445623163018598253994701203661225784213541257554016") + PrecomputedLines[3][3].A1 = emulated.ValueOf[BaseField]("13856843617321777013534357727779974444221810617686309708742406908090120962388") // i = 2 - PrecomputedLines[0][2].A0 = emulated.ValueOf[emulated.BN254Fp]("7373558527687620561422152162991916593489921204438285449301245125513755320314") - PrecomputedLines[0][2].A1 = emulated.ValueOf[emulated.BN254Fp]("11221203116796205233830200618441749399293664601851323715931973686288216972676") - PrecomputedLines[1][2].A0 = emulated.ValueOf[emulated.BN254Fp]("5779253402567033185739372381451694349656589328372930738070702115143767419084") - PrecomputedLines[1][2].A1 = emulated.ValueOf[emulated.BN254Fp]("14510717290459248510467845044717011062002712332273480525810490069657559246488") + PrecomputedLines[0][2].A0 = emulated.ValueOf[BaseField]("7373558527687620561422152162991916593489921204438285449301245125513755320314") + PrecomputedLines[0][2].A1 = emulated.ValueOf[BaseField]("11221203116796205233830200618441749399293664601851323715931973686288216972676") + PrecomputedLines[1][2].A0 = emulated.ValueOf[BaseField]("5779253402567033185739372381451694349656589328372930738070702115143767419084") + PrecomputedLines[1][2].A1 = emulated.ValueOf[BaseField]("14510717290459248510467845044717011062002712332273480525810490069657559246488") // i = 1 - PrecomputedLines[0][1].A0 = emulated.ValueOf[emulated.BN254Fp]("4363337419110373219314875355410347765942328123649693011784654840812725908680") - PrecomputedLines[0][1].A1 = emulated.ValueOf[emulated.BN254Fp]("14128521847906711846651015249783668960206638766994768661570084127609973543329") - PrecomputedLines[1][1].A0 = emulated.ValueOf[emulated.BN254Fp]("14274248424128087078986321168245052972625654514554370562089216041782293981548") - PrecomputedLines[1][1].A1 = emulated.ValueOf[emulated.BN254Fp]("1819524229057471418630268602559233583119735893806768677221723572182212858124") + PrecomputedLines[0][1].A0 = emulated.ValueOf[BaseField]("4363337419110373219314875355410347765942328123649693011784654840812725908680") + PrecomputedLines[0][1].A1 = emulated.ValueOf[BaseField]("14128521847906711846651015249783668960206638766994768661570084127609973543329") + PrecomputedLines[1][1].A0 = emulated.ValueOf[BaseField]("14274248424128087078986321168245052972625654514554370562089216041782293981548") + PrecomputedLines[1][1].A1 = emulated.ValueOf[BaseField]("1819524229057471418630268602559233583119735893806768677221723572182212858124") // i = 0 - PrecomputedLines[0][0].A0 = emulated.ValueOf[emulated.BN254Fp]("9362219973542874570450638939162889131446156209210285596288463924394915480984") - PrecomputedLines[0][0].A1 = emulated.ValueOf[emulated.BN254Fp]("2166292944666058936308575452356594861484875658446920124101542049719645145111") - PrecomputedLines[1][0].A0 = emulated.ValueOf[emulated.BN254Fp]("4110752764440847029993710333296870396753666785458870337440969782289123199548") - PrecomputedLines[1][0].A1 = emulated.ValueOf[emulated.BN254Fp]("2524539108828422865916215076272533083788815095038371749085255761852573579569") + PrecomputedLines[0][0].A0 = emulated.ValueOf[BaseField]("9362219973542874570450638939162889131446156209210285596288463924394915480984") + PrecomputedLines[0][0].A1 = emulated.ValueOf[BaseField]("2166292944666058936308575452356594861484875658446920124101542049719645145111") + PrecomputedLines[1][0].A0 = emulated.ValueOf[BaseField]("4110752764440847029993710333296870396753666785458870337440969782289123199548") + PrecomputedLines[1][0].A1 = emulated.ValueOf[BaseField]("2524539108828422865916215076272533083788815095038371749085255761852573579569") // precompute ℓ_{[6x₀+2]G,π(G)} and ℓ_{[6x₀+2]Q+π(Q),-π²(Q)} - PrecomputedLines[0][65].A0 = emulated.ValueOf[emulated.BN254Fp]("1783675334639145815870644667302053681284809203074760789174282843314959992696") - PrecomputedLines[0][65].A1 = emulated.ValueOf[emulated.BN254Fp]("1951629468503798175241267767783740387858451447279377240163542122176909999042") - PrecomputedLines[1][65].A0 = emulated.ValueOf[emulated.BN254Fp]("11606810498377529077474160506241087507512991084990061027495602653306616416578") - PrecomputedLines[1][65].A1 = emulated.ValueOf[emulated.BN254Fp]("3352534584315050939412504680522542162196297327743431591269455212982072101125") - PrecomputedLines[0][66].A0 = emulated.ValueOf[emulated.BN254Fp]("6096279428236379570154933180749579153826262770836405799784606344740772912667") - PrecomputedLines[0][66].A1 = emulated.ValueOf[emulated.BN254Fp]("14973662014392090789260536656747094881206477852734022080621808568128746451734") - PrecomputedLines[1][66].A0 = emulated.ValueOf[emulated.BN254Fp]("9419615873784151968180451321627355717720222550586076973652377412738922144509") - PrecomputedLines[1][66].A1 = emulated.ValueOf[emulated.BN254Fp]("9757224935408026300679308061023777371092034675697842738078668298357133523844") + PrecomputedLines[0][65].A0 = emulated.ValueOf[BaseField]("1783675334639145815870644667302053681284809203074760789174282843314959992696") + PrecomputedLines[0][65].A1 = emulated.ValueOf[BaseField]("1951629468503798175241267767783740387858451447279377240163542122176909999042") + PrecomputedLines[1][65].A0 = emulated.ValueOf[BaseField]("11606810498377529077474160506241087507512991084990061027495602653306616416578") + PrecomputedLines[1][65].A1 = emulated.ValueOf[BaseField]("3352534584315050939412504680522542162196297327743431591269455212982072101125") + PrecomputedLines[0][66].A0 = emulated.ValueOf[BaseField]("6096279428236379570154933180749579153826262770836405799784606344740772912667") + PrecomputedLines[0][66].A1 = emulated.ValueOf[BaseField]("14973662014392090789260536656747094881206477852734022080621808568128746451734") + PrecomputedLines[1][66].A0 = emulated.ValueOf[BaseField]("9419615873784151968180451321627355717720222550586076973652377412738922144509") + PrecomputedLines[1][66].A1 = emulated.ValueOf[BaseField]("9757224935408026300679308061023777371092034675697842738078668298357133523844") return PrecomputedLines } diff --git a/std/algebra/emulated/sw_bw6761/g1.go b/std/algebra/emulated/sw_bw6761/g1.go index 4c5f5a573f..8dbda66651 100644 --- a/std/algebra/emulated/sw_bw6761/g1.go +++ b/std/algebra/emulated/sw_bw6761/g1.go @@ -9,21 +9,27 @@ import ( // G1Affine is the point in G1. It is an alias to the generic emulated affine // point. -type G1Affine = sw_emulated.AffinePoint[emulated.BW6761Fp] +type G1Affine = sw_emulated.AffinePoint[BaseField] // Scalar is the scalar in the groups. It is an alias to the emulated element // defined over the scalar field of the groups. -type Scalar = emulated.Element[emulated.BW6761Fr] +type Scalar = emulated.Element[ScalarField] // NewG1Affine allocates a witness from the native G1 element and returns it. func NewG1Affine(v bw6761.G1Affine) G1Affine { return G1Affine{ - X: emulated.ValueOf[emulated.BW6761Fp](v.X), - Y: emulated.ValueOf[emulated.BW6761Fp](v.Y), + X: emulated.ValueOf[BaseField](v.X), + Y: emulated.ValueOf[BaseField](v.Y), } } // NewScalar allocates a witness from the native scalar and returns it. func NewScalar(v fr_bw6761.Element) Scalar { - return emulated.ValueOf[emulated.BW6761Fr](v) + return emulated.ValueOf[ScalarField](v) } + +// ScalarField is the [emulated.FieldParams] impelementation of the curve scalar field. +type ScalarField = emulated.BW6761Fr + +// BaseField is the [emulated.FieldParams] impelementation of the curve base field. +type BaseField = emulated.BW6761Fp diff --git a/std/algebra/emulated/sw_bw6761/g2.go b/std/algebra/emulated/sw_bw6761/g2.go index 8de701405a..8567c3e61c 100644 --- a/std/algebra/emulated/sw_bw6761/g2.go +++ b/std/algebra/emulated/sw_bw6761/g2.go @@ -6,11 +6,11 @@ import ( "github.com/consensys/gnark/std/math/emulated" ) -type G2Affine = sw_emulated.AffinePoint[emulated.BW6761Fp] +type G2Affine = sw_emulated.AffinePoint[BaseField] func NewG2Affine(v bw6761.G2Affine) G2Affine { return G2Affine{ - X: emulated.ValueOf[emulated.BW6761Fp](v.X), - Y: emulated.ValueOf[emulated.BW6761Fp](v.Y), + X: emulated.ValueOf[BaseField](v.X), + Y: emulated.ValueOf[BaseField](v.Y), } } diff --git a/std/algebra/emulated/sw_bw6761/pairing.go b/std/algebra/emulated/sw_bw6761/pairing.go index bff75e7551..02026ad42e 100644 --- a/std/algebra/emulated/sw_bw6761/pairing.go +++ b/std/algebra/emulated/sw_bw6761/pairing.go @@ -14,8 +14,8 @@ import ( type Pairing struct { api frontend.API *fields_bw6761.Ext6 - curveF *emulated.Field[emulated.BW6761Fp] - lines [4][189]emulated.Element[emulated.BW6761Fp] + curveF *emulated.Field[BaseField] + lines [4][189]emulated.Element[BaseField] } type GTEl = fields_bw6761.E6 @@ -23,20 +23,20 @@ type GTEl = fields_bw6761.E6 func NewGTEl(v bw6761.GT) GTEl { return GTEl{ B0: fields_bw6761.E3{ - A0: emulated.ValueOf[emulated.BW6761Fp](v.B0.A0), - A1: emulated.ValueOf[emulated.BW6761Fp](v.B0.A1), - A2: emulated.ValueOf[emulated.BW6761Fp](v.B0.A2), + A0: emulated.ValueOf[BaseField](v.B0.A0), + A1: emulated.ValueOf[BaseField](v.B0.A1), + A2: emulated.ValueOf[BaseField](v.B0.A2), }, B1: fields_bw6761.E3{ - A0: emulated.ValueOf[emulated.BW6761Fp](v.B1.A0), - A1: emulated.ValueOf[emulated.BW6761Fp](v.B1.A1), - A2: emulated.ValueOf[emulated.BW6761Fp](v.B1.A2), + A0: emulated.ValueOf[BaseField](v.B1.A0), + A1: emulated.ValueOf[BaseField](v.B1.A1), + A2: emulated.ValueOf[BaseField](v.B1.A2), }, } } func NewPairing(api frontend.API) (*Pairing, error) { - ba, err := emulated.NewField[emulated.BW6761Fp](api) + ba, err := emulated.NewField[BaseField](api) if err != nil { return nil, fmt.Errorf("new base api: %w", err) } @@ -103,7 +103,7 @@ func (pr Pairing) FinalExponentiation(z *GTEl) *GTEl { // line: 1 + R0(x/y) + R1(1/y) = 0 instead of R0'*y + R1'*x + R2' = 0 This // makes the multiplication by lines (MulBy014) type lineEvaluation struct { - R0, R1 emulated.Element[emulated.BW6761Fp] + R0, R1 emulated.Element[BaseField] } // Pair calculates the reduced pairing for a set of points @@ -165,7 +165,7 @@ var loopCounter2 = [190]int8{ } // thirdRootOne² + thirdRootOne + 1 = 0 in BW6761Fp -var thirdRootOne = emulated.ValueOf[emulated.BW6761Fp]("1968985824090209297278610739700577151397666382303825728450741611566800370218827257750865013421937292370006175842381275743914023380727582819905021229583192207421122272650305267822868639090213645505120388400344940985710520836292650") +var thirdRootOne = emulated.ValueOf[BaseField]("1968985824090209297278610739700577151397666382303825728450741611566800370218827257750865013421937292370006175842381275743914023380727582819905021229583192207421122272650305267822868639090213645505120388400344940985710520836292650") // MillerLoop computes the optimal Tate multi-Miller loop // (or twisted ate or Eta revisited) @@ -187,8 +187,8 @@ func (pr Pairing) MillerLoop(P []*G1Affine, Q []*G2Affine) (*GTEl, error) { imQ := make([]*G2Affine, n) imQneg := make([]*G2Affine, n) accQ := make([]*G2Affine, n) - yInv := make([]*emulated.Element[emulated.BW6761Fp], n) - xNegOverY := make([]*emulated.Element[emulated.BW6761Fp], n) + yInv := make([]*emulated.Element[BaseField], n) + xNegOverY := make([]*emulated.Element[BaseField], n) for k := 0; k < n; k++ { // P and Q are supposed to be on G1 and G2 respectively of prime order r. @@ -211,7 +211,7 @@ func (pr Pairing) MillerLoop(P []*G1Affine, Q []*G2Affine) (*GTEl, error) { result := pr.Ext6.One() var l0, l1 *lineEvaluation - var prodLines [5]*emulated.Element[emulated.BW6761Fp] + var prodLines [5]*emulated.Element[BaseField] // i = 188, separately to avoid an E6 Square // (Square(res) = 1² = 1) // k = 0, separately to avoid MulBy014 (res × ℓ) @@ -582,8 +582,8 @@ func (pr Pairing) DoubleMillerLoopFixedQ(P [2]*G1Affine, Q *G2Affine) (*GTEl, er // P and Q are supposed to be on G1 and G2 respectively of prime order r. // The point (x,0) is of order 2. But this function does not check // subgroup membership. - yInv := make([]*emulated.Element[emulated.BW6761Fp], 2) - xNegOverY := make([]*emulated.Element[emulated.BW6761Fp], 2) + yInv := make([]*emulated.Element[BaseField], 2) + xNegOverY := make([]*emulated.Element[BaseField], 2) yInv[1] = pr.curveF.Inverse(&P[1].Y) xNegOverY[1] = pr.curveF.MulMod(&P[1].X, yInv[1]) xNegOverY[1] = pr.curveF.Neg(xNegOverY[1]) diff --git a/std/algebra/emulated/sw_bw6761/precomputations.go b/std/algebra/emulated/sw_bw6761/precomputations.go index d45cbecc82..0a02ff6d7b 100644 --- a/std/algebra/emulated/sw_bw6761/precomputations.go +++ b/std/algebra/emulated/sw_bw6761/precomputations.go @@ -12,7 +12,7 @@ import ( // Q.X = 0x110133241d9b816c852a82e69d660f9d61053aac5a7115f4c06201013890f6d26b41c5dab3da268734ec3f1f09feb58c5bbcae9ac70e7c7963317a300e1b6bace6948cb3cd208d700e96efbc2ad54b06410cf4fe1bf995ba830c194cd025f1c // Q.Y = 0x17c3357761369f8179eb10e4b6d2dc26b7cf9acec2181c81a78e2753ffe3160a1d86c80b95a59c94c97eb733293fef64f293dbd2c712b88906c170ffa823003ea96fcd504affc758aa2d3a3c5a02a591ec0594f9eac689eb70a16728c73b61 -type baseEl = emulated.Element[emulated.BW6761Fp] +type baseEl = emulated.Element[BaseField] var precomputedLines [4][189]baseEl var precomputedLinesOnce sync.Once @@ -27,643 +27,643 @@ func getPrecomputedLines() [4][189]baseEl { func computePrecomputedLines() [4][189]baseEl { var PrecomputedLines [4][189]baseEl // i = 188 j = 0 - PrecomputedLines[0][188] = emulated.ValueOf[emulated.BW6761Fp]("4601722206214295589033088118535164033177870656592393416182096720489015375349530497029363906228062576089643123713140574049771600086112717246828284242782907384274009546064259364292020067384886633838728785085024491886709733695441232") - PrecomputedLines[1][188] = emulated.ValueOf[emulated.BW6761Fp]("3236784823006863466220910026173765602174401950878036630758358824838437862247058427793759575023892215394054069008320620643640558315304032361447991476750076954187501466307705591468937850275918000275643689484882669396511455818909363") + PrecomputedLines[0][188] = emulated.ValueOf[BaseField]("4601722206214295589033088118535164033177870656592393416182096720489015375349530497029363906228062576089643123713140574049771600086112717246828284242782907384274009546064259364292020067384886633838728785085024491886709733695441232") + PrecomputedLines[1][188] = emulated.ValueOf[BaseField]("3236784823006863466220910026173765602174401950878036630758358824838437862247058427793759575023892215394054069008320620643640558315304032361447991476750076954187501466307705591468937850275918000275643689484882669396511455818909363") // i = 187 j = 0 - PrecomputedLines[0][187] = emulated.ValueOf[emulated.BW6761Fp]("4284789655013537363710179286068174786772309617997172492875713618334010224041698623742954093647630044979590696811111164975595092645867490218999600504619327786427075567895145591027412670194923356675080657179976322498310050902640523") - PrecomputedLines[1][187] = emulated.ValueOf[emulated.BW6761Fp]("3397077585795497770574956326615748114624499481864974680679794687756340652124038636739703112837391756600057731371987592607050612125672213939529572905167024548876842558316659173179147459198230753321661513330822067010574384973022555") + PrecomputedLines[0][187] = emulated.ValueOf[BaseField]("4284789655013537363710179286068174786772309617997172492875713618334010224041698623742954093647630044979590696811111164975595092645867490218999600504619327786427075567895145591027412670194923356675080657179976322498310050902640523") + PrecomputedLines[1][187] = emulated.ValueOf[BaseField]("3397077585795497770574956326615748114624499481864974680679794687756340652124038636739703112837391756600057731371987592607050612125672213939529572905167024548876842558316659173179147459198230753321661513330822067010574384973022555") // i = 186 j = 3 - PrecomputedLines[0][186] = emulated.ValueOf[emulated.BW6761Fp]("1091218109139043282885863378251414023636707952314494512372017652056066775447345582100836025388344721550644843738483035932390251464065810927296998086029013978640474160190153308907248340838991167773800991890772343915279880213727062") - PrecomputedLines[1][186] = emulated.ValueOf[emulated.BW6761Fp]("1932776294962294607326429681443867590647757998709969192146711063851317722986642914651257815274395176263091471604122034263563029802869462271974741247507241537190216497945753260923732481508423404907321219572689937399399368195704348") - PrecomputedLines[2][186] = emulated.ValueOf[emulated.BW6761Fp]("1167511316335148398324667389573191338189911188523766691946541436850923544315370902735475929874422878371203198033582100003913387275481716694511228659348082334915004259698541139727514336425787780973815806097545196965816776735499316") - PrecomputedLines[3][186] = emulated.ValueOf[emulated.BW6761Fp]("2232147160804702884423918597342996957835298299780156070425000360564717706225474915966264161194163856897624977960159816970762695368466669819933690851287248431427008562532340374129779212941298363468687914653260398814409814536898700") + PrecomputedLines[0][186] = emulated.ValueOf[BaseField]("1091218109139043282885863378251414023636707952314494512372017652056066775447345582100836025388344721550644843738483035932390251464065810927296998086029013978640474160190153308907248340838991167773800991890772343915279880213727062") + PrecomputedLines[1][186] = emulated.ValueOf[BaseField]("1932776294962294607326429681443867590647757998709969192146711063851317722986642914651257815274395176263091471604122034263563029802869462271974741247507241537190216497945753260923732481508423404907321219572689937399399368195704348") + PrecomputedLines[2][186] = emulated.ValueOf[BaseField]("1167511316335148398324667389573191338189911188523766691946541436850923544315370902735475929874422878371203198033582100003913387275481716694511228659348082334915004259698541139727514336425787780973815806097545196965816776735499316") + PrecomputedLines[3][186] = emulated.ValueOf[BaseField]("2232147160804702884423918597342996957835298299780156070425000360564717706225474915966264161194163856897624977960159816970762695368466669819933690851287248431427008562532340374129779212941298363468687914653260398814409814536898700") // i = 185 j = 0 - PrecomputedLines[0][185] = emulated.ValueOf[emulated.BW6761Fp]("4306004365533618104109465014384942345157633268446223951065825943259943902363054326485029738013348784033879397763697209004558286305504012553322685432568902284266798288509918199237758986260160353745025118056507076964718412200474980") - PrecomputedLines[1][185] = emulated.ValueOf[emulated.BW6761Fp]("5317846815027928872027613253615316395074256905491637198887969705823256420589631614168749537597578371751367448584458328091779472154865596580401722980439239350433503000609691988033596752719329540220674293362655543781993007414133383") + PrecomputedLines[0][185] = emulated.ValueOf[BaseField]("4306004365533618104109465014384942345157633268446223951065825943259943902363054326485029738013348784033879397763697209004558286305504012553322685432568902284266798288509918199237758986260160353745025118056507076964718412200474980") + PrecomputedLines[1][185] = emulated.ValueOf[BaseField]("5317846815027928872027613253615316395074256905491637198887969705823256420589631614168749537597578371751367448584458328091779472154865596580401722980439239350433503000609691988033596752719329540220674293362655543781993007414133383") // i = 184 j = 0 - PrecomputedLines[0][184] = emulated.ValueOf[emulated.BW6761Fp]("6421916924517227492429982731209978531258674731359925152390387866121182338289516345823943563081211701852337791457795568248902135968560498937316951201929059763508154635231637895327320269539372239958994090925499869310860986253930201") - PrecomputedLines[1][184] = emulated.ValueOf[emulated.BW6761Fp]("1686639416390596371553909149095788961102940263395631521907287043550337997450943996462705979234109248163103596400703514709833294645758815792512648361448153221566523943762780235884649119800769196410541762065839619252631807329090400") + PrecomputedLines[0][184] = emulated.ValueOf[BaseField]("6421916924517227492429982731209978531258674731359925152390387866121182338289516345823943563081211701852337791457795568248902135968560498937316951201929059763508154635231637895327320269539372239958994090925499869310860986253930201") + PrecomputedLines[1][184] = emulated.ValueOf[BaseField]("1686639416390596371553909149095788961102940263395631521907287043550337997450943996462705979234109248163103596400703514709833294645758815792512648361448153221566523943762780235884649119800769196410541762065839619252631807329090400") // i = 183 j = 0 - PrecomputedLines[0][183] = emulated.ValueOf[emulated.BW6761Fp]("114180830592984977608620197891299258218097289300462265571701992566828885245678086954282598493180224315526740165796002388700857620749087925225196526364545673995004707545174481617926132341198681064474105987363733245947798260480021") - PrecomputedLines[1][183] = emulated.ValueOf[emulated.BW6761Fp]("3643314528606611673549077340603412386053042463599462417346484334589212006592934006344061880772131103404526782421964102589866962439448410017161380283698685419352722215199790426320563536567649897993742663645650081369281521868591534") + PrecomputedLines[0][183] = emulated.ValueOf[BaseField]("114180830592984977608620197891299258218097289300462265571701992566828885245678086954282598493180224315526740165796002388700857620749087925225196526364545673995004707545174481617926132341198681064474105987363733245947798260480021") + PrecomputedLines[1][183] = emulated.ValueOf[BaseField]("3643314528606611673549077340603412386053042463599462417346484334589212006592934006344061880772131103404526782421964102589866962439448410017161380283698685419352722215199790426320563536567649897993742663645650081369281521868591534") // i = 182 j = 0 - PrecomputedLines[0][182] = emulated.ValueOf[emulated.BW6761Fp]("1688781593013252202379324989130651254204553658263455673413039374103132244330512227184037116111497079310793760489525262660487540543772659221909636681163656965516816665546804331362111396729665567623773273510723669438274720439381576") - PrecomputedLines[1][182] = emulated.ValueOf[emulated.BW6761Fp]("5193662126481262079756387379977171046664714957086394774928779609243972397458622726105179616127621272398676788700476587946061649662787381825305427284456092085078167585950026775781619955464645576626263196914090116793028720585355481") + PrecomputedLines[0][182] = emulated.ValueOf[BaseField]("1688781593013252202379324989130651254204553658263455673413039374103132244330512227184037116111497079310793760489525262660487540543772659221909636681163656965516816665546804331362111396729665567623773273510723669438274720439381576") + PrecomputedLines[1][182] = emulated.ValueOf[BaseField]("5193662126481262079756387379977171046664714957086394774928779609243972397458622726105179616127621272398676788700476587946061649662787381825305427284456092085078167585950026775781619955464645576626263196914090116793028720585355481") // i = 181 j = 0 - PrecomputedLines[0][181] = emulated.ValueOf[emulated.BW6761Fp]("6209325124145239397598057826971218736702656412059021495624233205137199082483268094371872462575283057254647931585279829235136285083590372314804121031720427317525847055896280145588498274054925464619306135927111436825130374258987514") - PrecomputedLines[1][181] = emulated.ValueOf[emulated.BW6761Fp]("1010036127161986089883406275933044583728615228275798613559152479035653938286105077506616278778086885698838149352983372472274935209107911460860800570032291053269269264676570250105939952537570296490530893420393830672599263484907593") + PrecomputedLines[0][181] = emulated.ValueOf[BaseField]("6209325124145239397598057826971218736702656412059021495624233205137199082483268094371872462575283057254647931585279829235136285083590372314804121031720427317525847055896280145588498274054925464619306135927111436825130374258987514") + PrecomputedLines[1][181] = emulated.ValueOf[BaseField]("1010036127161986089883406275933044583728615228275798613559152479035653938286105077506616278778086885698838149352983372472274935209107911460860800570032291053269269264676570250105939952537570296490530893420393830672599263484907593") // i = 180 j = -3 - PrecomputedLines[0][180] = emulated.ValueOf[emulated.BW6761Fp]("3916228906012440253680477868908277251188577745381915527147519311139261470401587060157132237422167594920897130917968660806249831166496286071990001152498332736769111249089722262822452866904553313342810671126322183997326609281401583") - PrecomputedLines[1][180] = emulated.ValueOf[emulated.BW6761Fp]("3435089271581010462145195911014096957530126526254735357340434973538495700622046265485990757746992495980170396689021322325804572193781170277216716200627690025249089996091294085258675338244847987082579742015932982288506050846801367") - PrecomputedLines[2][180] = emulated.ValueOf[emulated.BW6761Fp]("2092456650515366730031987771316607202541762165703719836977478738322079795443253020269257496488401455876600213975362916923917314143513070424323372549014825342086761376907156571063602331303475993817855431561965996939828394721782593") - PrecomputedLines[3][180] = emulated.ValueOf[emulated.BW6761Fp]("6122599343245408702600384763049321564036931568283100932099921667936978634943943045806116525776697821713388531514318882641704622862282367112968413235610663665510382250760330294750688640834276927034495199398556442136786749389317895") + PrecomputedLines[0][180] = emulated.ValueOf[BaseField]("3916228906012440253680477868908277251188577745381915527147519311139261470401587060157132237422167594920897130917968660806249831166496286071990001152498332736769111249089722262822452866904553313342810671126322183997326609281401583") + PrecomputedLines[1][180] = emulated.ValueOf[BaseField]("3435089271581010462145195911014096957530126526254735357340434973538495700622046265485990757746992495980170396689021322325804572193781170277216716200627690025249089996091294085258675338244847987082579742015932982288506050846801367") + PrecomputedLines[2][180] = emulated.ValueOf[BaseField]("2092456650515366730031987771316607202541762165703719836977478738322079795443253020269257496488401455876600213975362916923917314143513070424323372549014825342086761376907156571063602331303475993817855431561965996939828394721782593") + PrecomputedLines[3][180] = emulated.ValueOf[BaseField]("6122599343245408702600384763049321564036931568283100932099921667936978634943943045806116525776697821713388531514318882641704622862282367112968413235610663665510382250760330294750688640834276927034495199398556442136786749389317895") // i = 179 j = 0 - PrecomputedLines[0][179] = emulated.ValueOf[emulated.BW6761Fp]("2511580551397099010509156635216328707755934194815457044079051714639178304720486457528769378752459457724113502551911503989967751565016715972609480447192036056055039234581972315469267363618696732916527984903826194214600735642319929") - PrecomputedLines[1][179] = emulated.ValueOf[emulated.BW6761Fp]("5236472788607503982524038470940158051826098915931331379976687924803796292051708055582509266856976616002835930583332408804995941668529244992278273158141526570518774812582018031213946165449114235122523836895477325571581042012028314") + PrecomputedLines[0][179] = emulated.ValueOf[BaseField]("2511580551397099010509156635216328707755934194815457044079051714639178304720486457528769378752459457724113502551911503989967751565016715972609480447192036056055039234581972315469267363618696732916527984903826194214600735642319929") + PrecomputedLines[1][179] = emulated.ValueOf[BaseField]("5236472788607503982524038470940158051826098915931331379976687924803796292051708055582509266856976616002835930583332408804995941668529244992278273158141526570518774812582018031213946165449114235122523836895477325571581042012028314") // i = 178 j = -3 - PrecomputedLines[0][178] = emulated.ValueOf[emulated.BW6761Fp]("1800040314478109155379981516978971807927978753985771292093243510338787993118579044453988179372350623657128285404863657231415514828304930341219926840787023926783731174197374231588404417124836232214161233727655561791136924294415108") - PrecomputedLines[1][178] = emulated.ValueOf[emulated.BW6761Fp]("2804331434973313747360020974539045142189940350869252061028836865792880045822923060547593583152729801334865015365392914719118701386614928096404458139252733417581429421730546318906704389393001623046225620830318086821332624756683051") - PrecomputedLines[2][178] = emulated.ValueOf[emulated.BW6761Fp]("4010999921375805968870272930021879668093105275880304512189843893600197903154276931811822077163095190015328087423981272784184916779390182971756524393178302760547186651561079225545153363602239291122847568838787351267442061099216202") - PrecomputedLines[3][178] = emulated.ValueOf[emulated.BW6761Fp]("6584340050018347280681423899606339541161987220622923184308043318586136566115378253810690431289328806239175170506538394612454436990768398488496929349106290361186183199132928039289063200363255216189738034088179050204170911896584164") + PrecomputedLines[0][178] = emulated.ValueOf[BaseField]("1800040314478109155379981516978971807927978753985771292093243510338787993118579044453988179372350623657128285404863657231415514828304930341219926840787023926783731174197374231588404417124836232214161233727655561791136924294415108") + PrecomputedLines[1][178] = emulated.ValueOf[BaseField]("2804331434973313747360020974539045142189940350869252061028836865792880045822923060547593583152729801334865015365392914719118701386614928096404458139252733417581429421730546318906704389393001623046225620830318086821332624756683051") + PrecomputedLines[2][178] = emulated.ValueOf[BaseField]("4010999921375805968870272930021879668093105275880304512189843893600197903154276931811822077163095190015328087423981272784184916779390182971756524393178302760547186651561079225545153363602239291122847568838787351267442061099216202") + PrecomputedLines[3][178] = emulated.ValueOf[BaseField]("6584340050018347280681423899606339541161987220622923184308043318586136566115378253810690431289328806239175170506538394612454436990768398488496929349106290361186183199132928039289063200363255216189738034088179050204170911896584164") // i = 177 j = 0 - PrecomputedLines[0][177] = emulated.ValueOf[emulated.BW6761Fp]("1726061023290836353179062634745502209899779569524834789308289547123213283973848080035664750629441061589219352338927276240139068374410873973059216682750238724779941510904773266077989956039532262991092557793969212159854495230862985") - PrecomputedLines[1][177] = emulated.ValueOf[emulated.BW6761Fp]("1869481926743730917071424311764961273208736749090789559157861316592814440537481639260176341853100863466049497097529708062437289228998726553060613609659652146673372729676870794229410647181863143859417329385468871464108699012273846") + PrecomputedLines[0][177] = emulated.ValueOf[BaseField]("1726061023290836353179062634745502209899779569524834789308289547123213283973848080035664750629441061589219352338927276240139068374410873973059216682750238724779941510904773266077989956039532262991092557793969212159854495230862985") + PrecomputedLines[1][177] = emulated.ValueOf[BaseField]("1869481926743730917071424311764961273208736749090789559157861316592814440537481639260176341853100863466049497097529708062437289228998726553060613609659652146673372729676870794229410647181863143859417329385468871464108699012273846") // i = 176 j = 3 - PrecomputedLines[0][176] = emulated.ValueOf[emulated.BW6761Fp]("1793856615109417544088516938753960964286334983251529993717647594862500706265566364226045939516389855497516791858306940602084518785322491855363658977981397037532005228517905667670972924240011942702220857789530663664665855554661222") - PrecomputedLines[1][176] = emulated.ValueOf[emulated.BW6761Fp]("6395681833640894351709246408264671690875088694587688739687699328485856788238236843578177291133035935076604936426130742942110635837371378818936098673000308956223463158303247180215145841735445353551571220444236560630404547986209151") - PrecomputedLines[2][176] = emulated.ValueOf[emulated.BW6761Fp]("2658682327531363340886128523639936936794527892563754531362906969704238916622746439525897392384544276189617954255779173048784430461921811078498554047189350865557776717733143006886329081619462673131362508883137636048162229001001752") - PrecomputedLines[3][176] = emulated.ValueOf[emulated.BW6761Fp]("5617554506492221938975106502341524911009083485697351396054750293054330722247646308915037251220568495308451049624878789498457236602788959655661892769719935053597205105831249795638145145160065336641583965498951605487903540981050802") + PrecomputedLines[0][176] = emulated.ValueOf[BaseField]("1793856615109417544088516938753960964286334983251529993717647594862500706265566364226045939516389855497516791858306940602084518785322491855363658977981397037532005228517905667670972924240011942702220857789530663664665855554661222") + PrecomputedLines[1][176] = emulated.ValueOf[BaseField]("6395681833640894351709246408264671690875088694587688739687699328485856788238236843578177291133035935076604936426130742942110635837371378818936098673000308956223463158303247180215145841735445353551571220444236560630404547986209151") + PrecomputedLines[2][176] = emulated.ValueOf[BaseField]("2658682327531363340886128523639936936794527892563754531362906969704238916622746439525897392384544276189617954255779173048784430461921811078498554047189350865557776717733143006886329081619462673131362508883137636048162229001001752") + PrecomputedLines[3][176] = emulated.ValueOf[BaseField]("5617554506492221938975106502341524911009083485697351396054750293054330722247646308915037251220568495308451049624878789498457236602788959655661892769719935053597205105831249795638145145160065336641583965498951605487903540981050802") // i = 175 j = 0 - PrecomputedLines[0][175] = emulated.ValueOf[emulated.BW6761Fp]("4470825980738541959726721215854613341075368401570063568735045574729298521280405311388012358627027886827869852758362621710083501885879349449153525400484725770873456029339549390419942617945037345005301748390450340592093970111359648") - PrecomputedLines[1][175] = emulated.ValueOf[emulated.BW6761Fp]("1920568269358036725699475088712901539873940686097511566671943459117851140609958127041667654873888431108367861061290576749035032066751452068241877286059270867844790516311803884123933497833146654049795784282665587712174325905132873") + PrecomputedLines[0][175] = emulated.ValueOf[BaseField]("4470825980738541959726721215854613341075368401570063568735045574729298521280405311388012358627027886827869852758362621710083501885879349449153525400484725770873456029339549390419942617945037345005301748390450340592093970111359648") + PrecomputedLines[1][175] = emulated.ValueOf[BaseField]("1920568269358036725699475088712901539873940686097511566671943459117851140609958127041667654873888431108367861061290576749035032066751452068241877286059270867844790516311803884123933497833146654049795784282665587712174325905132873") // i = 174 j = 0 - PrecomputedLines[0][174] = emulated.ValueOf[emulated.BW6761Fp]("5291384463484550783828111596416354076934608698798352210861001411148434599869192035754382317926833597940265596903863701701788020967880271864100145931495422846851649251335105459602027077341966720233978984790404433500118923981944200") - PrecomputedLines[1][174] = emulated.ValueOf[emulated.BW6761Fp]("3474094727155888343948366737511294507806212772178038965971065737773346795180126935784209107320980882788680952477240615967935772085115185124196534170261596941607671230574363788110421854443479506298253443971821547731182829113123758") + PrecomputedLines[0][174] = emulated.ValueOf[BaseField]("5291384463484550783828111596416354076934608698798352210861001411148434599869192035754382317926833597940265596903863701701788020967880271864100145931495422846851649251335105459602027077341966720233978984790404433500118923981944200") + PrecomputedLines[1][174] = emulated.ValueOf[BaseField]("3474094727155888343948366737511294507806212772178038965971065737773346795180126935784209107320980882788680952477240615967935772085115185124196534170261596941607671230574363788110421854443479506298253443971821547731182829113123758") // i = 173 j = 0 - PrecomputedLines[0][173] = emulated.ValueOf[emulated.BW6761Fp]("291159196638023833126170878103962505591607284608066095971122730560627573500586990219507525188803791560522939176145008398336699153787221653227248248679740995364715081700438265042240313974596422431379084154243300992164241337305047") - PrecomputedLines[1][173] = emulated.ValueOf[emulated.BW6761Fp]("6637317848210107927777296198352103696418016960893139157040698743859956793987416974109447386120759632207128207385903665276310974970806579773735756047615944951621704212430487647997793051862976764280585794774975775226509571642012340") + PrecomputedLines[0][173] = emulated.ValueOf[BaseField]("291159196638023833126170878103962505591607284608066095971122730560627573500586990219507525188803791560522939176145008398336699153787221653227248248679740995364715081700438265042240313974596422431379084154243300992164241337305047") + PrecomputedLines[1][173] = emulated.ValueOf[BaseField]("6637317848210107927777296198352103696418016960893139157040698743859956793987416974109447386120759632207128207385903665276310974970806579773735756047615944951621704212430487647997793051862976764280585794774975775226509571642012340") // i = 172 j = 3 - PrecomputedLines[0][172] = emulated.ValueOf[emulated.BW6761Fp]("2896810465976073493801911194359719472039621862530606610348926118077429042177497167032204517123568128544943241127796124713416640564286772536699713462008786003585732747296391431773911293376178622434550785330571364764018950598140281") - PrecomputedLines[1][172] = emulated.ValueOf[emulated.BW6761Fp]("4467780101676510281057903463361611394824850531998065167477996007953191976696291514533668019146536239987670464917412247254495086054690728549700926765864200643470435884309849171046000608577799964445823074181488503901546261068862692") - PrecomputedLines[2][172] = emulated.ValueOf[emulated.BW6761Fp]("6272874977137170475628881314521834520164802977112863597206461767527978691719236433645395640481127588156828153563372518828973086791188240123830748726657346202491578701145062590487795733410523861316913042654984845940431454041270826") - PrecomputedLines[3][172] = emulated.ValueOf[emulated.BW6761Fp]("1491519716322459721476131635974774555179040450041728831056366076429022306831905396756755500249298779816133035692361613992371069670991372872597941652981525923051283306282081842575371025653013841958071420611736931252604211356071193") + PrecomputedLines[0][172] = emulated.ValueOf[BaseField]("2896810465976073493801911194359719472039621862530606610348926118077429042177497167032204517123568128544943241127796124713416640564286772536699713462008786003585732747296391431773911293376178622434550785330571364764018950598140281") + PrecomputedLines[1][172] = emulated.ValueOf[BaseField]("4467780101676510281057903463361611394824850531998065167477996007953191976696291514533668019146536239987670464917412247254495086054690728549700926765864200643470435884309849171046000608577799964445823074181488503901546261068862692") + PrecomputedLines[2][172] = emulated.ValueOf[BaseField]("6272874977137170475628881314521834520164802977112863597206461767527978691719236433645395640481127588156828153563372518828973086791188240123830748726657346202491578701145062590487795733410523861316913042654984845940431454041270826") + PrecomputedLines[3][172] = emulated.ValueOf[BaseField]("1491519716322459721476131635974774555179040450041728831056366076429022306831905396756755500249298779816133035692361613992371069670991372872597941652981525923051283306282081842575371025653013841958071420611736931252604211356071193") // i = 171 j = 0 - PrecomputedLines[0][171] = emulated.ValueOf[emulated.BW6761Fp]("6235152558585444833493261246207340539804815046978363622291717651978489706660435740588616632493125821972920945508541635592163696120037180705138229828421746317536693647276274336413212776398698284731916429701610474931192570311724369") - PrecomputedLines[1][171] = emulated.ValueOf[emulated.BW6761Fp]("2242672995139372462518294141548297566108953081821049993780338631576943780891567110286309915075208848428813595805761752053821655145068096776825637230030519832332866845461170464293849009631853717299166685335971374640413019426278822") + PrecomputedLines[0][171] = emulated.ValueOf[BaseField]("6235152558585444833493261246207340539804815046978363622291717651978489706660435740588616632493125821972920945508541635592163696120037180705138229828421746317536693647276274336413212776398698284731916429701610474931192570311724369") + PrecomputedLines[1][171] = emulated.ValueOf[BaseField]("2242672995139372462518294141548297566108953081821049993780338631576943780891567110286309915075208848428813595805761752053821655145068096776825637230030519832332866845461170464293849009631853717299166685335971374640413019426278822") // i = 170 j = 3 - PrecomputedLines[0][170] = emulated.ValueOf[emulated.BW6761Fp]("1429112810826305113526238024068625519617466029256408943654835886511226415318108590963818255082352675735276265680900244338259945649853087097891859279422169569976330990028761011846609181766104569064844095718653016473753086326169683") - PrecomputedLines[1][170] = emulated.ValueOf[emulated.BW6761Fp]("813257970458576737350931150692350224241454191961120910165875211113010579758220571491319151091620887394870103181754304418786013541661782866413149178950930415672806510706468797621548448679182563747650309708282309926241128288673135") - PrecomputedLines[2][170] = emulated.ValueOf[emulated.BW6761Fp]("4615750120910655458062027499234169678376889872550909552027422821903093257029585915682695214715621199838795424793869266363821929915750873802222291947479724423100732276424960820653424133885708067276050345616746879636049613871724548") - PrecomputedLines[3][170] = emulated.ValueOf[emulated.BW6761Fp]("2638402868714127517218145901538866889787798408569326361013240257145955029560417297271208866993745742109396095491575331998333504570744548528767176847869288148827357015366601590545284586737024599703154347220653254040080070976337387") + PrecomputedLines[0][170] = emulated.ValueOf[BaseField]("1429112810826305113526238024068625519617466029256408943654835886511226415318108590963818255082352675735276265680900244338259945649853087097891859279422169569976330990028761011846609181766104569064844095718653016473753086326169683") + PrecomputedLines[1][170] = emulated.ValueOf[BaseField]("813257970458576737350931150692350224241454191961120910165875211113010579758220571491319151091620887394870103181754304418786013541661782866413149178950930415672806510706468797621548448679182563747650309708282309926241128288673135") + PrecomputedLines[2][170] = emulated.ValueOf[BaseField]("4615750120910655458062027499234169678376889872550909552027422821903093257029585915682695214715621199838795424793869266363821929915750873802222291947479724423100732276424960820653424133885708067276050345616746879636049613871724548") + PrecomputedLines[3][170] = emulated.ValueOf[BaseField]("2638402868714127517218145901538866889787798408569326361013240257145955029560417297271208866993745742109396095491575331998333504570744548528767176847869288148827357015366601590545284586737024599703154347220653254040080070976337387") // i = 169 j = 0 - PrecomputedLines[0][169] = emulated.ValueOf[emulated.BW6761Fp]("5151053341945160206168664078810674786626229464615324047316643094827022265609681594014045415804609654596019048771436372513937327411900645278608871991536593143635447460485268900090456257568071987996227531987643282129888289795315787") - PrecomputedLines[1][169] = emulated.ValueOf[emulated.BW6761Fp]("4433808739393296174309455467258529089977837943895638563487610473212932875402456433695523862673003713626322557768899732261336799338902558617024412348901220971079947263098919960666503561149253055091635599396540987777068978448589942") + PrecomputedLines[0][169] = emulated.ValueOf[BaseField]("5151053341945160206168664078810674786626229464615324047316643094827022265609681594014045415804609654596019048771436372513937327411900645278608871991536593143635447460485268900090456257568071987996227531987643282129888289795315787") + PrecomputedLines[1][169] = emulated.ValueOf[BaseField]("4433808739393296174309455467258529089977837943895638563487610473212932875402456433695523862673003713626322557768899732261336799338902558617024412348901220971079947263098919960666503561149253055091635599396540987777068978448589942") // i = 168 j = -3 - PrecomputedLines[0][168] = emulated.ValueOf[emulated.BW6761Fp]("6573223359061173030393223133587057276018849035205508504868826180775040314361353866958802262264508674286374515698526491670274560376396065049758844992950298456959398440073914900051030331074092036623459108691740030899630765167991804") - PrecomputedLines[1][168] = emulated.ValueOf[emulated.BW6761Fp]("433563974948430427145344771367180664437544635785104771951413151629760183394516728212069088933279038869983505880491252805362319646939442623952219790532410824637016808664128139205897840527209397149113432381134849938543997936884322") - PrecomputedLines[2][168] = emulated.ValueOf[emulated.BW6761Fp]("4780438282108523499566089886493747223520600917434700114406865073037482480152520938722159790890960945691254743766968215641137493966211783939811018374792848222347243639100762780690923695318149020751623537076408377114194177696633685") - PrecomputedLines[3][168] = emulated.ValueOf[emulated.BW6761Fp]("4398587526357486098002805624557711076050197843122002073647939149855114862782129256464606723482050274657562960400962939800415311926127759986216984470993028744802713704731703741576155965585649125162356816261139543815225445809074181") + PrecomputedLines[0][168] = emulated.ValueOf[BaseField]("6573223359061173030393223133587057276018849035205508504868826180775040314361353866958802262264508674286374515698526491670274560376396065049758844992950298456959398440073914900051030331074092036623459108691740030899630765167991804") + PrecomputedLines[1][168] = emulated.ValueOf[BaseField]("433563974948430427145344771367180664437544635785104771951413151629760183394516728212069088933279038869983505880491252805362319646939442623952219790532410824637016808664128139205897840527209397149113432381134849938543997936884322") + PrecomputedLines[2][168] = emulated.ValueOf[BaseField]("4780438282108523499566089886493747223520600917434700114406865073037482480152520938722159790890960945691254743766968215641137493966211783939811018374792848222347243639100762780690923695318149020751623537076408377114194177696633685") + PrecomputedLines[3][168] = emulated.ValueOf[BaseField]("4398587526357486098002805624557711076050197843122002073647939149855114862782129256464606723482050274657562960400962939800415311926127759986216984470993028744802713704731703741576155965585649125162356816261139543815225445809074181") // i = 167 j = 0 - PrecomputedLines[0][167] = emulated.ValueOf[emulated.BW6761Fp]("1647664286159942497853030191368343827570740490539376712617435901117835353856034051805911137507399235191594161042407712721047214542679095949784491999942252413102189504539951390607797346810193659400896920380179521693479129340870667") - PrecomputedLines[1][167] = emulated.ValueOf[emulated.BW6761Fp]("2390287243773902242827076870477280124811775106501454290834199465068296153193080900637929806619586936243431863370083347240345585229599137089325914019290067280079041375854153097245939993055850496740464076243793307860295157220489626") + PrecomputedLines[0][167] = emulated.ValueOf[BaseField]("1647664286159942497853030191368343827570740490539376712617435901117835353856034051805911137507399235191594161042407712721047214542679095949784491999942252413102189504539951390607797346810193659400896920380179521693479129340870667") + PrecomputedLines[1][167] = emulated.ValueOf[BaseField]("2390287243773902242827076870477280124811775106501454290834199465068296153193080900637929806619586936243431863370083347240345585229599137089325914019290067280079041375854153097245939993055850496740464076243793307860295157220489626") // i = 166 j = 3 - PrecomputedLines[0][166] = emulated.ValueOf[emulated.BW6761Fp]("1709949524102589335847024052923955037315354604476833601571466852493572947268595108101545007187963974951788163063772644877512200289677146556030347420379930797247490496246244568568366831695984141657359289286221852473683503769654596") - PrecomputedLines[1][166] = emulated.ValueOf[emulated.BW6761Fp]("5893228435550224958157425121741517506045893261892569389741766590829366373878060500577175254669696862906574707093963266493237865832467079001148718602123158286651558066342826773724504656661517285037169488249399183378203836969057275") - PrecomputedLines[2][166] = emulated.ValueOf[emulated.BW6761Fp]("4921983716737681000020818352454095467819829881281876982451644207064948583097442692356739526117975859626329445105576138093211975899941930818396721119247635647664410038740022271464816311809170130035908923628827870553651390809645802") - PrecomputedLines[3][166] = emulated.ValueOf[emulated.BW6761Fp]("5029845452797108141104211578426309150462531240073265769929326427375198592202381636899891851441329434234634550874094633387930815132677505491831139226402537766580191195789214542567421298499734903290553980122172973997208601705231659") + PrecomputedLines[0][166] = emulated.ValueOf[BaseField]("1709949524102589335847024052923955037315354604476833601571466852493572947268595108101545007187963974951788163063772644877512200289677146556030347420379930797247490496246244568568366831695984141657359289286221852473683503769654596") + PrecomputedLines[1][166] = emulated.ValueOf[BaseField]("5893228435550224958157425121741517506045893261892569389741766590829366373878060500577175254669696862906574707093963266493237865832467079001148718602123158286651558066342826773724504656661517285037169488249399183378203836969057275") + PrecomputedLines[2][166] = emulated.ValueOf[BaseField]("4921983716737681000020818352454095467819829881281876982451644207064948583097442692356739526117975859626329445105576138093211975899941930818396721119247635647664410038740022271464816311809170130035908923628827870553651390809645802") + PrecomputedLines[3][166] = emulated.ValueOf[BaseField]("5029845452797108141104211578426309150462531240073265769929326427375198592202381636899891851441329434234634550874094633387930815132677505491831139226402537766580191195789214542567421298499734903290553980122172973997208601705231659") // i = 165 j = 0 - PrecomputedLines[0][165] = emulated.ValueOf[emulated.BW6761Fp]("232572658672356797578043680617364321714987274969275103384954673212085034692277243801536023990339429694630902665031278912607605354670471863738561553739117166877166249283856098435668003254327820655318227276087352237830333067397901") - PrecomputedLines[1][165] = emulated.ValueOf[emulated.BW6761Fp]("1177003727892546832866508390022270538418538637811025906900098412455823364300811651099613431544482191415414696640978119758171995565582917710180141194046220261448537016001183780200162781547581979982676317862484246620865147679291007") + PrecomputedLines[0][165] = emulated.ValueOf[BaseField]("232572658672356797578043680617364321714987274969275103384954673212085034692277243801536023990339429694630902665031278912607605354670471863738561553739117166877166249283856098435668003254327820655318227276087352237830333067397901") + PrecomputedLines[1][165] = emulated.ValueOf[BaseField]("1177003727892546832866508390022270538418538637811025906900098412455823364300811651099613431544482191415414696640978119758171995565582917710180141194046220261448537016001183780200162781547581979982676317862484246620865147679291007") // i = 164 j = 0 - PrecomputedLines[0][164] = emulated.ValueOf[emulated.BW6761Fp]("2349331348722034078094792909294804855570951673402701960283569222334892024519680930010762814852187567219323305147207170737074416468468147497844346987827839689162791474940276610135929682703627664335709075399106574798477419568510404") - PrecomputedLines[1][164] = emulated.ValueOf[emulated.BW6761Fp]("4643592453902905429004614211524140894845659434425593111572454756461288139175970093152918726074460168876790628276619819105484323910842976004056293477403091127131033849251587843923973198464228459201150194269377117357851959140188983") + PrecomputedLines[0][164] = emulated.ValueOf[BaseField]("2349331348722034078094792909294804855570951673402701960283569222334892024519680930010762814852187567219323305147207170737074416468468147497844346987827839689162791474940276610135929682703627664335709075399106574798477419568510404") + PrecomputedLines[1][164] = emulated.ValueOf[BaseField]("4643592453902905429004614211524140894845659434425593111572454756461288139175970093152918726074460168876790628276619819105484323910842976004056293477403091127131033849251587843923973198464228459201150194269377117357851959140188983") // i = 163 j = 3 - PrecomputedLines[0][163] = emulated.ValueOf[emulated.BW6761Fp]("52333827582414640990444534040624682671317644434073521325969166221486850859764683430510421110637534653003049014936771816647586553444768944089642009319835647240758299476088602838239048121990973268096414788580977151073980666905173") - PrecomputedLines[1][163] = emulated.ValueOf[emulated.BW6761Fp]("5006684479864566702650706524533038451782099505978373537938019834872314066037685041434363897742556522136697745017124053405850753653625837991051365133733468176243186518320051581480634917947326031233212380721027184237318081704860647") - PrecomputedLines[2][163] = emulated.ValueOf[emulated.BW6761Fp]("5395654817304820758994256808056443755302607472199986470885449004836905491060935175671751260574929678123841275884311222036169994045893346568582934629470732910646691606254245944852080137051701323813006245299620576672799106022769191") - PrecomputedLines[3][163] = emulated.ValueOf[emulated.BW6761Fp]("650736239870954558727404407995742820117382750229335308197505424837541407737453157093401352116197759550277694567784174548449221820880569998450653552639238746278423134232062947534257012891122077779859567838318586182926302109543544") + PrecomputedLines[0][163] = emulated.ValueOf[BaseField]("52333827582414640990444534040624682671317644434073521325969166221486850859764683430510421110637534653003049014936771816647586553444768944089642009319835647240758299476088602838239048121990973268096414788580977151073980666905173") + PrecomputedLines[1][163] = emulated.ValueOf[BaseField]("5006684479864566702650706524533038451782099505978373537938019834872314066037685041434363897742556522136697745017124053405850753653625837991051365133733468176243186518320051581480634917947326031233212380721027184237318081704860647") + PrecomputedLines[2][163] = emulated.ValueOf[BaseField]("5395654817304820758994256808056443755302607472199986470885449004836905491060935175671751260574929678123841275884311222036169994045893346568582934629470732910646691606254245944852080137051701323813006245299620576672799106022769191") + PrecomputedLines[3][163] = emulated.ValueOf[BaseField]("650736239870954558727404407995742820117382750229335308197505424837541407737453157093401352116197759550277694567784174548449221820880569998450653552639238746278423134232062947534257012891122077779859567838318586182926302109543544") // i = 162 j = 0 - PrecomputedLines[0][162] = emulated.ValueOf[emulated.BW6761Fp]("966717885432164187094459687544853956185577913816048544255971196493117042692563379865241269084260979556031191892848503771930723476206819278309877985692266623192674173120914799472153518381472278820426394303797572079804504184790592") - PrecomputedLines[1][162] = emulated.ValueOf[emulated.BW6761Fp]("3020563500188388877315150135981069820453062660195966231237216820091970048960040900415963172445058143765783985486909755563513372900233756646993726834722183040094649261040765637788368630807503529899998612992257688511729617092599566") + PrecomputedLines[0][162] = emulated.ValueOf[BaseField]("966717885432164187094459687544853956185577913816048544255971196493117042692563379865241269084260979556031191892848503771930723476206819278309877985692266623192674173120914799472153518381472278820426394303797572079804504184790592") + PrecomputedLines[1][162] = emulated.ValueOf[BaseField]("3020563500188388877315150135981069820453062660195966231237216820091970048960040900415963172445058143765783985486909755563513372900233756646993726834722183040094649261040765637788368630807503529899998612992257688511729617092599566") // i = 161 j = 0 - PrecomputedLines[0][161] = emulated.ValueOf[emulated.BW6761Fp]("2723607430772659730961790718447048641080044768560277644165932027404231869402860898365710504322696991333576407490560210763843022332678136578931828844357649891343819627199496798332807949085545953320422192134670525530072902264941810") - PrecomputedLines[1][161] = emulated.ValueOf[emulated.BW6761Fp]("5129647963722466620942267952017113426807349734845472346580002125338862335088074302957583315286637384286504759748385986635964533515779512711081531549908778015105442463377527732867005927843773890731693246823345607932059642142760798") + PrecomputedLines[0][161] = emulated.ValueOf[BaseField]("2723607430772659730961790718447048641080044768560277644165932027404231869402860898365710504322696991333576407490560210763843022332678136578931828844357649891343819627199496798332807949085545953320422192134670525530072902264941810") + PrecomputedLines[1][161] = emulated.ValueOf[BaseField]("5129647963722466620942267952017113426807349734845472346580002125338862335088074302957583315286637384286504759748385986635964533515779512711081531549908778015105442463377527732867005927843773890731693246823345607932059642142760798") // i = 160 j = 0 - PrecomputedLines[0][160] = emulated.ValueOf[emulated.BW6761Fp]("4577081852725837198311485026729893776093048114534072194182826126558577801376180078853990029623202669787826337303348968528811571259730377323605351607188692812693591153711457444300581467449173000389674163550804048515753424541817422") - PrecomputedLines[1][160] = emulated.ValueOf[emulated.BW6761Fp]("6823267443517190019085934072639764787968936714958209215443747270739622300855648847686288401398497539575198945858259391975943073313266494176351501686559627127468167527194301984132678997501550728894241645116121821284329222527177962") + PrecomputedLines[0][160] = emulated.ValueOf[BaseField]("4577081852725837198311485026729893776093048114534072194182826126558577801376180078853990029623202669787826337303348968528811571259730377323605351607188692812693591153711457444300581467449173000389674163550804048515753424541817422") + PrecomputedLines[1][160] = emulated.ValueOf[BaseField]("6823267443517190019085934072639764787968936714958209215443747270739622300855648847686288401398497539575198945858259391975943073313266494176351501686559627127468167527194301984132678997501550728894241645116121821284329222527177962") // i = 159 j = -3 - PrecomputedLines[0][159] = emulated.ValueOf[emulated.BW6761Fp]("324666234286344014142243331706963725161768120676466297357473498737699334487145813076943214189021251649111237638123254146524201058991160673739004317499134741949534700426970766872442991803079017288149670074860050490378349499214790") - PrecomputedLines[1][159] = emulated.ValueOf[emulated.BW6761Fp]("6636617842236151333529964795471565361123586529270909295929312662528628437720181288422740806930288827619317815525172605840744493547399413754001814728110749523835116156866350602345640678920229273484885229046952992387064993457157436") - PrecomputedLines[2][159] = emulated.ValueOf[emulated.BW6761Fp]("1169179279619239804760750507913447876532533844848139969203384466214658111893717691761594819542977135521349003566911643497169771797238574098650840878350350576524995523069126926065245425919471114523133443004728427891243447229624997") - PrecomputedLines[3][159] = emulated.ValueOf[emulated.BW6761Fp]("2390427752410237822703140443565386259958384606729063432115446405419710053220952184622592611083931480113986415359456896163696394246582897076631508221080761843074406385325595566132184951204637527250104024067754267802701541998679557") + PrecomputedLines[0][159] = emulated.ValueOf[BaseField]("324666234286344014142243331706963725161768120676466297357473498737699334487145813076943214189021251649111237638123254146524201058991160673739004317499134741949534700426970766872442991803079017288149670074860050490378349499214790") + PrecomputedLines[1][159] = emulated.ValueOf[BaseField]("6636617842236151333529964795471565361123586529270909295929312662528628437720181288422740806930288827619317815525172605840744493547399413754001814728110749523835116156866350602345640678920229273484885229046952992387064993457157436") + PrecomputedLines[2][159] = emulated.ValueOf[BaseField]("1169179279619239804760750507913447876532533844848139969203384466214658111893717691761594819542977135521349003566911643497169771797238574098650840878350350576524995523069126926065245425919471114523133443004728427891243447229624997") + PrecomputedLines[3][159] = emulated.ValueOf[BaseField]("2390427752410237822703140443565386259958384606729063432115446405419710053220952184622592611083931480113986415359456896163696394246582897076631508221080761843074406385325595566132184951204637527250104024067754267802701541998679557") // i = 158 j = 0 - PrecomputedLines[0][158] = emulated.ValueOf[emulated.BW6761Fp]("3491904621617458570467400788193922471061198912031461784747449931748081025059466670568428332079097896613569081003140863723140077212586281756178360708378112359111486236347800618246901043921316993513560276265805960807878983619245559") - PrecomputedLines[1][158] = emulated.ValueOf[emulated.BW6761Fp]("417856161039822250074025130344193295614063765635472298026365759996884135822621963191274082696570821282309331068298315248982310647089513266052159284058406772587255082241693604593372878764622714817790390306552672168290744941573972") + PrecomputedLines[0][158] = emulated.ValueOf[BaseField]("3491904621617458570467400788193922471061198912031461784747449931748081025059466670568428332079097896613569081003140863723140077212586281756178360708378112359111486236347800618246901043921316993513560276265805960807878983619245559") + PrecomputedLines[1][158] = emulated.ValueOf[BaseField]("417856161039822250074025130344193295614063765635472298026365759996884135822621963191274082696570821282309331068298315248982310647089513266052159284058406772587255082241693604593372878764622714817790390306552672168290744941573972") // i = 157 j = 3 - PrecomputedLines[0][157] = emulated.ValueOf[emulated.BW6761Fp]("4416768778599945461484847862340231334711151920303921966291479519171793363978734600584343456569070959362086842259460846000247532597524419720784251527346762651605556856226230166708907343085002581478167277794058294334559739054882282") - PrecomputedLines[1][157] = emulated.ValueOf[emulated.BW6761Fp]("1852250632907130188790893656467026455875589500512379999240781207064612732149124265752964795049049985863460565553287636692334980501445894984189522931023218131754348919092652254131161270167055415009583904450484090003403007608216201") - PrecomputedLines[2][157] = emulated.ValueOf[emulated.BW6761Fp]("6419587158487718559878776704806672864160369506950210711711280857313527636662817583186572880263258124425113400796353147829983523112230494675357910189445382699469684963105565162531093198544478048674343136597682281113733105381561484") - PrecomputedLines[3][157] = emulated.ValueOf[emulated.BW6761Fp]("3722521298055602645113974315645129742353660711003216708553366823782751701485535270778468429985655461253844592752384773735943768616708965636222693924487722919702682456701829091211690631752269481530604403689987227114111118801741291") + PrecomputedLines[0][157] = emulated.ValueOf[BaseField]("4416768778599945461484847862340231334711151920303921966291479519171793363978734600584343456569070959362086842259460846000247532597524419720784251527346762651605556856226230166708907343085002581478167277794058294334559739054882282") + PrecomputedLines[1][157] = emulated.ValueOf[BaseField]("1852250632907130188790893656467026455875589500512379999240781207064612732149124265752964795049049985863460565553287636692334980501445894984189522931023218131754348919092652254131161270167055415009583904450484090003403007608216201") + PrecomputedLines[2][157] = emulated.ValueOf[BaseField]("6419587158487718559878776704806672864160369506950210711711280857313527636662817583186572880263258124425113400796353147829983523112230494675357910189445382699469684963105565162531093198544478048674343136597682281113733105381561484") + PrecomputedLines[3][157] = emulated.ValueOf[BaseField]("3722521298055602645113974315645129742353660711003216708553366823782751701485535270778468429985655461253844592752384773735943768616708965636222693924487722919702682456701829091211690631752269481530604403689987227114111118801741291") // i = 156 j = 0 - PrecomputedLines[0][156] = emulated.ValueOf[emulated.BW6761Fp]("5545397166873684773113053583641661672108126538637820134423766600317555663306128116352446557181332464485047243194281156743833711442696272262603883214065623959398816145024510953571106836545478602195020059304848842043236857015989475") - PrecomputedLines[1][156] = emulated.ValueOf[emulated.BW6761Fp]("2021590172970888707299215336977681125009536065721635254366967178736120889484508938106586665954402299023024059935122342894157282324534073308900827186536479866968034667597034915763748285429919026521587470306288580300219266936435751") + PrecomputedLines[0][156] = emulated.ValueOf[BaseField]("5545397166873684773113053583641661672108126538637820134423766600317555663306128116352446557181332464485047243194281156743833711442696272262603883214065623959398816145024510953571106836545478602195020059304848842043236857015989475") + PrecomputedLines[1][156] = emulated.ValueOf[BaseField]("2021590172970888707299215336977681125009536065721635254366967178736120889484508938106586665954402299023024059935122342894157282324534073308900827186536479866968034667597034915763748285429919026521587470306288580300219266936435751") // i = 155 j = -3 - PrecomputedLines[0][155] = emulated.ValueOf[emulated.BW6761Fp]("2016865517214075442991619362432436346237505752533125825957302068177615343035502121762958126205312972599032371564787346477939284797660841551376056858103023635292164833972540987459452711445577182426858038678074119933397740796188486") - PrecomputedLines[1][155] = emulated.ValueOf[emulated.BW6761Fp]("4921345336829462778422198035628471967952412359162858241819721707968328922396138974134758163031865261007952041010331403775328345606360716582715294577475815722137271438236084963126900294584198188573469683598274793001598489599256460") - PrecomputedLines[2][155] = emulated.ValueOf[emulated.BW6761Fp]("5452289706620705804122345049563462587304628763777977219263610747055789773510449643975645265547749639659444244640337694551203034035261233368893792061960538755835274166778837905048877917573980193672340922379035547913555181646229675") - PrecomputedLines[3][155] = emulated.ValueOf[emulated.BW6761Fp]("5330445646284714072427223464819908250873719099893171438520402130309158016777695740685710535487563917271490762774254768988035428482089657277539422521799971990067449345899767156841349406799431919183289922328930736393420384380134402") + PrecomputedLines[0][155] = emulated.ValueOf[BaseField]("2016865517214075442991619362432436346237505752533125825957302068177615343035502121762958126205312972599032371564787346477939284797660841551376056858103023635292164833972540987459452711445577182426858038678074119933397740796188486") + PrecomputedLines[1][155] = emulated.ValueOf[BaseField]("4921345336829462778422198035628471967952412359162858241819721707968328922396138974134758163031865261007952041010331403775328345606360716582715294577475815722137271438236084963126900294584198188573469683598274793001598489599256460") + PrecomputedLines[2][155] = emulated.ValueOf[BaseField]("5452289706620705804122345049563462587304628763777977219263610747055789773510449643975645265547749639659444244640337694551203034035261233368893792061960538755835274166778837905048877917573980193672340922379035547913555181646229675") + PrecomputedLines[3][155] = emulated.ValueOf[BaseField]("5330445646284714072427223464819908250873719099893171438520402130309158016777695740685710535487563917271490762774254768988035428482089657277539422521799971990067449345899767156841349406799431919183289922328930736393420384380134402") // i = 154 j = 0 - PrecomputedLines[0][154] = emulated.ValueOf[emulated.BW6761Fp]("253912214657176650779918926993734061117688943036911490719333378236618949753645725163602990742193281812052940313043489777988352564974178451182405372274947126939291999108991745538124642855162625248568122897774021118657024053312683") - PrecomputedLines[1][154] = emulated.ValueOf[emulated.BW6761Fp]("90454792504233772539673107359188540647097721046630177682340822562308368630868281445493887876764666553007223881517444670503149218141008821745056939702373642828660491180908094902056900653734980980380688909835110896102319539002977") + PrecomputedLines[0][154] = emulated.ValueOf[BaseField]("253912214657176650779918926993734061117688943036911490719333378236618949753645725163602990742193281812052940313043489777988352564974178451182405372274947126939291999108991745538124642855162625248568122897774021118657024053312683") + PrecomputedLines[1][154] = emulated.ValueOf[BaseField]("90454792504233772539673107359188540647097721046630177682340822562308368630868281445493887876764666553007223881517444670503149218141008821745056939702373642828660491180908094902056900653734980980380688909835110896102319539002977") // i = 153 j = 0 - PrecomputedLines[0][153] = emulated.ValueOf[emulated.BW6761Fp]("6028738756457492013157559987618981254929533455069995957583780714104521228354324336665057575842907015569076760475281374260515946359427739417293714745131308832966623853621805462030358839593520487417623566459988488074177330491690115") - PrecomputedLines[1][153] = emulated.ValueOf[emulated.BW6761Fp]("1631726893290625522967477247480127881963815714733592087840583915245097436988929044123570137356058690088183128562372529403839139498072059028902685488333113667077839046050085914776299141708527188673659500983012708933861459824370354") + PrecomputedLines[0][153] = emulated.ValueOf[BaseField]("6028738756457492013157559987618981254929533455069995957583780714104521228354324336665057575842907015569076760475281374260515946359427739417293714745131308832966623853621805462030358839593520487417623566459988488074177330491690115") + PrecomputedLines[1][153] = emulated.ValueOf[BaseField]("1631726893290625522967477247480127881963815714733592087840583915245097436988929044123570137356058690088183128562372529403839139498072059028902685488333113667077839046050085914776299141708527188673659500983012708933861459824370354") // i = 152 j = -3 - PrecomputedLines[0][152] = emulated.ValueOf[emulated.BW6761Fp]("5933803588081086836643239680396970245259265430854718440369458799593483447844770571690936853076432836031619939245130596952627136235619761911719664250570429698192340677267247016627691113223709288555832534009759604452293307865143494") - PrecomputedLines[1][152] = emulated.ValueOf[emulated.BW6761Fp]("5550204757083904566420810705852033305679349032748397343293761160397094554860340453829269107483927221899278788731018461771943481285186546907778589805772690228002061319154636587342918455042668146557380849513813601461971655743687056") - PrecomputedLines[2][152] = emulated.ValueOf[emulated.BW6761Fp]("5429392460871260615699079029883938895836745062461512650968419621941700112039072543911058280706056517701803479157512850062007543761793301890234430901759239345753853600059003936486418961130146759088508684002234349028962962738685068") - PrecomputedLines[3][152] = emulated.ValueOf[emulated.BW6761Fp]("215901435142930451312237140515151372543713525366036765710265909611361979775752756507445753622709378297284041357450332076126978470060269809606181904660211968469485287903524957875773224720255771036744293584738133055279492104737994") + PrecomputedLines[0][152] = emulated.ValueOf[BaseField]("5933803588081086836643239680396970245259265430854718440369458799593483447844770571690936853076432836031619939245130596952627136235619761911719664250570429698192340677267247016627691113223709288555832534009759604452293307865143494") + PrecomputedLines[1][152] = emulated.ValueOf[BaseField]("5550204757083904566420810705852033305679349032748397343293761160397094554860340453829269107483927221899278788731018461771943481285186546907778589805772690228002061319154636587342918455042668146557380849513813601461971655743687056") + PrecomputedLines[2][152] = emulated.ValueOf[BaseField]("5429392460871260615699079029883938895836745062461512650968419621941700112039072543911058280706056517701803479157512850062007543761793301890234430901759239345753853600059003936486418961130146759088508684002234349028962962738685068") + PrecomputedLines[3][152] = emulated.ValueOf[BaseField]("215901435142930451312237140515151372543713525366036765710265909611361979775752756507445753622709378297284041357450332076126978470060269809606181904660211968469485287903524957875773224720255771036744293584738133055279492104737994") // i = 151 j = 0 - PrecomputedLines[0][151] = emulated.ValueOf[emulated.BW6761Fp]("2217293244223503800342403802356275665761021417440395243162100358918795095532458487975221684743329261847466915573304126110010215444704511730329892139369564310926788959661698224464272668381456474342031548863057544802188409502254976") - PrecomputedLines[1][151] = emulated.ValueOf[emulated.BW6761Fp]("3032194119911089122528491590697665117123806514556903354257236683855345124475823193585527248686809547112579726301073625230584295621251331002111854329737234183946579207765098307179350519051519256775154498600279600797852210708198376") + PrecomputedLines[0][151] = emulated.ValueOf[BaseField]("2217293244223503800342403802356275665761021417440395243162100358918795095532458487975221684743329261847466915573304126110010215444704511730329892139369564310926788959661698224464272668381456474342031548863057544802188409502254976") + PrecomputedLines[1][151] = emulated.ValueOf[BaseField]("3032194119911089122528491590697665117123806514556903354257236683855345124475823193585527248686809547112579726301073625230584295621251331002111854329737234183946579207765098307179350519051519256775154498600279600797852210708198376") // i = 150 j = 0 - PrecomputedLines[0][150] = emulated.ValueOf[emulated.BW6761Fp]("3317725176190874681964926700784232223615994993578507763097512731747224333990127117353469138689288343877122942681200365845677839967780121222325648610973030551825533993376537297018053710863282315262763507163658751165792166003247917") - PrecomputedLines[1][150] = emulated.ValueOf[emulated.BW6761Fp]("5311779975568348866438266113993956098697070498926704949763810071482344968514706381575287770513988277963044893761326124770442604005626456815424800417298954303878320163148098474713806918505566913500600776461117972760217108510400910") + PrecomputedLines[0][150] = emulated.ValueOf[BaseField]("3317725176190874681964926700784232223615994993578507763097512731747224333990127117353469138689288343877122942681200365845677839967780121222325648610973030551825533993376537297018053710863282315262763507163658751165792166003247917") + PrecomputedLines[1][150] = emulated.ValueOf[BaseField]("5311779975568348866438266113993956098697070498926704949763810071482344968514706381575287770513988277963044893761326124770442604005626456815424800417298954303878320163148098474713806918505566913500600776461117972760217108510400910") // i = 149 j = 0 - PrecomputedLines[0][149] = emulated.ValueOf[emulated.BW6761Fp]("415155167990909811773274527448565627660867339446865646154781434352236186331864123798900488790219924256132831458276407042546585642359457666570994480814911450794692261305789559623175773270786604043226061133341558724866809936660719") - PrecomputedLines[1][149] = emulated.ValueOf[emulated.BW6761Fp]("5132669865916179457696452861924723931652065582428728251052829101967757160674775905534892979784141098082940401101234100043172892634948165525152188787897019723204057104822162990347257969957048742649064916404071127374631731037783787") + PrecomputedLines[0][149] = emulated.ValueOf[BaseField]("415155167990909811773274527448565627660867339446865646154781434352236186331864123798900488790219924256132831458276407042546585642359457666570994480814911450794692261305789559623175773270786604043226061133341558724866809936660719") + PrecomputedLines[1][149] = emulated.ValueOf[BaseField]("5132669865916179457696452861924723931652065582428728251052829101967757160674775905534892979784141098082940401101234100043172892634948165525152188787897019723204057104822162990347257969957048742649064916404071127374631731037783787") // i = 148 j = 3 - PrecomputedLines[0][148] = emulated.ValueOf[emulated.BW6761Fp]("4140004734327878216201045763193531111409413457779764546283946394296932495071554746768260262011715289440991089370686959220415992218328800724536628417686911729756470325374372983040533731696917966729370346256691263147315029964417433") - PrecomputedLines[1][148] = emulated.ValueOf[emulated.BW6761Fp]("5178761700027705413555156019361934121977511563684255818901017175838012722352349528434988833378110316523353798871708165886738677088272124845182724155472081107868405450423263348442225855283938083889870097371759935545657257393660743") - PrecomputedLines[2][148] = emulated.ValueOf[emulated.BW6761Fp]("4695923425938084215087822823878724487099638070602575187528539251307287838561931020132982664450582460622253248261068258993590911594659794278303802029261890344535175816521628380905890439052026981269530236011516177022689249116647786") - PrecomputedLines[3][148] = emulated.ValueOf[emulated.BW6761Fp]("83528947143211173825194412878697539272293480449701172031899761574582354182272541367121649048326072317795681794964152795904204202564610458519701137277940395274219699446009240947218090898932240186508194787221672254383477999336292") + PrecomputedLines[0][148] = emulated.ValueOf[BaseField]("4140004734327878216201045763193531111409413457779764546283946394296932495071554746768260262011715289440991089370686959220415992218328800724536628417686911729756470325374372983040533731696917966729370346256691263147315029964417433") + PrecomputedLines[1][148] = emulated.ValueOf[BaseField]("5178761700027705413555156019361934121977511563684255818901017175838012722352349528434988833378110316523353798871708165886738677088272124845182724155472081107868405450423263348442225855283938083889870097371759935545657257393660743") + PrecomputedLines[2][148] = emulated.ValueOf[BaseField]("4695923425938084215087822823878724487099638070602575187528539251307287838561931020132982664450582460622253248261068258993590911594659794278303802029261890344535175816521628380905890439052026981269530236011516177022689249116647786") + PrecomputedLines[3][148] = emulated.ValueOf[BaseField]("83528947143211173825194412878697539272293480449701172031899761574582354182272541367121649048326072317795681794964152795904204202564610458519701137277940395274219699446009240947218090898932240186508194787221672254383477999336292") // i = 147 j = 0 - PrecomputedLines[0][147] = emulated.ValueOf[emulated.BW6761Fp]("151330053509034414994578636429425902053986786209892471274991525950831207463597520422983269342506983481008826046782392196380970176079709382608576483491871347753616020923167675319120990845115558945083570810266672945358625888108975") - PrecomputedLines[1][147] = emulated.ValueOf[emulated.BW6761Fp]("5167491934529740282963729196518203437756002188349193552571241004047127958410940743196333385903439868011966656948604086680076339273646285728893389483436487495087981055968161190372633493259530748320012260258671783021341427233010876") + PrecomputedLines[0][147] = emulated.ValueOf[BaseField]("151330053509034414994578636429425902053986786209892471274991525950831207463597520422983269342506983481008826046782392196380970176079709382608576483491871347753616020923167675319120990845115558945083570810266672945358625888108975") + PrecomputedLines[1][147] = emulated.ValueOf[BaseField]("5167491934529740282963729196518203437756002188349193552571241004047127958410940743196333385903439868011966656948604086680076339273646285728893389483436487495087981055968161190372633493259530748320012260258671783021341427233010876") // i = 146 j = 0 - PrecomputedLines[0][146] = emulated.ValueOf[emulated.BW6761Fp]("1114470723805581119184572097688824076189102046592493285463120237308793702368235633939040330876356116630125837423184649276149246843910103071261490581616432947384638209879233093598840409201085659072783743986568100816590424861898608") - PrecomputedLines[1][146] = emulated.ValueOf[emulated.BW6761Fp]("6478777454598824156094943494586967960469393198794904011417099271970302029910680845103571038668910097824920386480718598598173544918091048834436449425890641609187952938773707865251723261486358437197859060313186213189210893005143284") + PrecomputedLines[0][146] = emulated.ValueOf[BaseField]("1114470723805581119184572097688824076189102046592493285463120237308793702368235633939040330876356116630125837423184649276149246843910103071261490581616432947384638209879233093598840409201085659072783743986568100816590424861898608") + PrecomputedLines[1][146] = emulated.ValueOf[BaseField]("6478777454598824156094943494586967960469393198794904011417099271970302029910680845103571038668910097824920386480718598598173544918091048834436449425890641609187952938773707865251723261486358437197859060313186213189210893005143284") // i = 145 j = -3 - PrecomputedLines[0][145] = emulated.ValueOf[emulated.BW6761Fp]("5859048622402069660036399935093585979604387754240347020221644378577333395030687729583771272159017531113058916586134938926883652393431747789333732232766810000369351298331399490404676517013544774690353892825693625562225579232134104") - PrecomputedLines[1][145] = emulated.ValueOf[emulated.BW6761Fp]("5130546493861392794307807336052690029200583399365091783170538676884818669069412208829663181252666936935600613069111913888311401666154773585381780173937110082909600581595352660767798085758658916528837369630263916920834131646570216") - PrecomputedLines[2][145] = emulated.ValueOf[emulated.BW6761Fp]("2108411833057507512223957404319309047383861110883456473273524034749089770620099048622453493049814509579167338063647043613852813952598011253428280877972494566190259092437580681150999842418960600345792711661706349548971961797181565") - PrecomputedLines[3][145] = emulated.ValueOf[emulated.BW6761Fp]("708505628301545791337509871984655495035967667250979838482537030174702586032171072906665305184787620631564903687145362843392236437965976088144658101185950961085417107422270026571519877928676536019489776985913311663627609273904453") + PrecomputedLines[0][145] = emulated.ValueOf[BaseField]("5859048622402069660036399935093585979604387754240347020221644378577333395030687729583771272159017531113058916586134938926883652393431747789333732232766810000369351298331399490404676517013544774690353892825693625562225579232134104") + PrecomputedLines[1][145] = emulated.ValueOf[BaseField]("5130546493861392794307807336052690029200583399365091783170538676884818669069412208829663181252666936935600613069111913888311401666154773585381780173937110082909600581595352660767798085758658916528837369630263916920834131646570216") + PrecomputedLines[2][145] = emulated.ValueOf[BaseField]("2108411833057507512223957404319309047383861110883456473273524034749089770620099048622453493049814509579167338063647043613852813952598011253428280877972494566190259092437580681150999842418960600345792711661706349548971961797181565") + PrecomputedLines[3][145] = emulated.ValueOf[BaseField]("708505628301545791337509871984655495035967667250979838482537030174702586032171072906665305184787620631564903687145362843392236437965976088144658101185950961085417107422270026571519877928676536019489776985913311663627609273904453") // i = 144 j = 0 - PrecomputedLines[0][144] = emulated.ValueOf[emulated.BW6761Fp]("1110693141506833443806812185356385657611154222022956119590162362046526185899629723001989265777826816933834594500045594892823893494919273443552937721223945431485877663287749801345271403238264692363210636517643455903357602891457290") - PrecomputedLines[1][144] = emulated.ValueOf[emulated.BW6761Fp]("603929437399447291214728195951492966191103124355063750553076589829671952973145516286561956436266736365337087448302435015635010597001789338483106033528008186612669695616779426601106014489886431783937516089415892537636015452587873") + PrecomputedLines[0][144] = emulated.ValueOf[BaseField]("1110693141506833443806812185356385657611154222022956119590162362046526185899629723001989265777826816933834594500045594892823893494919273443552937721223945431485877663287749801345271403238264692363210636517643455903357602891457290") + PrecomputedLines[1][144] = emulated.ValueOf[BaseField]("603929437399447291214728195951492966191103124355063750553076589829671952973145516286561956436266736365337087448302435015635010597001789338483106033528008186612669695616779426601106014489886431783937516089415892537636015452587873") // i = 143 j = 0 - PrecomputedLines[0][143] = emulated.ValueOf[emulated.BW6761Fp]("1486313396257225319276454417156949032235657107769651771999072596075215391850952818655646828707669204590200946140222685601763062865837088768474997694507956127217411232824640625777584603274979885819664470425193993045396278061554670") - PrecomputedLines[1][143] = emulated.ValueOf[emulated.BW6761Fp]("5900091056252635525061247890639784854912554186160436040691327117040239450463401250320405408025474934781221398674442720989333863513889420429293126000723066765887369389159668421318382662346470829811188424370478317951507216345256643") + PrecomputedLines[0][143] = emulated.ValueOf[BaseField]("1486313396257225319276454417156949032235657107769651771999072596075215391850952818655646828707669204590200946140222685601763062865837088768474997694507956127217411232824640625777584603274979885819664470425193993045396278061554670") + PrecomputedLines[1][143] = emulated.ValueOf[BaseField]("5900091056252635525061247890639784854912554186160436040691327117040239450463401250320405408025474934781221398674442720989333863513889420429293126000723066765887369389159668421318382662346470829811188424370478317951507216345256643") // i = 142 j = 0 - PrecomputedLines[0][142] = emulated.ValueOf[emulated.BW6761Fp]("2792214896204349446812807850849074442364083133360182878815559121269639917337029363471023254536409861081182182842928669453464821839537737772926644433219600872696347238197912222306544693056149978277507630422064429186112081667145266") - PrecomputedLines[1][142] = emulated.ValueOf[emulated.BW6761Fp]("3944833749529436605658652267849673696497888958101001890165078244794151784397599858860254268537666046558802898859348382115556708759230970010852200503643863189853426075395343165134428906535715936830920322947079380746476083547373561") + PrecomputedLines[0][142] = emulated.ValueOf[BaseField]("2792214896204349446812807850849074442364083133360182878815559121269639917337029363471023254536409861081182182842928669453464821839537737772926644433219600872696347238197912222306544693056149978277507630422064429186112081667145266") + PrecomputedLines[1][142] = emulated.ValueOf[BaseField]("3944833749529436605658652267849673696497888958101001890165078244794151784397599858860254268537666046558802898859348382115556708759230970010852200503643863189853426075395343165134428906535715936830920322947079380746476083547373561") // i = 141 j = 0 - PrecomputedLines[0][141] = emulated.ValueOf[emulated.BW6761Fp]("417856790372798077015113846490617233071837258253813598704739825574397265998748349018546952531836869989491058332284609105381556940328508752945025067012370823786220503025032772358278513253286721537773229007859176953964580903195727") - PrecomputedLines[1][141] = emulated.ValueOf[emulated.BW6761Fp]("3212095295566726705955520648736709733214732630239873901431866202929498890238143597713014321210267543461754987631611427191371921286136904225726012666396381699549816558028560296677824912419015468670527904167438613604543861012490881") + PrecomputedLines[0][141] = emulated.ValueOf[BaseField]("417856790372798077015113846490617233071837258253813598704739825574397265998748349018546952531836869989491058332284609105381556940328508752945025067012370823786220503025032772358278513253286721537773229007859176953964580903195727") + PrecomputedLines[1][141] = emulated.ValueOf[BaseField]("3212095295566726705955520648736709733214732630239873901431866202929498890238143597713014321210267543461754987631611427191371921286136904225726012666396381699549816558028560296677824912419015468670527904167438613604543861012490881") // i = 140 j = -3 - PrecomputedLines[0][140] = emulated.ValueOf[emulated.BW6761Fp]("6454652960715100287228837394962613813864449960018709130892915714253696419021214154832054652581717272410134436821903319869939794983804221461689920428475008780101250011049231364935669307075928640376378229913679881637394701636737270") - PrecomputedLines[1][140] = emulated.ValueOf[emulated.BW6761Fp]("4330478820859849211086998075624162533796478046322369047534830098235600627275134989518159311577872109499354455070789488270437693314611100870115090161624057461733224827616650657400092680610335909558941615999861146131436385364638808") - PrecomputedLines[2][140] = emulated.ValueOf[emulated.BW6761Fp]("858293139758627108215187205269437801824125169052800366429342716136717086471757029929438123993480089882929860186241630315111576602418646305030928478620782188276456539301601359470127933194535982283045054240161101411651017048286627") - PrecomputedLines[3][140] = emulated.ValueOf[emulated.BW6761Fp]("5227206335183556341740750730697286334874771364666852277057794888432894496595221781561994053642178607365548748041278338868871460536603201138958142818647966045713904898925900602596824373321003503289242417763131324999615120446619142") + PrecomputedLines[0][140] = emulated.ValueOf[BaseField]("6454652960715100287228837394962613813864449960018709130892915714253696419021214154832054652581717272410134436821903319869939794983804221461689920428475008780101250011049231364935669307075928640376378229913679881637394701636737270") + PrecomputedLines[1][140] = emulated.ValueOf[BaseField]("4330478820859849211086998075624162533796478046322369047534830098235600627275134989518159311577872109499354455070789488270437693314611100870115090161624057461733224827616650657400092680610335909558941615999861146131436385364638808") + PrecomputedLines[2][140] = emulated.ValueOf[BaseField]("858293139758627108215187205269437801824125169052800366429342716136717086471757029929438123993480089882929860186241630315111576602418646305030928478620782188276456539301601359470127933194535982283045054240161101411651017048286627") + PrecomputedLines[3][140] = emulated.ValueOf[BaseField]("5227206335183556341740750730697286334874771364666852277057794888432894496595221781561994053642178607365548748041278338868871460536603201138958142818647966045713904898925900602596824373321003503289242417763131324999615120446619142") // i = 139 j = 0 - PrecomputedLines[0][139] = emulated.ValueOf[emulated.BW6761Fp]("6061183520623123725589769021285572001479789372351644764609461692939780384165064167719928513044495562706770395832575876513874629527231851623713680740316664822309168015470185638170819110129556875969482829992633944123125377558202569") - PrecomputedLines[1][139] = emulated.ValueOf[emulated.BW6761Fp]("6638743522580856341158564937403879228051631568619778907717013129201344333030523763340630776780970212886218386113539324071014532332375465792484714829314652990224787865019761417248495535237113451295259942116314962267177857737645266") + PrecomputedLines[0][139] = emulated.ValueOf[BaseField]("6061183520623123725589769021285572001479789372351644764609461692939780384165064167719928513044495562706770395832575876513874629527231851623713680740316664822309168015470185638170819110129556875969482829992633944123125377558202569") + PrecomputedLines[1][139] = emulated.ValueOf[BaseField]("6638743522580856341158564937403879228051631568619778907717013129201344333030523763340630776780970212886218386113539324071014532332375465792484714829314652990224787865019761417248495535237113451295259942116314962267177857737645266") // i = 138 j = -3 - PrecomputedLines[0][138] = emulated.ValueOf[emulated.BW6761Fp]("4613201178001957129220355825431588428522349943345108194412238432864585090458272273751900747338897976889754065236440077466509756318978363238292987387245777302440033792016880363771237380814734752042079287291688686090965516430849448") - PrecomputedLines[1][138] = emulated.ValueOf[emulated.BW6761Fp]("1665407548870793045474076587401340889263185099880576303565184262174562655936391826075556576588193249562650706614327662566000797730855714827683876175311660437080511764204863560130199676589127312887632418700943424352628228848843582") - PrecomputedLines[2][138] = emulated.ValueOf[emulated.BW6761Fp]("1655914238938042682721551953036253645052537746651874939938037114097148347201468500148537117382150061034475405427296650617729834662783132704955872642876325349014004370043171807288606000041903234533546215958118359510613083090230570") - PrecomputedLines[3][138] = emulated.ValueOf[emulated.BW6761Fp]("4849745136522473566966399310625020500289818714428592684220005115425817386657142570582575781909747557971016323109154388103509887878174433513364641252184356415172199372371474037346808680920949717207937405738624457011320349705365166") + PrecomputedLines[0][138] = emulated.ValueOf[BaseField]("4613201178001957129220355825431588428522349943345108194412238432864585090458272273751900747338897976889754065236440077466509756318978363238292987387245777302440033792016880363771237380814734752042079287291688686090965516430849448") + PrecomputedLines[1][138] = emulated.ValueOf[BaseField]("1665407548870793045474076587401340889263185099880576303565184262174562655936391826075556576588193249562650706614327662566000797730855714827683876175311660437080511764204863560130199676589127312887632418700943424352628228848843582") + PrecomputedLines[2][138] = emulated.ValueOf[BaseField]("1655914238938042682721551953036253645052537746651874939938037114097148347201468500148537117382150061034475405427296650617729834662783132704955872642876325349014004370043171807288606000041903234533546215958118359510613083090230570") + PrecomputedLines[3][138] = emulated.ValueOf[BaseField]("4849745136522473566966399310625020500289818714428592684220005115425817386657142570582575781909747557971016323109154388103509887878174433513364641252184356415172199372371474037346808680920949717207937405738624457011320349705365166") // i = 137 j = 0 - PrecomputedLines[0][137] = emulated.ValueOf[emulated.BW6761Fp]("901736082201449083754819885340801075704408863998813128158005442577313496494289416471869404758956530411763940080091857539300845778190660401951269041409695446928577309363369775219696459229579351565985855170562488979593152186976780") - PrecomputedLines[1][137] = emulated.ValueOf[emulated.BW6761Fp]("1001009910919327523032462813652578972145867187256987285583595342347716674065364382437719001411863024220494990944043998634009881763715881903122679211258938475917286800934054659626133958862607032250059477031442995482587302562197710") + PrecomputedLines[0][137] = emulated.ValueOf[BaseField]("901736082201449083754819885340801075704408863998813128158005442577313496494289416471869404758956530411763940080091857539300845778190660401951269041409695446928577309363369775219696459229579351565985855170562488979593152186976780") + PrecomputedLines[1][137] = emulated.ValueOf[BaseField]("1001009910919327523032462813652578972145867187256987285583595342347716674065364382437719001411863024220494990944043998634009881763715881903122679211258938475917286800934054659626133958862607032250059477031442995482587302562197710") // i = 136 j = 0 - PrecomputedLines[0][136] = emulated.ValueOf[emulated.BW6761Fp]("1260704208583585454923573340419048846830684418938706770827984464987809006471346576124097325137037851487326970768765206484805325033050293845686253143665118237882360616375617892187324896995348006498509282714830651433149367764383338") - PrecomputedLines[1][136] = emulated.ValueOf[emulated.BW6761Fp]("4146904343070780886774548283636255552210562066782568724140086706931842548150893909742775877375612341303901723683529979271573649898254285900026209098018635582129262100543849831967889807912740957081744133511298450256079900667190703") + PrecomputedLines[0][136] = emulated.ValueOf[BaseField]("1260704208583585454923573340419048846830684418938706770827984464987809006471346576124097325137037851487326970768765206484805325033050293845686253143665118237882360616375617892187324896995348006498509282714830651433149367764383338") + PrecomputedLines[1][136] = emulated.ValueOf[BaseField]("4146904343070780886774548283636255552210562066782568724140086706931842548150893909742775877375612341303901723683529979271573649898254285900026209098018635582129262100543849831967889807912740957081744133511298450256079900667190703") // i = 135 j = 0 - PrecomputedLines[0][135] = emulated.ValueOf[emulated.BW6761Fp]("5934405004285776331630280637109070463626784739136943282051799037098249132104511122554510074244540327876064527736509150528218419867398859662403698876411373576157376672220445952316857363235511588325272279467223393469732469391589454") - PrecomputedLines[1][135] = emulated.ValueOf[emulated.BW6761Fp]("3853300763714466280621239533765003576889560379702791099289094890338630225166520693233826140813720348044192201950244579487184637298409839680878533788041179595053520650058145442845460866315657638463420171773555348977817651593893300") + PrecomputedLines[0][135] = emulated.ValueOf[BaseField]("5934405004285776331630280637109070463626784739136943282051799037098249132104511122554510074244540327876064527736509150528218419867398859662403698876411373576157376672220445952316857363235511588325272279467223393469732469391589454") + PrecomputedLines[1][135] = emulated.ValueOf[BaseField]("3853300763714466280621239533765003576889560379702791099289094890338630225166520693233826140813720348044192201950244579487184637298409839680878533788041179595053520650058145442845460866315657638463420171773555348977817651593893300") // i = 134 j = 0 - PrecomputedLines[0][134] = emulated.ValueOf[emulated.BW6761Fp]("4071393582225441537259129740348136928083015327075675947139818040266037848160886082345792501192485369996749135042646411769614852944973561715055093656354124149362614454203390246905090905099260897928953398827135826072133621101404195") - PrecomputedLines[1][134] = emulated.ValueOf[emulated.BW6761Fp]("163064925070158099254952264886241234943555067376205015997612082620013849480487004418622298793050415738026006109172604997325700501036308991398166284975128590614460778829761389732430123500510222705991473579068874904567649913483108") + PrecomputedLines[0][134] = emulated.ValueOf[BaseField]("4071393582225441537259129740348136928083015327075675947139818040266037848160886082345792501192485369996749135042646411769614852944973561715055093656354124149362614454203390246905090905099260897928953398827135826072133621101404195") + PrecomputedLines[1][134] = emulated.ValueOf[BaseField]("163064925070158099254952264886241234943555067376205015997612082620013849480487004418622298793050415738026006109172604997325700501036308991398166284975128590614460778829761389732430123500510222705991473579068874904567649913483108") // i = 133 j = 0 - PrecomputedLines[0][133] = emulated.ValueOf[emulated.BW6761Fp]("1418055253056202074595134691646273080389280058925225243405714343036410124848094320257507899566341757290227427489602264479370376697910695572778903093150605203445190132527551908453832799926697589813708187671591577598951527150266462") - PrecomputedLines[1][133] = emulated.ValueOf[emulated.BW6761Fp]("4155270220852296426069284095173099018808860752865568102978836008384241124182786514727621135289096926318101983300917387205733381093054071103209226340513432729873159990132982563319636636190627483048554684794275717730537206864972738") + PrecomputedLines[0][133] = emulated.ValueOf[BaseField]("1418055253056202074595134691646273080389280058925225243405714343036410124848094320257507899566341757290227427489602264479370376697910695572778903093150605203445190132527551908453832799926697589813708187671591577598951527150266462") + PrecomputedLines[1][133] = emulated.ValueOf[BaseField]("4155270220852296426069284095173099018808860752865568102978836008384241124182786514727621135289096926318101983300917387205733381093054071103209226340513432729873159990132982563319636636190627483048554684794275717730537206864972738") // i = 132 j = 0 - PrecomputedLines[0][132] = emulated.ValueOf[emulated.BW6761Fp]("2330886315626139608560488604463307042069439883877339752259227046211913815357101972673368411245947078845325193301125955376122337450853187562598776619960568843510592987176521049173659607909314337783813131204696221681811462179088691") - PrecomputedLines[1][132] = emulated.ValueOf[emulated.BW6761Fp]("6711986147911438355804568563575069333271094896862220019688012927363594088853071294014660796060718276350481094706075223562102712977643602867969637013015964531826665436102237060386185882331244978345250975580544289533439462447279257") + PrecomputedLines[0][132] = emulated.ValueOf[BaseField]("2330886315626139608560488604463307042069439883877339752259227046211913815357101972673368411245947078845325193301125955376122337450853187562598776619960568843510592987176521049173659607909314337783813131204696221681811462179088691") + PrecomputedLines[1][132] = emulated.ValueOf[BaseField]("6711986147911438355804568563575069333271094896862220019688012927363594088853071294014660796060718276350481094706075223562102712977643602867969637013015964531826665436102237060386185882331244978345250975580544289533439462447279257") // i = 131 j = 0 - PrecomputedLines[0][131] = emulated.ValueOf[emulated.BW6761Fp]("2459194991253184572352513073915488362359413982519643806017800096086250895884084333687760994466920538720187471885744206660334045092314159558800220531380876636659371375141085558696675851052370181877646188303218710742352859633964342") - PrecomputedLines[1][131] = emulated.ValueOf[emulated.BW6761Fp]("1798907412470330186181222251574418897779031365954162228532991291868214950565615990966265694580335533045365235494965998595149631566706795045987443791903411003279763085924753692636782886218284245215570054489439163164726739330788532") + PrecomputedLines[0][131] = emulated.ValueOf[BaseField]("2459194991253184572352513073915488362359413982519643806017800096086250895884084333687760994466920538720187471885744206660334045092314159558800220531380876636659371375141085558696675851052370181877646188303218710742352859633964342") + PrecomputedLines[1][131] = emulated.ValueOf[BaseField]("1798907412470330186181222251574418897779031365954162228532991291868214950565615990966265694580335533045365235494965998595149631566706795045987443791903411003279763085924753692636782886218284245215570054489439163164726739330788532") // i = 130 j = 0 - PrecomputedLines[0][130] = emulated.ValueOf[emulated.BW6761Fp]("6200227010995243292534007463442727301124348508335846975763125380726292582060924747024816702710789047477511252369137204867777169795203823829426651503047600098271481218636673525637213754344807277089122252066488429612476303820804543") - PrecomputedLines[1][130] = emulated.ValueOf[emulated.BW6761Fp]("6183339963554257352986053313573779205151353739061345212410014518341183574948205574318625281851356054888090433850265460982453347498040819644197823676451772870994706563880697505569357671552697683052366439579377964497653703657273613") + PrecomputedLines[0][130] = emulated.ValueOf[BaseField]("6200227010995243292534007463442727301124348508335846975763125380726292582060924747024816702710789047477511252369137204867777169795203823829426651503047600098271481218636673525637213754344807277089122252066488429612476303820804543") + PrecomputedLines[1][130] = emulated.ValueOf[BaseField]("6183339963554257352986053313573779205151353739061345212410014518341183574948205574318625281851356054888090433850265460982453347498040819644197823676451772870994706563880697505569357671552697683052366439579377964497653703657273613") // i = 129 j = 0 - PrecomputedLines[0][129] = emulated.ValueOf[emulated.BW6761Fp]("3179418169374060428648479451680112473165868327208755428080303333059122452066341836393363276607814567151445118342356457006231585027268454793027792028314743348462081282511356597993842079243330612103229465856549806800369725036881516") - PrecomputedLines[1][129] = emulated.ValueOf[emulated.BW6761Fp]("1074440876243557992296297656666926523894847888827413838964195035038704675426637330906565122688220683942757851797564811398813653924552049073155628743092598727862440471499620621997136194644441450660880437794868985296365645976407463") + PrecomputedLines[0][129] = emulated.ValueOf[BaseField]("3179418169374060428648479451680112473165868327208755428080303333059122452066341836393363276607814567151445118342356457006231585027268454793027792028314743348462081282511356597993842079243330612103229465856549806800369725036881516") + PrecomputedLines[1][129] = emulated.ValueOf[BaseField]("1074440876243557992296297656666926523894847888827413838964195035038704675426637330906565122688220683942757851797564811398813653924552049073155628743092598727862440471499620621997136194644441450660880437794868985296365645976407463") // i = 128 j = 0 - PrecomputedLines[0][128] = emulated.ValueOf[emulated.BW6761Fp]("2656992808450134623226107811040851573895052777253445321570646190215821367927767059861417586581046541647458203705873809488287636783989040464371827681455548309973545083153900514460616688467563484862556513683924061416596829297761281") - PrecomputedLines[1][128] = emulated.ValueOf[emulated.BW6761Fp]("4844145081209902609505524435169548005333832418493246907706701276792579054383871336339479329969744299945519805206076736030684085411371482252463723707639516591389550691017538009029350110030156955501292575958216281584402435928015282") + PrecomputedLines[0][128] = emulated.ValueOf[BaseField]("2656992808450134623226107811040851573895052777253445321570646190215821367927767059861417586581046541647458203705873809488287636783989040464371827681455548309973545083153900514460616688467563484862556513683924061416596829297761281") + PrecomputedLines[1][128] = emulated.ValueOf[BaseField]("4844145081209902609505524435169548005333832418493246907706701276792579054383871336339479329969744299945519805206076736030684085411371482252463723707639516591389550691017538009029350110030156955501292575958216281584402435928015282") // i = 127 j = 3 - PrecomputedLines[0][127] = emulated.ValueOf[emulated.BW6761Fp]("2011974253550710793841707614319665694450124220622509460641614259810013401810340721144190324466096151717630769235513591278366843097918633665449346052590698996537616877458386727075369760392809275502298638397577883974589386211297224") - PrecomputedLines[1][127] = emulated.ValueOf[emulated.BW6761Fp]("6759883189410489244241895710608314487646636558844672718364985082787669104517170096580376692069609041874604017863262445678624384432339609560673325735146824752213644659396489133994780351405505353963175199534520940811983252265624615") - PrecomputedLines[2][127] = emulated.ValueOf[emulated.BW6761Fp]("3768192070758720977362743048128269743652792172865782600408421041647100863768584258831661376266155960653323061159024418693369114489150496403396836022703123674697982050710775271545733019404845648384932763373012576844034843014226663") - PrecomputedLines[3][127] = emulated.ValueOf[emulated.BW6761Fp]("4996817090270925204398124591351581650929992386659735131162538961779700303447917693269175016025592612215970500208241974120205022765011244960015994932562080528715942642394954932931189953414547282447001732552340521661044540625436489") + PrecomputedLines[0][127] = emulated.ValueOf[BaseField]("2011974253550710793841707614319665694450124220622509460641614259810013401810340721144190324466096151717630769235513591278366843097918633665449346052590698996537616877458386727075369760392809275502298638397577883974589386211297224") + PrecomputedLines[1][127] = emulated.ValueOf[BaseField]("6759883189410489244241895710608314487646636558844672718364985082787669104517170096580376692069609041874604017863262445678624384432339609560673325735146824752213644659396489133994780351405505353963175199534520940811983252265624615") + PrecomputedLines[2][127] = emulated.ValueOf[BaseField]("3768192070758720977362743048128269743652792172865782600408421041647100863768584258831661376266155960653323061159024418693369114489150496403396836022703123674697982050710775271545733019404845648384932763373012576844034843014226663") + PrecomputedLines[3][127] = emulated.ValueOf[BaseField]("4996817090270925204398124591351581650929992386659735131162538961779700303447917693269175016025592612215970500208241974120205022765011244960015994932562080528715942642394954932931189953414547282447001732552340521661044540625436489") // i = 126 j = 0 - PrecomputedLines[0][126] = emulated.ValueOf[emulated.BW6761Fp]("61030029175891269410795092194963931753546458573367290675218972211227148812010246092773830125486215763104854597618372825714261360352033773901926014862100801844180418267711567376566306882863926155995425312804691687033445561167871") - PrecomputedLines[1][126] = emulated.ValueOf[emulated.BW6761Fp]("6833240418488948066920209892932139246256027105595326635285212540472436879581105716676144073328231777396096543811943596316039625629371094363456649650678572026035768513691047630818277854926997745495397934394176338037573909064834929") + PrecomputedLines[0][126] = emulated.ValueOf[BaseField]("61030029175891269410795092194963931753546458573367290675218972211227148812010246092773830125486215763104854597618372825714261360352033773901926014862100801844180418267711567376566306882863926155995425312804691687033445561167871") + PrecomputedLines[1][126] = emulated.ValueOf[BaseField]("6833240418488948066920209892932139246256027105595326635285212540472436879581105716676144073328231777396096543811943596316039625629371094363456649650678572026035768513691047630818277854926997745495397934394176338037573909064834929") // i = 125 j = 0 - PrecomputedLines[0][125] = emulated.ValueOf[emulated.BW6761Fp]("3926949350427962695585990018450101508532431417991343152535182583499353333354294146067703587959518218515009410854982144126409191309216905586664235278880727278347038082001447608618625591165227564209266868241878519280739454627913589") - PrecomputedLines[1][125] = emulated.ValueOf[emulated.BW6761Fp]("6309962043798723795945059552956223798505736132181994182186095961257327116478835558103704420245912232701804081120812215729741361816214804019930911187892496733432694004299106132040377518510660396793612942971514054694208602506501019") + PrecomputedLines[0][125] = emulated.ValueOf[BaseField]("3926949350427962695585990018450101508532431417991343152535182583499353333354294146067703587959518218515009410854982144126409191309216905586664235278880727278347038082001447608618625591165227564209266868241878519280739454627913589") + PrecomputedLines[1][125] = emulated.ValueOf[BaseField]("6309962043798723795945059552956223798505736132181994182186095961257327116478835558103704420245912232701804081120812215729741361816214804019930911187892496733432694004299106132040377518510660396793612942971514054694208602506501019") // i = 124 j = 0 - PrecomputedLines[0][124] = emulated.ValueOf[emulated.BW6761Fp]("4488999804938223839571472535025735012412690342654669760528351297118412155837701581755042574106398162784062944826655321643381618013246981215604421509557111054819740593053659366060345354377072326398031111319075975298655323375246802") - PrecomputedLines[1][124] = emulated.ValueOf[emulated.BW6761Fp]("6444989125456244545425394136098901739857497273657531818611817253918235907497599508119892300164686750638921852969593078482345991870378784799499090518807626656978947039049504439625214712037653614746128104900832879863879988276182218") + PrecomputedLines[0][124] = emulated.ValueOf[BaseField]("4488999804938223839571472535025735012412690342654669760528351297118412155837701581755042574106398162784062944826655321643381618013246981215604421509557111054819740593053659366060345354377072326398031111319075975298655323375246802") + PrecomputedLines[1][124] = emulated.ValueOf[BaseField]("6444989125456244545425394136098901739857497273657531818611817253918235907497599508119892300164686750638921852969593078482345991870378784799499090518807626656978947039049504439625214712037653614746128104900832879863879988276182218") // i = 123 j = 3 - PrecomputedLines[0][123] = emulated.ValueOf[emulated.BW6761Fp]("48096764148903583755143048977709097805863506367881065875494375242161357807338208699249280067124184831538166831199608365878819269574548732670387717402535874913726374579033072827257006439676023227938395708736234029547128657519024") - PrecomputedLines[1][123] = emulated.ValueOf[emulated.BW6761Fp]("2885079913666629029378113424257839642578093922710003917421662173598381441374102964233268828960354312449054455561942853958742180460052092915358427157540615228259129038054859726324662666857362491353586815224330417492336147671076074") - PrecomputedLines[2][123] = emulated.ValueOf[emulated.BW6761Fp]("3043841471664770240132695293319503660849549600823254092922959329815228043755665146670109099702358612421893385494755435653299330932454771820778776072989501322684889256922094409958313718801462190749096656504789733891018826678061754") - PrecomputedLines[3][123] = emulated.ValueOf[emulated.BW6761Fp]("3964755972180176436323966637057860893750008381404580562869395428071031238803305006501831093580555070806000231292428936249019977282011769187032253227866421572275838519495412036349811651394855424599078120762727736839420292263462485") + PrecomputedLines[0][123] = emulated.ValueOf[BaseField]("48096764148903583755143048977709097805863506367881065875494375242161357807338208699249280067124184831538166831199608365878819269574548732670387717402535874913726374579033072827257006439676023227938395708736234029547128657519024") + PrecomputedLines[1][123] = emulated.ValueOf[BaseField]("2885079913666629029378113424257839642578093922710003917421662173598381441374102964233268828960354312449054455561942853958742180460052092915358427157540615228259129038054859726324662666857362491353586815224330417492336147671076074") + PrecomputedLines[2][123] = emulated.ValueOf[BaseField]("3043841471664770240132695293319503660849549600823254092922959329815228043755665146670109099702358612421893385494755435653299330932454771820778776072989501322684889256922094409958313718801462190749096656504789733891018826678061754") + PrecomputedLines[3][123] = emulated.ValueOf[BaseField]("3964755972180176436323966637057860893750008381404580562869395428071031238803305006501831093580555070806000231292428936249019977282011769187032253227866421572275838519495412036349811651394855424599078120762727736839420292263462485") // i = 122 j = 0 - PrecomputedLines[0][122] = emulated.ValueOf[emulated.BW6761Fp]("1147423570305216155966394089416724605760345045141884306377095836246940645217647257876825855936992089170612653283726654429767384651124940326503491901401745219743034675518742507445403697342358921463061860241593761756336289164522119") - PrecomputedLines[1][122] = emulated.ValueOf[emulated.BW6761Fp]("1400653168263070557443196511526506706425351336877605966710891264057367498166955652141609738759131845843222045163086919342411712873806170027252549920037193747798496958648686134783555143951150979662348022397600974087120311815298929") + PrecomputedLines[0][122] = emulated.ValueOf[BaseField]("1147423570305216155966394089416724605760345045141884306377095836246940645217647257876825855936992089170612653283726654429767384651124940326503491901401745219743034675518742507445403697342358921463061860241593761756336289164522119") + PrecomputedLines[1][122] = emulated.ValueOf[BaseField]("1400653168263070557443196511526506706425351336877605966710891264057367498166955652141609738759131845843222045163086919342411712873806170027252549920037193747798496958648686134783555143951150979662348022397600974087120311815298929") // i = 121 j = 3 - PrecomputedLines[0][121] = emulated.ValueOf[emulated.BW6761Fp]("4848629817189004581190031618928252397691169400292273151462737052201317336592222326669501659224975531820399232409938503793212004554476876145926583490328399513338352933529323398645256274996466572940688236571797060498039826415776303") - PrecomputedLines[1][121] = emulated.ValueOf[emulated.BW6761Fp]("5544527487950438540786567976353286513309130241252879438584120222061584982747917620707291880053404671809935496576304302790977416756689184737791798686432959793818214479200283466088031571739784074765935407802091843712383310733299433") - PrecomputedLines[2][121] = emulated.ValueOf[emulated.BW6761Fp]("5683179697250901409522989575566573888308266359124141125691463931015868417522055941441646787069096352388787048945382148685200643438128420640514442659752004342617047060157100278358653282807481368362519403945976463760841519256358005") - PrecomputedLines[3][121] = emulated.ValueOf[emulated.BW6761Fp]("4015193801627401118529067340400153381185658888661374065658744995657432104911672137199213869471732156067461339474772923041603387145645908396491661843740044507679652139062696511448585565788502969536240872541545150524475461142991914") + PrecomputedLines[0][121] = emulated.ValueOf[BaseField]("4848629817189004581190031618928252397691169400292273151462737052201317336592222326669501659224975531820399232409938503793212004554476876145926583490328399513338352933529323398645256274996466572940688236571797060498039826415776303") + PrecomputedLines[1][121] = emulated.ValueOf[BaseField]("5544527487950438540786567976353286513309130241252879438584120222061584982747917620707291880053404671809935496576304302790977416756689184737791798686432959793818214479200283466088031571739784074765935407802091843712383310733299433") + PrecomputedLines[2][121] = emulated.ValueOf[BaseField]("5683179697250901409522989575566573888308266359124141125691463931015868417522055941441646787069096352388787048945382148685200643438128420640514442659752004342617047060157100278358653282807481368362519403945976463760841519256358005") + PrecomputedLines[3][121] = emulated.ValueOf[BaseField]("4015193801627401118529067340400153381185658888661374065658744995657432104911672137199213869471732156067461339474772923041603387145645908396491661843740044507679652139062696511448585565788502969536240872541545150524475461142991914") // i = 120 j = 0 - PrecomputedLines[0][120] = emulated.ValueOf[emulated.BW6761Fp]("4288837439335358966022320970682704322501253708708512179864196425364227488774750648885019477197521514769857662684703447368455232541366519594011028463745666196187644303062377133432655952115338413364077019586210481492151153882533394") - PrecomputedLines[1][120] = emulated.ValueOf[emulated.BW6761Fp]("6711230786907893007908748623469748328179715213743529169694920667477525813744104801178474617246982814360083701328157531202085430108276078940886323514181053003891998099407640230767176745670810179914758840362614799568490407762073099") + PrecomputedLines[0][120] = emulated.ValueOf[BaseField]("4288837439335358966022320970682704322501253708708512179864196425364227488774750648885019477197521514769857662684703447368455232541366519594011028463745666196187644303062377133432655952115338413364077019586210481492151153882533394") + PrecomputedLines[1][120] = emulated.ValueOf[BaseField]("6711230786907893007908748623469748328179715213743529169694920667477525813744104801178474617246982814360083701328157531202085430108276078940886323514181053003891998099407640230767176745670810179914758840362614799568490407762073099") // i = 119 j = 0 - PrecomputedLines[0][119] = emulated.ValueOf[emulated.BW6761Fp]("413554378658776595501164876190088919308414438064968589716948868117411538135330443667704485985944759138845581832799144492471703206122605761277212923300910870363233962333416257118355152435167571980116339519218448320568686091522060") - PrecomputedLines[1][119] = emulated.ValueOf[emulated.BW6761Fp]("6297262784542072715661554435028140949302827861690375106363013216167140265214400108019462805799107026733661225399127154732488782092163034727732105989690602332517101639676965271114862669193714613581755099466534874261129391687766781") + PrecomputedLines[0][119] = emulated.ValueOf[BaseField]("413554378658776595501164876190088919308414438064968589716948868117411538135330443667704485985944759138845581832799144492471703206122605761277212923300910870363233962333416257118355152435167571980116339519218448320568686091522060") + PrecomputedLines[1][119] = emulated.ValueOf[BaseField]("6297262784542072715661554435028140949302827861690375106363013216167140265214400108019462805799107026733661225399127154732488782092163034727732105989690602332517101639676965271114862669193714613581755099466534874261129391687766781") // i = 118 j = 3 - PrecomputedLines[0][118] = emulated.ValueOf[emulated.BW6761Fp]("2983298753229977152323135951705985466035371741485329442751503135857043227825215884279541420174496098174791077537084819659951247261120623346318386113107777075030888060458782579622749753862574748396898338124366976276144133985861273") - PrecomputedLines[1][118] = emulated.ValueOf[emulated.BW6761Fp]("3937244092143115338932004671719774355768669736676487982793276339336791586253378335050493388635279555326187388831599651140722899137211057678112288706659103180262966143161461781843109792871183956304191755744274332064783999126226281") - PrecomputedLines[2][118] = emulated.ValueOf[emulated.BW6761Fp]("2733696733608866087289260002991705592224758347592178237334152606732051902582973806868260081916851181879380681091249755495212273063349966523361751113544397800785886443510833030691223760659900815227739498061573912216017141950639322") - PrecomputedLines[3][118] = emulated.ValueOf[emulated.BW6761Fp]("3447346116023692597027327949601168437105182566602907072746064824432937885591845713123463314504333303435002189386048554911879434635935212953780216832655075848382621368493386691645655672987605820386850955801239102880102299086389298") + PrecomputedLines[0][118] = emulated.ValueOf[BaseField]("2983298753229977152323135951705985466035371741485329442751503135857043227825215884279541420174496098174791077537084819659951247261120623346318386113107777075030888060458782579622749753862574748396898338124366976276144133985861273") + PrecomputedLines[1][118] = emulated.ValueOf[BaseField]("3937244092143115338932004671719774355768669736676487982793276339336791586253378335050493388635279555326187388831599651140722899137211057678112288706659103180262966143161461781843109792871183956304191755744274332064783999126226281") + PrecomputedLines[2][118] = emulated.ValueOf[BaseField]("2733696733608866087289260002991705592224758347592178237334152606732051902582973806868260081916851181879380681091249755495212273063349966523361751113544397800785886443510833030691223760659900815227739498061573912216017141950639322") + PrecomputedLines[3][118] = emulated.ValueOf[BaseField]("3447346116023692597027327949601168437105182566602907072746064824432937885591845713123463314504333303435002189386048554911879434635935212953780216832655075848382621368493386691645655672987605820386850955801239102880102299086389298") // i = 117 j = 0 - PrecomputedLines[0][117] = emulated.ValueOf[emulated.BW6761Fp]("290772385992205989003842268392935069805600713676054168995478891788672038548991216826202976641995154972645344657841986735832516063908191336543573825112421034745006181624889096669351734716264231721373274177150459199663763065478094") - PrecomputedLines[1][117] = emulated.ValueOf[emulated.BW6761Fp]("3292019506796543851445430702320993553807948365652526759401921872579331881880870165659982836507133155007686741550814318483452571439127334976403549783875675171500812427161759032411335276957921133870128540763629302400287478387857054") + PrecomputedLines[0][117] = emulated.ValueOf[BaseField]("290772385992205989003842268392935069805600713676054168995478891788672038548991216826202976641995154972645344657841986735832516063908191336543573825112421034745006181624889096669351734716264231721373274177150459199663763065478094") + PrecomputedLines[1][117] = emulated.ValueOf[BaseField]("3292019506796543851445430702320993553807948365652526759401921872579331881880870165659982836507133155007686741550814318483452571439127334976403549783875675171500812427161759032411335276957921133870128540763629302400287478387857054") // i = 116 j = 0 - PrecomputedLines[0][116] = emulated.ValueOf[emulated.BW6761Fp]("4933337379982622525808367378171514734682006772891408711624036888695073657453715290052198254814244894561471536382000141283035744955831857691284830165285170418958890877344092768820121758525762010992645431371368379192630527450391567") - PrecomputedLines[1][116] = emulated.ValueOf[emulated.BW6761Fp]("660850871449753192123029385048560910163777949424658222423062565370599825313381090514485712636189623877350319216784062698362526297988273758467813066947250372551363684027442866225073557812481149224724185611740850384821128407685024") + PrecomputedLines[0][116] = emulated.ValueOf[BaseField]("4933337379982622525808367378171514734682006772891408711624036888695073657453715290052198254814244894561471536382000141283035744955831857691284830165285170418958890877344092768820121758525762010992645431371368379192630527450391567") + PrecomputedLines[1][116] = emulated.ValueOf[BaseField]("660850871449753192123029385048560910163777949424658222423062565370599825313381090514485712636189623877350319216784062698362526297988273758467813066947250372551363684027442866225073557812481149224724185611740850384821128407685024") // i = 115 j = 0 - PrecomputedLines[0][115] = emulated.ValueOf[emulated.BW6761Fp]("481326854764450570772068592260461055406637567541766934153921077562581658404153295111099308704366026875413962255916341670032055787704869744412189455698518435213580395015910187380289385944733548582699453517614844953747524636966060") - PrecomputedLines[1][115] = emulated.ValueOf[emulated.BW6761Fp]("3420809227688631341669679740644412647134601097109661165923282832112778809885638792228909313681711757177052386648346649475521497838129590818669774544604962973921717806873457767712621599594811960795930366883511052271155980303038721") + PrecomputedLines[0][115] = emulated.ValueOf[BaseField]("481326854764450570772068592260461055406637567541766934153921077562581658404153295111099308704366026875413962255916341670032055787704869744412189455698518435213580395015910187380289385944733548582699453517614844953747524636966060") + PrecomputedLines[1][115] = emulated.ValueOf[BaseField]("3420809227688631341669679740644412647134601097109661165923282832112778809885638792228909313681711757177052386648346649475521497838129590818669774544604962973921717806873457767712621599594811960795930366883511052271155980303038721") // i = 114 j = 3 - PrecomputedLines[0][114] = emulated.ValueOf[emulated.BW6761Fp]("684809418026755822824253058438625412417627268961531835854114498136804562817130170611497035677023178044635114102224716079155167463023788690123629198688642789173614157135366218960438999272216205071157116652777625492047310641469166") - PrecomputedLines[1][114] = emulated.ValueOf[emulated.BW6761Fp]("5166640696283905919399620082219859368947649651772166224210712571165517842457751521392173879950792298566506230141458101552956587780134231473703997680234294099476701153920453787845822302486959392040307239726389452068888390962896457") - PrecomputedLines[2][114] = emulated.ValueOf[emulated.BW6761Fp]("1225848359831922306214457248004716386615308053365154620155093059738513399631997830664341068529519872751146070928817179211667300976162683350033065380748927997960100452502445405076083585662063240916615131996881707770541479836532906") - PrecomputedLines[3][114] = emulated.ValueOf[emulated.BW6761Fp]("3183467980405159459382133484543120947419935505894893093005336721935126843695893593395289759680648960257687962761513412564242438535941446306048253411519706815016857930329241932935979124772476367891799889429968788126781556590159057") + PrecomputedLines[0][114] = emulated.ValueOf[BaseField]("684809418026755822824253058438625412417627268961531835854114498136804562817130170611497035677023178044635114102224716079155167463023788690123629198688642789173614157135366218960438999272216205071157116652777625492047310641469166") + PrecomputedLines[1][114] = emulated.ValueOf[BaseField]("5166640696283905919399620082219859368947649651772166224210712571165517842457751521392173879950792298566506230141458101552956587780134231473703997680234294099476701153920453787845822302486959392040307239726389452068888390962896457") + PrecomputedLines[2][114] = emulated.ValueOf[BaseField]("1225848359831922306214457248004716386615308053365154620155093059738513399631997830664341068529519872751146070928817179211667300976162683350033065380748927997960100452502445405076083585662063240916615131996881707770541479836532906") + PrecomputedLines[3][114] = emulated.ValueOf[BaseField]("3183467980405159459382133484543120947419935505894893093005336721935126843695893593395289759680648960257687962761513412564242438535941446306048253411519706815016857930329241932935979124772476367891799889429968788126781556590159057") // i = 113 j = 0 - PrecomputedLines[0][113] = emulated.ValueOf[emulated.BW6761Fp]("4626517608297074303998465222691929513752132880642038668324913066825087276695067156470979826318812539456317325461721593605469284549411324254599330937034993001421930210744360228548043152368219046417783422209127357231636814511442814") - PrecomputedLines[1][113] = emulated.ValueOf[emulated.BW6761Fp]("3983180414026994442339773406369498782480430663961036515210761780953055939419716704607245841367824985551004597998080550979782500959769863562745076097943094990258671204643135180911363102591744932177410392029554146511771754571301543") + PrecomputedLines[0][113] = emulated.ValueOf[BaseField]("4626517608297074303998465222691929513752132880642038668324913066825087276695067156470979826318812539456317325461721593605469284549411324254599330937034993001421930210744360228548043152368219046417783422209127357231636814511442814") + PrecomputedLines[1][113] = emulated.ValueOf[BaseField]("3983180414026994442339773406369498782480430663961036515210761780953055939419716704607245841367824985551004597998080550979782500959769863562745076097943094990258671204643135180911363102591744932177410392029554146511771754571301543") // i = 112 j = 0 - PrecomputedLines[0][112] = emulated.ValueOf[emulated.BW6761Fp]("700906576124412811291086856659842275195258622895397636425353544093733685670245448363084087741581123052363188833111664735668171799136833943150612925072937471265266461004370773546132263292121859184858316146896828999548280381303452") - PrecomputedLines[1][112] = emulated.ValueOf[emulated.BW6761Fp]("4692134649081002476703999452330156046805727119237089354081639317452715546964599231153077130319567327586394710165251636039202551157971022041837579426842866207332269843223882426757561323716848393489694788769608479640858276714369717") + PrecomputedLines[0][112] = emulated.ValueOf[BaseField]("700906576124412811291086856659842275195258622895397636425353544093733685670245448363084087741581123052363188833111664735668171799136833943150612925072937471265266461004370773546132263292121859184858316146896828999548280381303452") + PrecomputedLines[1][112] = emulated.ValueOf[BaseField]("4692134649081002476703999452330156046805727119237089354081639317452715546964599231153077130319567327586394710165251636039202551157971022041837579426842866207332269843223882426757561323716848393489694788769608479640858276714369717") // i = 111 j = 0 - PrecomputedLines[0][111] = emulated.ValueOf[emulated.BW6761Fp]("1634336593167212469726111087588237678289979788278360678182919348642884347360479796581910754301108780131592369234473369879828281697717419752310591911301483800386694367816173405109239641530977162725545732544176131812255789205336540") - PrecomputedLines[1][111] = emulated.ValueOf[emulated.BW6761Fp]("5184725322013784060417949167414529593680372589157689476355315098744927077860773135884503916427189964053154110415376925663936201076402862521450607376690027367635571761072728824076432872648592119843172389551071898313845735081029724") + PrecomputedLines[0][111] = emulated.ValueOf[BaseField]("1634336593167212469726111087588237678289979788278360678182919348642884347360479796581910754301108780131592369234473369879828281697717419752310591911301483800386694367816173405109239641530977162725545732544176131812255789205336540") + PrecomputedLines[1][111] = emulated.ValueOf[BaseField]("5184725322013784060417949167414529593680372589157689476355315098744927077860773135884503916427189964053154110415376925663936201076402862521450607376690027367635571761072728824076432872648592119843172389551071898313845735081029724") // i = 110 j = 3 - PrecomputedLines[0][110] = emulated.ValueOf[emulated.BW6761Fp]("4953319302934812575038999165295500575676791409774699647543406528425762068872173726634472807001304647993529966624124694243595249743482491962931348850325767446611679661248874226095803976227891393066925992955597935289828823988957470") - PrecomputedLines[1][110] = emulated.ValueOf[emulated.BW6761Fp]("737693528334438898431278286504826143269591546431662377619978515983630360302832003327633229277274683374824551063238506172875438613867639447412012507544780812924210275380644728627103410245362072050600051053667454750114777947030141") - PrecomputedLines[2][110] = emulated.ValueOf[emulated.BW6761Fp]("3001622656638585857511801217301789708361697320249270374331911200105561040742864289651902240628576874070436165017228217112117151443162706218054774400918978527706874258973333719683737630175847920511647263686994660958560642384777280") - PrecomputedLines[3][110] = emulated.ValueOf[emulated.BW6761Fp]("2955371716766235083595476802782512312694024877961802653530637208613750128600047733743309160011712940356611152581452205642405634198799174743558191212422888690146861411211423483451438377119945438228140796896482696879292216734966012") + PrecomputedLines[0][110] = emulated.ValueOf[BaseField]("4953319302934812575038999165295500575676791409774699647543406528425762068872173726634472807001304647993529966624124694243595249743482491962931348850325767446611679661248874226095803976227891393066925992955597935289828823988957470") + PrecomputedLines[1][110] = emulated.ValueOf[BaseField]("737693528334438898431278286504826143269591546431662377619978515983630360302832003327633229277274683374824551063238506172875438613867639447412012507544780812924210275380644728627103410245362072050600051053667454750114777947030141") + PrecomputedLines[2][110] = emulated.ValueOf[BaseField]("3001622656638585857511801217301789708361697320249270374331911200105561040742864289651902240628576874070436165017228217112117151443162706218054774400918978527706874258973333719683737630175847920511647263686994660958560642384777280") + PrecomputedLines[3][110] = emulated.ValueOf[BaseField]("2955371716766235083595476802782512312694024877961802653530637208613750128600047733743309160011712940356611152581452205642405634198799174743558191212422888690146861411211423483451438377119945438228140796896482696879292216734966012") // i = 109 j = 0 - PrecomputedLines[0][109] = emulated.ValueOf[emulated.BW6761Fp]("566212511094651326103650324402513675260768764551684782856361232500767090053613654126562334984732125275054601697072126248934983773636047526079992446589428578795051228008677129219092223154897142521267350970627097886575925934072398") - PrecomputedLines[1][109] = emulated.ValueOf[emulated.BW6761Fp]("4694230344175341667542145113737216365363426662846928492809719984029782449958204469882253866698488012712926302037291695259127133435421044549374748189772077500141102408895386792102637462624844856073187158713496155412172255268322943") + PrecomputedLines[0][109] = emulated.ValueOf[BaseField]("566212511094651326103650324402513675260768764551684782856361232500767090053613654126562334984732125275054601697072126248934983773636047526079992446589428578795051228008677129219092223154897142521267350970627097886575925934072398") + PrecomputedLines[1][109] = emulated.ValueOf[BaseField]("4694230344175341667542145113737216365363426662846928492809719984029782449958204469882253866698488012712926302037291695259127133435421044549374748189772077500141102408895386792102637462624844856073187158713496155412172255268322943") // i = 108 j = -3 - PrecomputedLines[0][108] = emulated.ValueOf[emulated.BW6761Fp]("1563334932490323038084899924732619173549214924802037645248404609061373133331192708939390980051099418970255195294348796506729828980175564189388228950685471575211313645348571431181819230671011458906431929755248519529988950383043558") - PrecomputedLines[1][108] = emulated.ValueOf[emulated.BW6761Fp]("2311412559152774300375788856023758369822521516908975703173975766181607168537907050081509698867728203522923410694651912929457339252559503759095125494059547321573842664360913179904229958963585141627873969617228770993980676261040500") - PrecomputedLines[2][108] = emulated.ValueOf[emulated.BW6761Fp]("6175484932576535008332986939485368186545707346006529500809917972874655208202311421127303934742877907503092285518028735492781966447056993288871485474747566840336074917424118940873858912878005715629316527794406816857815430726070562") - PrecomputedLines[3][108] = emulated.ValueOf[emulated.BW6761Fp]("123461782351177634930277079148606395206607419259034123695631887799047384654128845614852300409005752420063210643732168643901531437376507326408479569877882472340918116769163900404373761149085456763553576075603356470050914486784227") + PrecomputedLines[0][108] = emulated.ValueOf[BaseField]("1563334932490323038084899924732619173549214924802037645248404609061373133331192708939390980051099418970255195294348796506729828980175564189388228950685471575211313645348571431181819230671011458906431929755248519529988950383043558") + PrecomputedLines[1][108] = emulated.ValueOf[BaseField]("2311412559152774300375788856023758369822521516908975703173975766181607168537907050081509698867728203522923410694651912929457339252559503759095125494059547321573842664360913179904229958963585141627873969617228770993980676261040500") + PrecomputedLines[2][108] = emulated.ValueOf[BaseField]("6175484932576535008332986939485368186545707346006529500809917972874655208202311421127303934742877907503092285518028735492781966447056993288871485474747566840336074917424118940873858912878005715629316527794406816857815430726070562") + PrecomputedLines[3][108] = emulated.ValueOf[BaseField]("123461782351177634930277079148606395206607419259034123695631887799047384654128845614852300409005752420063210643732168643901531437376507326408479569877882472340918116769163900404373761149085456763553576075603356470050914486784227") // i = 107 j = 0 - PrecomputedLines[0][107] = emulated.ValueOf[emulated.BW6761Fp]("2266072688291883158927069701738151065911783517304966453663389480757753978872156166093957720219822740237193161041788615078014605864407228585164871986379055520939547980130537619246537828306531563606741183765665629373453332588449192") - PrecomputedLines[1][107] = emulated.ValueOf[emulated.BW6761Fp]("515429094414778904504609179778459693982980053019434816014412238894402419646194981385097367993278713184436989416609354918183746310547812647612954769802713599858825453698318280499717719480495694699890143977308826388860019070165085") + PrecomputedLines[0][107] = emulated.ValueOf[BaseField]("2266072688291883158927069701738151065911783517304966453663389480757753978872156166093957720219822740237193161041788615078014605864407228585164871986379055520939547980130537619246537828306531563606741183765665629373453332588449192") + PrecomputedLines[1][107] = emulated.ValueOf[BaseField]("515429094414778904504609179778459693982980053019434816014412238894402419646194981385097367993278713184436989416609354918183746310547812647612954769802713599858825453698318280499717719480495694699890143977308826388860019070165085") // i = 106 j = 0 - PrecomputedLines[0][106] = emulated.ValueOf[emulated.BW6761Fp]("6010267371716213143093695909678402022513093521998387240126661727715132008960698736705154118695232557573323370026042606069770730852857100118375407703868918255082260850714722276087906262762688500835963093332420245740853593545194085") - PrecomputedLines[1][106] = emulated.ValueOf[emulated.BW6761Fp]("4281963311419191872029752866318517841992413134196684576181285159343053945111111164695870787018911219416379353456306717845371543351196013101034879448657779720874779538361445158199969059295153478919890914171037486882185535487756052") + PrecomputedLines[0][106] = emulated.ValueOf[BaseField]("6010267371716213143093695909678402022513093521998387240126661727715132008960698736705154118695232557573323370026042606069770730852857100118375407703868918255082260850714722276087906262762688500835963093332420245740853593545194085") + PrecomputedLines[1][106] = emulated.ValueOf[BaseField]("4281963311419191872029752866318517841992413134196684576181285159343053945111111164695870787018911219416379353456306717845371543351196013101034879448657779720874779538361445158199969059295153478919890914171037486882185535487756052") // i = 105 j = 0 - PrecomputedLines[0][105] = emulated.ValueOf[emulated.BW6761Fp]("5033109025773232254183934091944700239231856713098605055038668877944288565346733607655796479139731856249627912046360970116447647293949316671166763832369647495992541316808331439387103495416443655791884868522333160346837144982107819") - PrecomputedLines[1][105] = emulated.ValueOf[emulated.BW6761Fp]("4669900460535830482515520442133880272923400282670458928700419218226824432636715019798554131251396295806505565951980674546657468029856175682486586838325399578768679827829147144533201256575038610283060702643703231384047071770887732") + PrecomputedLines[0][105] = emulated.ValueOf[BaseField]("5033109025773232254183934091944700239231856713098605055038668877944288565346733607655796479139731856249627912046360970116447647293949316671166763832369647495992541316808331439387103495416443655791884868522333160346837144982107819") + PrecomputedLines[1][105] = emulated.ValueOf[BaseField]("4669900460535830482515520442133880272923400282670458928700419218226824432636715019798554131251396295806505565951980674546657468029856175682486586838325399578768679827829147144533201256575038610283060702643703231384047071770887732") // i = 104 j = 0 - PrecomputedLines[0][104] = emulated.ValueOf[emulated.BW6761Fp]("5454443657579324363377843236533931015151471915547623055046017633786313387883877403182401915377828483292869801167098529527030796069300191051702745938365410289948973748970664626027385576751322712014625670196018632538000348121102474") - PrecomputedLines[1][104] = emulated.ValueOf[emulated.BW6761Fp]("3133241298818377302733257481994044946647420520220237736360138875613702232726634637562049820513369241910571891206808742626182652789898777775231819638504462620062570796618509435949988642581412369087353609039469091753836564773020135") + PrecomputedLines[0][104] = emulated.ValueOf[BaseField]("5454443657579324363377843236533931015151471915547623055046017633786313387883877403182401915377828483292869801167098529527030796069300191051702745938365410289948973748970664626027385576751322712014625670196018632538000348121102474") + PrecomputedLines[1][104] = emulated.ValueOf[BaseField]("3133241298818377302733257481994044946647420520220237736360138875613702232726634637562049820513369241910571891206808742626182652789898777775231819638504462620062570796618509435949988642581412369087353609039469091753836564773020135") // i = 103 j = -3 - PrecomputedLines[0][103] = emulated.ValueOf[emulated.BW6761Fp]("2301849413909855674162488780732225201562676616006104959243094303277358428323322327050305311892348065869912402322473064362096306853774859357097769623712937529819889534187399774499938603998860479544485756019870113355345199898509876") - PrecomputedLines[1][103] = emulated.ValueOf[emulated.BW6761Fp]("4769376100721203643584138490105487969288775420140134181589021687554748064461808608512166592229118932062808573234716616135297734707261031144278742781947854336453418853179094948475856324990828579869914078888963150707167390109400684") - PrecomputedLines[2][103] = emulated.ValueOf[emulated.BW6761Fp]("2376323046012143545352049957873875519653973825890489638934761380270654841992811869649376088018241846893967207987918990869977981056879466904242398708764880914800026189406407451663484394823027179271301159428644427692814343803894277") - PrecomputedLines[3][103] = emulated.ValueOf[emulated.BW6761Fp]("4089518776757651749022544766981095582075669030595540409340632143941619427587141177823314253624223163160914150731354990886243264294641208260814057423926152825198636019975190702372273183995827896803754787380902888458019918022259926") + PrecomputedLines[0][103] = emulated.ValueOf[BaseField]("2301849413909855674162488780732225201562676616006104959243094303277358428323322327050305311892348065869912402322473064362096306853774859357097769623712937529819889534187399774499938603998860479544485756019870113355345199898509876") + PrecomputedLines[1][103] = emulated.ValueOf[BaseField]("4769376100721203643584138490105487969288775420140134181589021687554748064461808608512166592229118932062808573234716616135297734707261031144278742781947854336453418853179094948475856324990828579869914078888963150707167390109400684") + PrecomputedLines[2][103] = emulated.ValueOf[BaseField]("2376323046012143545352049957873875519653973825890489638934761380270654841992811869649376088018241846893967207987918990869977981056879466904242398708764880914800026189406407451663484394823027179271301159428644427692814343803894277") + PrecomputedLines[3][103] = emulated.ValueOf[BaseField]("4089518776757651749022544766981095582075669030595540409340632143941619427587141177823314253624223163160914150731354990886243264294641208260814057423926152825198636019975190702372273183995827896803754787380902888458019918022259926") // i = 102 j = 0 - PrecomputedLines[0][102] = emulated.ValueOf[emulated.BW6761Fp]("4872199633786861961320061137660550246969907345425715365233729280812060243137569195452166883931936492293633659728504486689475848164870096347435687001947281602000240086205222906666275934244033627794198544576450550622706826706744731") - PrecomputedLines[1][102] = emulated.ValueOf[emulated.BW6761Fp]("764164273079444455641809357552234779774544144626136395465042268465909675126831728736916684032579180470274953297527142632930920341077843559622145430140345601412258845118977809703379078517406445366917273261372686452599903434432351") + PrecomputedLines[0][102] = emulated.ValueOf[BaseField]("4872199633786861961320061137660550246969907345425715365233729280812060243137569195452166883931936492293633659728504486689475848164870096347435687001947281602000240086205222906666275934244033627794198544576450550622706826706744731") + PrecomputedLines[1][102] = emulated.ValueOf[BaseField]("764164273079444455641809357552234779774544144626136395465042268465909675126831728736916684032579180470274953297527142632930920341077843559622145430140345601412258845118977809703379078517406445366917273261372686452599903434432351") // i = 101 j = 3 - PrecomputedLines[0][101] = emulated.ValueOf[emulated.BW6761Fp]("1138481222158043909429825005297113087949881539191043655773323092458960243267437165694019939226385184659165150538578267029713533666280319072044638200327467170930049042745419600787617447150439577689985541557660176482532702243908440") - PrecomputedLines[1][101] = emulated.ValueOf[emulated.BW6761Fp]("4455300025758454639534519022413757975745594248460153197224377412273277761607410730038687015774965120910762436343695971192449449581489423823076517762372006348621691049173740475074002313383891237225650118962005615659136329845120303") - PrecomputedLines[2][101] = emulated.ValueOf[emulated.BW6761Fp]("3210463767655913107954350922295873010088631300544162634401958500459347283641926261600873742133062376991887707975154177358003118834068347936603770092842361580469026013565559516593432428767485752729404150412697514672519818123078244") - PrecomputedLines[3][101] = emulated.ValueOf[emulated.BW6761Fp]("3897236351686991693518980759085912950422402810098004492800141105249577706175658694833724887157670303699721554411373719170290642099070031256637485458934521636211171385007596172461292876808305757268752259666777373248236573371376195") + PrecomputedLines[0][101] = emulated.ValueOf[BaseField]("1138481222158043909429825005297113087949881539191043655773323092458960243267437165694019939226385184659165150538578267029713533666280319072044638200327467170930049042745419600787617447150439577689985541557660176482532702243908440") + PrecomputedLines[1][101] = emulated.ValueOf[BaseField]("4455300025758454639534519022413757975745594248460153197224377412273277761607410730038687015774965120910762436343695971192449449581489423823076517762372006348621691049173740475074002313383891237225650118962005615659136329845120303") + PrecomputedLines[2][101] = emulated.ValueOf[BaseField]("3210463767655913107954350922295873010088631300544162634401958500459347283641926261600873742133062376991887707975154177358003118834068347936603770092842361580469026013565559516593432428767485752729404150412697514672519818123078244") + PrecomputedLines[3][101] = emulated.ValueOf[BaseField]("3897236351686991693518980759085912950422402810098004492800141105249577706175658694833724887157670303699721554411373719170290642099070031256637485458934521636211171385007596172461292876808305757268752259666777373248236573371376195") // i = 100 j = 0 - PrecomputedLines[0][100] = emulated.ValueOf[emulated.BW6761Fp]("4043095220781872017006054807966746640757748818620819777748666199334959371264455489659963392402393583448358132611434041099616898661511397735360831151484256897717931065631791608561310183754921837329313928655091009601540228499784445") - PrecomputedLines[1][100] = emulated.ValueOf[emulated.BW6761Fp]("5406649262179124359509896426133671689896244828529858894945031345510404419121406838049367696542348655513507453913868421112342916164549144087743758521137512378354638215435021249013569643525879309796069922143806676478667222192222627") + PrecomputedLines[0][100] = emulated.ValueOf[BaseField]("4043095220781872017006054807966746640757748818620819777748666199334959371264455489659963392402393583448358132611434041099616898661511397735360831151484256897717931065631791608561310183754921837329313928655091009601540228499784445") + PrecomputedLines[1][100] = emulated.ValueOf[BaseField]("5406649262179124359509896426133671689896244828529858894945031345510404419121406838049367696542348655513507453913868421112342916164549144087743758521137512378354638215435021249013569643525879309796069922143806676478667222192222627") // i = 99 j = -3 - PrecomputedLines[0][99] = emulated.ValueOf[emulated.BW6761Fp]("6210611583500209950609099283083845754343386775986644996495973338504113861060796404338115170687756692399051620877679985388589228603401046696724398332298367241779996900625383743212074129854630884637637834417311509095398640463885161") - PrecomputedLines[1][99] = emulated.ValueOf[emulated.BW6761Fp]("5726501072077245235974761111635837696862742235341594290128351842267071162099966467965240252887788857612159886954447208395890185461804071482524387871898110396013302861010041459411476947082162369157387993930218181389615650844996067") - PrecomputedLines[2][99] = emulated.ValueOf[emulated.BW6761Fp]("630551511715376341788910558092626996370594613151666291681132040303198169792227073324695905614334843012564821616006131002919719731220925580296216363445909093410447010514067814768040564189299416092344973942045797304024180032472823") - PrecomputedLines[3][99] = emulated.ValueOf[emulated.BW6761Fp]("5344695873199798841654560855251216660354077383457151943536727881807747920346947783746112228393404410367589543239351918147241201379773853540214926322257942419416881562554531461956796366484295771413814611929735360541285281978298830") + PrecomputedLines[0][99] = emulated.ValueOf[BaseField]("6210611583500209950609099283083845754343386775986644996495973338504113861060796404338115170687756692399051620877679985388589228603401046696724398332298367241779996900625383743212074129854630884637637834417311509095398640463885161") + PrecomputedLines[1][99] = emulated.ValueOf[BaseField]("5726501072077245235974761111635837696862742235341594290128351842267071162099966467965240252887788857612159886954447208395890185461804071482524387871898110396013302861010041459411476947082162369157387993930218181389615650844996067") + PrecomputedLines[2][99] = emulated.ValueOf[BaseField]("630551511715376341788910558092626996370594613151666291681132040303198169792227073324695905614334843012564821616006131002919719731220925580296216363445909093410447010514067814768040564189299416092344973942045797304024180032472823") + PrecomputedLines[3][99] = emulated.ValueOf[BaseField]("5344695873199798841654560855251216660354077383457151943536727881807747920346947783746112228393404410367589543239351918147241201379773853540214926322257942419416881562554531461956796366484295771413814611929735360541285281978298830") // i = 98 j = 0 - PrecomputedLines[0][98] = emulated.ValueOf[emulated.BW6761Fp]("5334290801535344889401594778161065566537566644991298653727568118562592494615354555268880955374003825857184099538522225799941746892657595206702260559374159572912535022880679585339184831134613632067204404819265411895337983336609908") - PrecomputedLines[1][98] = emulated.ValueOf[emulated.BW6761Fp]("812946561548650974446001480996438589466020365155339960556949264789840358258764309798690481447224157262762104835659476455805690459602602633404803923871683159977667513178598859177598979021970955761740649000476953948228711910642458") + PrecomputedLines[0][98] = emulated.ValueOf[BaseField]("5334290801535344889401594778161065566537566644991298653727568118562592494615354555268880955374003825857184099538522225799941746892657595206702260559374159572912535022880679585339184831134613632067204404819265411895337983336609908") + PrecomputedLines[1][98] = emulated.ValueOf[BaseField]("812946561548650974446001480996438589466020365155339960556949264789840358258764309798690481447224157262762104835659476455805690459602602633404803923871683159977667513178598859177598979021970955761740649000476953948228711910642458") // i = 97 j = 0 - PrecomputedLines[0][97] = emulated.ValueOf[emulated.BW6761Fp]("1533139684897494629678126084843256462502256189980921509779110976093152867744125844762823787644759271036497420339783684287306011082423746624405280667715393784673969283191523855933717625505860175484093850931748781157432915379826438") - PrecomputedLines[1][97] = emulated.ValueOf[emulated.BW6761Fp]("3105206394189523431792859755297651248693196651309981540394912521441506361420010730689916624600680638584780245486097926768401597105192310093466212663729743276706806660677048576741583148240985569812346899056456916105502341086472784") + PrecomputedLines[0][97] = emulated.ValueOf[BaseField]("1533139684897494629678126084843256462502256189980921509779110976093152867744125844762823787644759271036497420339783684287306011082423746624405280667715393784673969283191523855933717625505860175484093850931748781157432915379826438") + PrecomputedLines[1][97] = emulated.ValueOf[BaseField]("3105206394189523431792859755297651248693196651309981540394912521441506361420010730689916624600680638584780245486097926768401597105192310093466212663729743276706806660677048576741583148240985569812346899056456916105502341086472784") // i = 96 j = 3 - PrecomputedLines[0][96] = emulated.ValueOf[emulated.BW6761Fp]("6642986649277737896895099841157338849756884624223791368568736753789869171621550347374886762871833481613998771197991983362560977795424796669802885544577533937046979408514940747205131194031961638448378971158617113729301655128080500") - PrecomputedLines[1][96] = emulated.ValueOf[emulated.BW6761Fp]("763985849257341256339914715065287204175615450272088510224646579871565477113676143092909961490765340157702889934511575518026834191072633853340695222233058383715662860411394565262571083422252868386657072058634490756103926667752273") - PrecomputedLines[2][96] = emulated.ValueOf[emulated.BW6761Fp]("2111894809768291771234699635254368429563023687238202955565452114391863181226788809996109782522385019551444976548355096590573442756394819488413598826438205621159997034216435139330286194346631796724090675989720829218090134771863380") - PrecomputedLines[3][96] = emulated.ValueOf[emulated.BW6761Fp]("5834555584761253568870488261794415860686576893238808172507818342859167083726502551898547690129966013381778535451716397180093294298482738946917975249397680840145468832566368453858268282532976383934291095736173876314444871374184585") + PrecomputedLines[0][96] = emulated.ValueOf[BaseField]("6642986649277737896895099841157338849756884624223791368568736753789869171621550347374886762871833481613998771197991983362560977795424796669802885544577533937046979408514940747205131194031961638448378971158617113729301655128080500") + PrecomputedLines[1][96] = emulated.ValueOf[BaseField]("763985849257341256339914715065287204175615450272088510224646579871565477113676143092909961490765340157702889934511575518026834191072633853340695222233058383715662860411394565262571083422252868386657072058634490756103926667752273") + PrecomputedLines[2][96] = emulated.ValueOf[BaseField]("2111894809768291771234699635254368429563023687238202955565452114391863181226788809996109782522385019551444976548355096590573442756394819488413598826438205621159997034216435139330286194346631796724090675989720829218090134771863380") + PrecomputedLines[3][96] = emulated.ValueOf[BaseField]("5834555584761253568870488261794415860686576893238808172507818342859167083726502551898547690129966013381778535451716397180093294298482738946917975249397680840145468832566368453858268282532976383934291095736173876314444871374184585") // i = 95 j = 0 - PrecomputedLines[0][95] = emulated.ValueOf[emulated.BW6761Fp]("4554372301264166241512694625156409973186315660619955572770107356027531185393192097476447792179708528750421296628447477553088287851446168233462584388645512846895928787087711505667449324227903556816251973558826672520856058023864978") - PrecomputedLines[1][95] = emulated.ValueOf[emulated.BW6761Fp]("4072237732151310407138039382271373859807467820006593734390759255740489586569827077454370070958985964666982375219512156249416895894472792797738360119987295845072417172187075203407891945077491781719818062695939265060511011749334741") + PrecomputedLines[0][95] = emulated.ValueOf[BaseField]("4554372301264166241512694625156409973186315660619955572770107356027531185393192097476447792179708528750421296628447477553088287851446168233462584388645512846895928787087711505667449324227903556816251973558826672520856058023864978") + PrecomputedLines[1][95] = emulated.ValueOf[BaseField]("4072237732151310407138039382271373859807467820006593734390759255740489586569827077454370070958985964666982375219512156249416895894472792797738360119987295845072417172187075203407891945077491781719818062695939265060511011749334741") // i = 94 j = 0 - PrecomputedLines[0][94] = emulated.ValueOf[emulated.BW6761Fp]("6510899928553873687067597313066987710884205441615256395333009047888231930982473929562832370792158708449142959652644902462625671956767270578113087761349674803610849401013694504995254886310324009708372106250447336111780658151174117") - PrecomputedLines[1][94] = emulated.ValueOf[emulated.BW6761Fp]("3716985894399679835698500839130297246131682628773524156193981743084313332999772166147103952311960776512057328690694812579802783619226508819684456878978751163445988521637432649774939222893766338589698431788169606678099020184105659") + PrecomputedLines[0][94] = emulated.ValueOf[BaseField]("6510899928553873687067597313066987710884205441615256395333009047888231930982473929562832370792158708449142959652644902462625671956767270578113087761349674803610849401013694504995254886310324009708372106250447336111780658151174117") + PrecomputedLines[1][94] = emulated.ValueOf[BaseField]("3716985894399679835698500839130297246131682628773524156193981743084313332999772166147103952311960776512057328690694812579802783619226508819684456878978751163445988521637432649774939222893766338589698431788169606678099020184105659") // i = 93 j = 3 - PrecomputedLines[0][93] = emulated.ValueOf[emulated.BW6761Fp]("5047907951035141625499289119782080570696114189985987894831790618317825143013530787999864121162182855689345001033675318300842414213335676262887456422130547583822551127905049725472675504164411132220200872844876890004454445202796848") - PrecomputedLines[1][93] = emulated.ValueOf[emulated.BW6761Fp]("744443940877440155852839401495473654127016275733517126510710750437701880197577129845552629949810062222202490220131566785418840939241657307884394435645700947546109375214237696967397028953889952749537267956254343296685593919841751") - PrecomputedLines[2][93] = emulated.ValueOf[emulated.BW6761Fp]("405397734594187466210599173815534415630420994025799265503903411229120704575608241682072998863209399054805243315634503312190255263288112805779208908719331201965374614272443482000461635138424130384687385847020666368559442786917459") - PrecomputedLines[3][93] = emulated.ValueOf[emulated.BW6761Fp]("2696790088947677357321226274149871437764533101159544129892669487973615527359684570609962654836322323267289273293861803643578367774704764762323540015313991701554039225880648603140983994202127233185175940529764493913084770994846593") + PrecomputedLines[0][93] = emulated.ValueOf[BaseField]("5047907951035141625499289119782080570696114189985987894831790618317825143013530787999864121162182855689345001033675318300842414213335676262887456422130547583822551127905049725472675504164411132220200872844876890004454445202796848") + PrecomputedLines[1][93] = emulated.ValueOf[BaseField]("744443940877440155852839401495473654127016275733517126510710750437701880197577129845552629949810062222202490220131566785418840939241657307884394435645700947546109375214237696967397028953889952749537267956254343296685593919841751") + PrecomputedLines[2][93] = emulated.ValueOf[BaseField]("405397734594187466210599173815534415630420994025799265503903411229120704575608241682072998863209399054805243315634503312190255263288112805779208908719331201965374614272443482000461635138424130384687385847020666368559442786917459") + PrecomputedLines[3][93] = emulated.ValueOf[BaseField]("2696790088947677357321226274149871437764533101159544129892669487973615527359684570609962654836322323267289273293861803643578367774704764762323540015313991701554039225880648603140983994202127233185175940529764493913084770994846593") // i = 92 j = 0 - PrecomputedLines[0][92] = emulated.ValueOf[emulated.BW6761Fp]("1778118225306862528653893340786894106058338634993301064843865041738491171509980090474610613329922231665151447630778779262936323295114184794655109554630765558760483766521331613645137958731849488238994508990367916232936238599801931") - PrecomputedLines[1][92] = emulated.ValueOf[emulated.BW6761Fp]("4105725370160443778676147094095182156751981636198800700531093765665160264349249532223141327824925114515260913439303886102256066220953645440240448328492268791346838243081878928038732773595681209352663512771678125612393529622126991") + PrecomputedLines[0][92] = emulated.ValueOf[BaseField]("1778118225306862528653893340786894106058338634993301064843865041738491171509980090474610613329922231665151447630778779262936323295114184794655109554630765558760483766521331613645137958731849488238994508990367916232936238599801931") + PrecomputedLines[1][92] = emulated.ValueOf[BaseField]("4105725370160443778676147094095182156751981636198800700531093765665160264349249532223141327824925114515260913439303886102256066220953645440240448328492268791346838243081878928038732773595681209352663512771678125612393529622126991") // i = 91 j = 0 - PrecomputedLines[0][91] = emulated.ValueOf[emulated.BW6761Fp]("4600362245729613938347146383617215424783938802440644201628282454478556194351323702906397430611076765509583670325072759904615561268681689452702508532237183921664395384926920354024313452086066345089232241798541690259686322185162273") - PrecomputedLines[1][91] = emulated.ValueOf[emulated.BW6761Fp]("6872426908284539953361622842949373424213870462893858001102304251139191574488922086389439832568944595393555449548692141770650107664958472796235253782268295422026242252114475104252428564451697348055550628555203918153412459460534810") + PrecomputedLines[0][91] = emulated.ValueOf[BaseField]("4600362245729613938347146383617215424783938802440644201628282454478556194351323702906397430611076765509583670325072759904615561268681689452702508532237183921664395384926920354024313452086066345089232241798541690259686322185162273") + PrecomputedLines[1][91] = emulated.ValueOf[BaseField]("6872426908284539953361622842949373424213870462893858001102304251139191574488922086389439832568944595393555449548692141770650107664958472796235253782268295422026242252114475104252428564451697348055550628555203918153412459460534810") // i = 90 j = 0 - PrecomputedLines[0][90] = emulated.ValueOf[emulated.BW6761Fp]("972238710294108691821576508451222523325936231175169103221318647177961008156434479190946297408489211903837717946830240136791276876475825835667664504728158588476278139573707686410501625612772061520730264742612657926085350356866829") - PrecomputedLines[1][90] = emulated.ValueOf[emulated.BW6761Fp]("1510181743744786712591585351931772930337667831480848631490664096747364724169957789195294155846340729886205788034650789517010294174011248598866252696801023552494521982312355974258161015191981410765377192634370898289227817443383417") + PrecomputedLines[0][90] = emulated.ValueOf[BaseField]("972238710294108691821576508451222523325936231175169103221318647177961008156434479190946297408489211903837717946830240136791276876475825835667664504728158588476278139573707686410501625612772061520730264742612657926085350356866829") + PrecomputedLines[1][90] = emulated.ValueOf[BaseField]("1510181743744786712591585351931772930337667831480848631490664096747364724169957789195294155846340729886205788034650789517010294174011248598866252696801023552494521982312355974258161015191981410765377192634370898289227817443383417") // i = 89 j = 0 - PrecomputedLines[0][89] = emulated.ValueOf[emulated.BW6761Fp]("5557506933950386763218483231725931480648969308465314223083209985767634902903171046015407999810542542424552137025017112365331409457975213648715299200605178027178239773253939711354993413274425279759617940801473937158802339625367106") - PrecomputedLines[1][89] = emulated.ValueOf[emulated.BW6761Fp]("1025310966880184379491710688665364390880187078341049897527558452857000641929877892487550584006724822722919195503446161976221790997828334084748364502503873679170302110669101931916815125014568929775499684740501231187934011945575051") + PrecomputedLines[0][89] = emulated.ValueOf[BaseField]("5557506933950386763218483231725931480648969308465314223083209985767634902903171046015407999810542542424552137025017112365331409457975213648715299200605178027178239773253939711354993413274425279759617940801473937158802339625367106") + PrecomputedLines[1][89] = emulated.ValueOf[BaseField]("1025310966880184379491710688665364390880187078341049897527558452857000641929877892487550584006724822722919195503446161976221790997828334084748364502503873679170302110669101931916815125014568929775499684740501231187934011945575051") // i = 88 j = 0 - PrecomputedLines[0][88] = emulated.ValueOf[emulated.BW6761Fp]("6737609173935499145966651085828355289411807624339037123166739321112841227388499205045307103023431429178709920183892337531364898858875360100153697870543555199239854099013655686595855597020820721037875702137136100623742392146547113") - PrecomputedLines[1][88] = emulated.ValueOf[emulated.BW6761Fp]("2659485018438977675047464196576279015694875536253089601427805835350948531419304111132951968008946706276266572073652283425392817348050712696346759099142455444582291114849705129489012295302147939302874413708743102287044740793505384") + PrecomputedLines[0][88] = emulated.ValueOf[BaseField]("6737609173935499145966651085828355289411807624339037123166739321112841227388499205045307103023431429178709920183892337531364898858875360100153697870543555199239854099013655686595855597020820721037875702137136100623742392146547113") + PrecomputedLines[1][88] = emulated.ValueOf[BaseField]("2659485018438977675047464196576279015694875536253089601427805835350948531419304111132951968008946706276266572073652283425392817348050712696346759099142455444582291114849705129489012295302147939302874413708743102287044740793505384") // i = 87 j = 0 - PrecomputedLines[0][87] = emulated.ValueOf[emulated.BW6761Fp]("4441151071852276306298209823658750857395590614091535791519200966732884109870930067806083302428289470764924232908921416597828389865940540731878474135112792372490962316681415335864107748995061444417275473434317270174982090608385971") - PrecomputedLines[1][87] = emulated.ValueOf[emulated.BW6761Fp]("4839626429060666648820106860500068908374996974648867422022249155639435134527692095743868784198679123972177173528127658202666042870879477969349613000705157462873430251563459916032762882346570618335137910474671866635860602585367349") + PrecomputedLines[0][87] = emulated.ValueOf[BaseField]("4441151071852276306298209823658750857395590614091535791519200966732884109870930067806083302428289470764924232908921416597828389865940540731878474135112792372490962316681415335864107748995061444417275473434317270174982090608385971") + PrecomputedLines[1][87] = emulated.ValueOf[BaseField]("4839626429060666648820106860500068908374996974648867422022249155639435134527692095743868784198679123972177173528127658202666042870879477969349613000705157462873430251563459916032762882346570618335137910474671866635860602585367349") // i = 86 j = 0 - PrecomputedLines[0][86] = emulated.ValueOf[emulated.BW6761Fp]("4509661640469976049870221335189922597441654768402802889795384802615621925508423937026572412307489914032465870638670846049030819747364558475564741645709494331762666674404206046263976688444921433821673714720135048965856377229611628") - PrecomputedLines[1][86] = emulated.ValueOf[emulated.BW6761Fp]("3487870318670087220135642823070529587459810126962147894043319535952413604020763422619481168610564465706302879778881124586413423575607096272785188951321134130211744054584817344450446549888147090168331179905987560684942220425658421") + PrecomputedLines[0][86] = emulated.ValueOf[BaseField]("4509661640469976049870221335189922597441654768402802889795384802615621925508423937026572412307489914032465870638670846049030819747364558475564741645709494331762666674404206046263976688444921433821673714720135048965856377229611628") + PrecomputedLines[1][86] = emulated.ValueOf[BaseField]("3487870318670087220135642823070529587459810126962147894043319535952413604020763422619481168610564465706302879778881124586413423575607096272785188951321134130211744054584817344450446549888147090168331179905987560684942220425658421") // i = 85 j = 0 - PrecomputedLines[0][85] = emulated.ValueOf[emulated.BW6761Fp]("1519001864958777427421059765226923260984666053267206576476800868702285323411256327154788822327142278385782412542329663866678475529205929176640075196345571119467595511484440425730279526442276708660390690638808053358152183571843864") - PrecomputedLines[1][85] = emulated.ValueOf[emulated.BW6761Fp]("339618474481374233408653340286365880775983516984272638090335996177627212968251512436111248759221452748989633180342131444085812774053387887544791732345486839018109192502385591161195444367505365221930689157110125467756547838849643") + PrecomputedLines[0][85] = emulated.ValueOf[BaseField]("1519001864958777427421059765226923260984666053267206576476800868702285323411256327154788822327142278385782412542329663866678475529205929176640075196345571119467595511484440425730279526442276708660390690638808053358152183571843864") + PrecomputedLines[1][85] = emulated.ValueOf[BaseField]("339618474481374233408653340286365880775983516984272638090335996177627212968251512436111248759221452748989633180342131444085812774053387887544791732345486839018109192502385591161195444367505365221930689157110125467756547838849643") // i = 84 j = 0 - PrecomputedLines[0][84] = emulated.ValueOf[emulated.BW6761Fp]("5383707318799980417127243658341454006060231601550683158066499356314664342842964473973932129039747978225819860930748841019638264473752363178099272936190083263481626973641022407497920053616402716500855599794452310459194652961209200") - PrecomputedLines[1][84] = emulated.ValueOf[emulated.BW6761Fp]("1349646528445772325728229877724689627031743523671417772446520129629622853654155091055539773980844706622058488772223461616911849918670516363806854356777662287718009008499554764276532161656086868870990280218941085533631039125075371") + PrecomputedLines[0][84] = emulated.ValueOf[BaseField]("5383707318799980417127243658341454006060231601550683158066499356314664342842964473973932129039747978225819860930748841019638264473752363178099272936190083263481626973641022407497920053616402716500855599794452310459194652961209200") + PrecomputedLines[1][84] = emulated.ValueOf[BaseField]("1349646528445772325728229877724689627031743523671417772446520129629622853654155091055539773980844706622058488772223461616911849918670516363806854356777662287718009008499554764276532161656086868870990280218941085533631039125075371") // i = 83 j = 0 - PrecomputedLines[0][83] = emulated.ValueOf[emulated.BW6761Fp]("1919037141000340015532240777217515754000237076628800751689553494755852848880370990254326438067118347725611618358609018159924461271671767113830563241617627756081864476029381221519946219301823123343613957296437308054897105359297269") - PrecomputedLines[1][83] = emulated.ValueOf[emulated.BW6761Fp]("6193622106953370645488984456888022941558613899911812237087544262038237716517979317041586005330078927094776330098927225611063600454806197793086266746766986884718391839124951252821859030591980191698766819150227459130246310661346190") + PrecomputedLines[0][83] = emulated.ValueOf[BaseField]("1919037141000340015532240777217515754000237076628800751689553494755852848880370990254326438067118347725611618358609018159924461271671767113830563241617627756081864476029381221519946219301823123343613957296437308054897105359297269") + PrecomputedLines[1][83] = emulated.ValueOf[BaseField]("6193622106953370645488984456888022941558613899911812237087544262038237716517979317041586005330078927094776330098927225611063600454806197793086266746766986884718391839124951252821859030591980191698766819150227459130246310661346190") // i = 82 j = 0 - PrecomputedLines[0][82] = emulated.ValueOf[emulated.BW6761Fp]("5604334867184504283101885762199377590849044920799905376603908315985233209750313152086865257550332811558800330290623287217389163687434328275776318719371903699144276765062224548014642774106630025931227796845462926473453370878217054") - PrecomputedLines[1][82] = emulated.ValueOf[emulated.BW6761Fp]("5121837820524244380633559304962861949517011132126154417129457763839557571454772023100009470380570446804371859803558477476971571907123955873440777537352059389278975949057671557100601956373951179598842161422364345955824227067821780") + PrecomputedLines[0][82] = emulated.ValueOf[BaseField]("5604334867184504283101885762199377590849044920799905376603908315985233209750313152086865257550332811558800330290623287217389163687434328275776318719371903699144276765062224548014642774106630025931227796845462926473453370878217054") + PrecomputedLines[1][82] = emulated.ValueOf[BaseField]("5121837820524244380633559304962861949517011132126154417129457763839557571454772023100009470380570446804371859803558477476971571907123955873440777537352059389278975949057671557100601956373951179598842161422364345955824227067821780") // i = 81 j = 0 - PrecomputedLines[0][81] = emulated.ValueOf[emulated.BW6761Fp]("6067039568545267838181130403676950028372045277906346948660766639906798973444122264583559461246057301784807410742590458307288485379144153357711779574231768382567438208479868245345445057744643748674697515903978614414114874814062307") - PrecomputedLines[1][81] = emulated.ValueOf[emulated.BW6761Fp]("6880991716540357902750875467195505448773685328233955890419023527621077685216030913665134779737441555378073137742920581503827375790310573288149146115129419180701788936806954316041205676346559444100063149390039298206525864640726623") + PrecomputedLines[0][81] = emulated.ValueOf[BaseField]("6067039568545267838181130403676950028372045277906346948660766639906798973444122264583559461246057301784807410742590458307288485379144153357711779574231768382567438208479868245345445057744643748674697515903978614414114874814062307") + PrecomputedLines[1][81] = emulated.ValueOf[BaseField]("6880991716540357902750875467195505448773685328233955890419023527621077685216030913665134779737441555378073137742920581503827375790310573288149146115129419180701788936806954316041205676346559444100063149390039298206525864640726623") // i = 80 j = 0 - PrecomputedLines[0][80] = emulated.ValueOf[emulated.BW6761Fp]("6869953723292757957249624864306641209156649908829060369956669082858146731880752960326281552744617251261860654696462155414768691078479849090594684751909462835964342943852143551132859576077229991406111489281697940032774868436176999") - PrecomputedLines[1][80] = emulated.ValueOf[emulated.BW6761Fp]("5614709334833871645446373840318419298283648712925576675331700402875726133202590836378902568367322443705376968142770629571737036781249560011213286630255110198242550012818111109270093534607349695639612197752174557798917852647048250") + PrecomputedLines[0][80] = emulated.ValueOf[BaseField]("6869953723292757957249624864306641209156649908829060369956669082858146731880752960326281552744617251261860654696462155414768691078479849090594684751909462835964342943852143551132859576077229991406111489281697940032774868436176999") + PrecomputedLines[1][80] = emulated.ValueOf[BaseField]("5614709334833871645446373840318419298283648712925576675331700402875726133202590836378902568367322443705376968142770629571737036781249560011213286630255110198242550012818111109270093534607349695639612197752174557798917852647048250") // i = 79 j = 0 - PrecomputedLines[0][79] = emulated.ValueOf[emulated.BW6761Fp]("4980594522020125085337838265204820771621076729908105705805854424277251459039298036884763908300381600489511459131191940043084494214578610644783861208395158996603441510107318092064373656027862697953744766191485979617155122884562584") - PrecomputedLines[1][79] = emulated.ValueOf[emulated.BW6761Fp]("4042813205981909877511870025047100983992651260939106481383083811949412209961122330723238535322973674617223461600442099649058372802059938570280751988245230293274349336371780245459427109587547862323557335478307216536115035786329427") + PrecomputedLines[0][79] = emulated.ValueOf[BaseField]("4980594522020125085337838265204820771621076729908105705805854424277251459039298036884763908300381600489511459131191940043084494214578610644783861208395158996603441510107318092064373656027862697953744766191485979617155122884562584") + PrecomputedLines[1][79] = emulated.ValueOf[BaseField]("4042813205981909877511870025047100983992651260939106481383083811949412209961122330723238535322973674617223461600442099649058372802059938570280751988245230293274349336371780245459427109587547862323557335478307216536115035786329427") // i = 78 j = 0 - PrecomputedLines[0][78] = emulated.ValueOf[emulated.BW6761Fp]("4736014237661124474919325837323255333663929534870042114903754288732701949896601812125046300196794235153463997276154765275115330368384777526897346573674986337596087801165856657251875469708964755706589951812065576029605368880307330") - PrecomputedLines[1][78] = emulated.ValueOf[emulated.BW6761Fp]("1957240675950958452986564830220902690609413863957547458393400303485176228644772005244521114574569019356081726863230132145863503283354289808843407877002866564348243635922163753294688198520892938154896179149523387763071879026192281") + PrecomputedLines[0][78] = emulated.ValueOf[BaseField]("4736014237661124474919325837323255333663929534870042114903754288732701949896601812125046300196794235153463997276154765275115330368384777526897346573674986337596087801165856657251875469708964755706589951812065576029605368880307330") + PrecomputedLines[1][78] = emulated.ValueOf[BaseField]("1957240675950958452986564830220902690609413863957547458393400303485176228644772005244521114574569019356081726863230132145863503283354289808843407877002866564348243635922163753294688198520892938154896179149523387763071879026192281") // i = 77 j = 0 - PrecomputedLines[0][77] = emulated.ValueOf[emulated.BW6761Fp]("1896794919986848060393220222925542229088427272504480911387044183891613533212038341442571592078156720914592673025986869785902458920643524703635569058217402002541817375023305033040017178091785230876069201061027396160787380383913485") - PrecomputedLines[1][77] = emulated.ValueOf[emulated.BW6761Fp]("952118686796326173491479294145358823162844313805069901337052929645198665143877135883241333497438934099314203159402316956587916577387445642834370029253487949574816963413865062830574107352788125037245193643382776835744743710856415") + PrecomputedLines[0][77] = emulated.ValueOf[BaseField]("1896794919986848060393220222925542229088427272504480911387044183891613533212038341442571592078156720914592673025986869785902458920643524703635569058217402002541817375023305033040017178091785230876069201061027396160787380383913485") + PrecomputedLines[1][77] = emulated.ValueOf[BaseField]("952118686796326173491479294145358823162844313805069901337052929645198665143877135883241333497438934099314203159402316956587916577387445642834370029253487949574816963413865062830574107352788125037245193643382776835744743710856415") // i = 76 j = 0 - PrecomputedLines[0][76] = emulated.ValueOf[emulated.BW6761Fp]("1410246511278881873376558292841685790024282857896728342149001813635677847218604552303527026098386447762274364822183314739464128137999683837672885487186967847641717287157617576045185484714232591611567434185430519840283187165531887") - PrecomputedLines[1][76] = emulated.ValueOf[emulated.BW6761Fp]("4119705459903045226159670551727402718128564082540864855361906266183721299733904153174114690207935029103638899913664705930838982224621762050269570580809489779078132146847473253910183165605063622774796014387328879207695757913799201") + PrecomputedLines[0][76] = emulated.ValueOf[BaseField]("1410246511278881873376558292841685790024282857896728342149001813635677847218604552303527026098386447762274364822183314739464128137999683837672885487186967847641717287157617576045185484714232591611567434185430519840283187165531887") + PrecomputedLines[1][76] = emulated.ValueOf[BaseField]("4119705459903045226159670551727402718128564082540864855361906266183721299733904153174114690207935029103638899913664705930838982224621762050269570580809489779078132146847473253910183165605063622774796014387328879207695757913799201") // i = 75 j = 0 - PrecomputedLines[0][75] = emulated.ValueOf[emulated.BW6761Fp]("2072609478320001524320717173962571134711535941640067489637092238715040645907960807893942921283120113507698307002805316256993964956771568079631701795714954017552892285562026519328855416196541482143510574319254978277137455571778001") - PrecomputedLines[1][75] = emulated.ValueOf[emulated.BW6761Fp]("5894714538160407682287836474406214563671983369063207757521309934251027316132097965174061393141629129163127240409904888123486261567289075202307479756611875308157695683933323381961136441686218200020586708364128872743199583389014647") + PrecomputedLines[0][75] = emulated.ValueOf[BaseField]("2072609478320001524320717173962571134711535941640067489637092238715040645907960807893942921283120113507698307002805316256993964956771568079631701795714954017552892285562026519328855416196541482143510574319254978277137455571778001") + PrecomputedLines[1][75] = emulated.ValueOf[BaseField]("5894714538160407682287836474406214563671983369063207757521309934251027316132097965174061393141629129163127240409904888123486261567289075202307479756611875308157695683933323381961136441686218200020586708364128872743199583389014647") // i = 74 j = 0 - PrecomputedLines[0][74] = emulated.ValueOf[emulated.BW6761Fp]("5106682279392935961031812161867418543946492460670149936266921188569667729835222767203306768397343414328957015700647431747733838833765379422556785306560650405609290868938919653580246910237324702779521559387178746171315070090318153") - PrecomputedLines[1][74] = emulated.ValueOf[emulated.BW6761Fp]("3153429055905459861967098840411143630797549188658234822637249428037854322116749300600880527338092057104138600571085314159325239783013442224777221397555888980848209009841714998763507800323867871420465284679548596540839296513048642") + PrecomputedLines[0][74] = emulated.ValueOf[BaseField]("5106682279392935961031812161867418543946492460670149936266921188569667729835222767203306768397343414328957015700647431747733838833765379422556785306560650405609290868938919653580246910237324702779521559387178746171315070090318153") + PrecomputedLines[1][74] = emulated.ValueOf[BaseField]("3153429055905459861967098840411143630797549188658234822637249428037854322116749300600880527338092057104138600571085314159325239783013442224777221397555888980848209009841714998763507800323867871420465284679548596540839296513048642") // i = 73 j = 0 - PrecomputedLines[0][73] = emulated.ValueOf[emulated.BW6761Fp]("2309558581515697525806105514114501512441326764395967792860310494360211491927848765373205741433111502114874822272883456630217937235469291046785367236821204903743476909251764658419705892503554921768097444904548609966973388109109543") - PrecomputedLines[1][73] = emulated.ValueOf[emulated.BW6761Fp]("4406788481817611645656548143390177310692203397871589459859491665399736118029103811823041128102326412085453737102272295417521168777404767030473867233710801470981825554027554437439988384534097338870387847812447345301715080956941196") + PrecomputedLines[0][73] = emulated.ValueOf[BaseField]("2309558581515697525806105514114501512441326764395967792860310494360211491927848765373205741433111502114874822272883456630217937235469291046785367236821204903743476909251764658419705892503554921768097444904548609966973388109109543") + PrecomputedLines[1][73] = emulated.ValueOf[BaseField]("4406788481817611645656548143390177310692203397871589459859491665399736118029103811823041128102326412085453737102272295417521168777404767030473867233710801470981825554027554437439988384534097338870387847812447345301715080956941196") // i = 72 j = 0 - PrecomputedLines[0][72] = emulated.ValueOf[emulated.BW6761Fp]("70143801456641879605852143513249994253942952838517305812198390578544244249425463845374750697973710144773229658121146105375537294250338032985216846454878464214405585464566225251859329111605976969190077368551199988262487332213472") - PrecomputedLines[1][72] = emulated.ValueOf[emulated.BW6761Fp]("4207471934217394013864415886266297391321574222138493922397775146262852761128641397456358704993180728128223826867603382191837257839100565460087185314954741131340867336141963696867361333547653842005819524697714614979577888292080256") + PrecomputedLines[0][72] = emulated.ValueOf[BaseField]("70143801456641879605852143513249994253942952838517305812198390578544244249425463845374750697973710144773229658121146105375537294250338032985216846454878464214405585464566225251859329111605976969190077368551199988262487332213472") + PrecomputedLines[1][72] = emulated.ValueOf[BaseField]("4207471934217394013864415886266297391321574222138493922397775146262852761128641397456358704993180728128223826867603382191837257839100565460087185314954741131340867336141963696867361333547653842005819524697714614979577888292080256") // i = 71 j = 0 - PrecomputedLines[0][71] = emulated.ValueOf[emulated.BW6761Fp]("5171411332384846522009308600171271717775656813462368729163310066978131550784041262095622048016317730789429706142084360644722417875472080028887935535933365638293239021887851352065226215946911104922399560360027754023282146751173127") - PrecomputedLines[1][71] = emulated.ValueOf[emulated.BW6761Fp]("3308699969390408117425675800034852620724152781693526802125365703296957537619549597281048430703238670047566480207149204289787144466800450766728863836132831936610209196903041136317436653727727840725501386858902193854262207493660820") + PrecomputedLines[0][71] = emulated.ValueOf[BaseField]("5171411332384846522009308600171271717775656813462368729163310066978131550784041262095622048016317730789429706142084360644722417875472080028887935535933365638293239021887851352065226215946911104922399560360027754023282146751173127") + PrecomputedLines[1][71] = emulated.ValueOf[BaseField]("3308699969390408117425675800034852620724152781693526802125365703296957537619549597281048430703238670047566480207149204289787144466800450766728863836132831936610209196903041136317436653727727840725501386858902193854262207493660820") // i = 70 j = 0 - PrecomputedLines[0][70] = emulated.ValueOf[emulated.BW6761Fp]("2157730189967321961590154478681014647736161701291572661503691745828224724570690384542207251893871380972626395818536195165244317011459475104080304183755778781271580095682599104560528323388969877297057997164532517457316922473122843") - PrecomputedLines[1][70] = emulated.ValueOf[emulated.BW6761Fp]("6166779349533636404079090091198084654595551428484168319226064024022096225476313444140911411739596624384367001596401007457610736149102582292110622423512521528219451589757047219684985131650713379980437753685311223968789274660506189") + PrecomputedLines[0][70] = emulated.ValueOf[BaseField]("2157730189967321961590154478681014647736161701291572661503691745828224724570690384542207251893871380972626395818536195165244317011459475104080304183755778781271580095682599104560528323388969877297057997164532517457316922473122843") + PrecomputedLines[1][70] = emulated.ValueOf[BaseField]("6166779349533636404079090091198084654595551428484168319226064024022096225476313444140911411739596624384367001596401007457610736149102582292110622423512521528219451589757047219684985131650713379980437753685311223968789274660506189") // i = 69 j = 0 - PrecomputedLines[0][69] = emulated.ValueOf[emulated.BW6761Fp]("3693545555393262149090091890796988367031750870154119151938382046789970646209103750043260735558026634783406780454806183283167148193304651913829826658787420693591783609897868879309931049485834140104439475735084228792342105678001859") - PrecomputedLines[1][69] = emulated.ValueOf[emulated.BW6761Fp]("3454579417845988721145112391791524361723943876865961783871147642976222000744550940707001904868088850717020216623985541442884486667224875720068404843684775351971798041419211492654134593068373225320963803238503760103944066915840816") + PrecomputedLines[0][69] = emulated.ValueOf[BaseField]("3693545555393262149090091890796988367031750870154119151938382046789970646209103750043260735558026634783406780454806183283167148193304651913829826658787420693591783609897868879309931049485834140104439475735084228792342105678001859") + PrecomputedLines[1][69] = emulated.ValueOf[BaseField]("3454579417845988721145112391791524361723943876865961783871147642976222000744550940707001904868088850717020216623985541442884486667224875720068404843684775351971798041419211492654134593068373225320963803238503760103944066915840816") // i = 68 j = 0 - PrecomputedLines[0][68] = emulated.ValueOf[emulated.BW6761Fp]("4316617566488630990186800831569323180961600325467315782520452617705469884682333093818828825578494920297533166697413661723199052237884768061452289253625270126685130694402411159604161939860148014467733374435152294915689788782393563") - PrecomputedLines[1][68] = emulated.ValueOf[emulated.BW6761Fp]("4190664687932908342055565978870270182687821852907651804349091805994979881604990178094590921338075567591395798595057534786427763408202515738478533832353247698077120923788657200258079726159139609904292140147845063993802634358775287") + PrecomputedLines[0][68] = emulated.ValueOf[BaseField]("4316617566488630990186800831569323180961600325467315782520452617705469884682333093818828825578494920297533166697413661723199052237884768061452289253625270126685130694402411159604161939860148014467733374435152294915689788782393563") + PrecomputedLines[1][68] = emulated.ValueOf[BaseField]("4190664687932908342055565978870270182687821852907651804349091805994979881604990178094590921338075567591395798595057534786427763408202515738478533832353247698077120923788657200258079726159139609904292140147845063993802634358775287") // i = 67 j = 0 - PrecomputedLines[0][67] = emulated.ValueOf[emulated.BW6761Fp]("84944449596492710546484059085756868056952590611144907344324523446407105322952117478388042103840653905762546055111744847509194704507606178767471978158159198402631558743814408643460715249083238104344191220434949959361481291146430") - PrecomputedLines[1][67] = emulated.ValueOf[emulated.BW6761Fp]("5649170502978062479430942300569604180065205047447957641053208532178356906593461516672428743249571520776794263298225069421489557741598532601998487905123429777536764343411900779513959797677672828995577356475491526821338663890518141") + PrecomputedLines[0][67] = emulated.ValueOf[BaseField]("84944449596492710546484059085756868056952590611144907344324523446407105322952117478388042103840653905762546055111744847509194704507606178767471978158159198402631558743814408643460715249083238104344191220434949959361481291146430") + PrecomputedLines[1][67] = emulated.ValueOf[BaseField]("5649170502978062479430942300569604180065205047447957641053208532178356906593461516672428743249571520776794263298225069421489557741598532601998487905123429777536764343411900779513959797677672828995577356475491526821338663890518141") // i = 66 j = 0 - PrecomputedLines[0][66] = emulated.ValueOf[emulated.BW6761Fp]("2603576310901490311292135150953384774277318221989961250590025834406631430863918568717331918023797152480102239064769151694292624247190535708671290590222799687160437151107174463689862580134536805376273262065253737549576152380168367") - PrecomputedLines[1][66] = emulated.ValueOf[emulated.BW6761Fp]("5309265426363429763309068708763050192687298963793233029854386808966038869914249931311696251275662316034717601938626668997195338046712132642237298096821232686285400955651349643194976882039249387172924417706285549777109346548006226") + PrecomputedLines[0][66] = emulated.ValueOf[BaseField]("2603576310901490311292135150953384774277318221989961250590025834406631430863918568717331918023797152480102239064769151694292624247190535708671290590222799687160437151107174463689862580134536805376273262065253737549576152380168367") + PrecomputedLines[1][66] = emulated.ValueOf[BaseField]("5309265426363429763309068708763050192687298963793233029854386808966038869914249931311696251275662316034717601938626668997195338046712132642237298096821232686285400955651349643194976882039249387172924417706285549777109346548006226") // i = 65 j = 0 - PrecomputedLines[0][65] = emulated.ValueOf[emulated.BW6761Fp]("1341657118469604693612921962537974911241109483254412491247268402952466550719072000823262496503676334235050127694663208876164873088040296471826215794963805354093057402941426034809948776619882576406112722703520543634493032593845711") - PrecomputedLines[1][65] = emulated.ValueOf[emulated.BW6761Fp]("4035700358596121039901170893467410034085393540830625930959994152433747836022300185439015628417359035385883786247038684823876857274515720164396191583808172302780457926458796266440756634932368614447938075150295060770207412294411668") + PrecomputedLines[0][65] = emulated.ValueOf[BaseField]("1341657118469604693612921962537974911241109483254412491247268402952466550719072000823262496503676334235050127694663208876164873088040296471826215794963805354093057402941426034809948776619882576406112722703520543634493032593845711") + PrecomputedLines[1][65] = emulated.ValueOf[BaseField]("4035700358596121039901170893467410034085393540830625930959994152433747836022300185439015628417359035385883786247038684823876857274515720164396191583808172302780457926458796266440756634932368614447938075150295060770207412294411668") // i = 64 j = 0 - PrecomputedLines[0][64] = emulated.ValueOf[emulated.BW6761Fp]("2930660277843850381294621887137108135255461149809829909821377112483523980356050649163697177214375058704749326539551334374875177166039847118094070598604192734655753566201882039674293825146145171463504903948558735526872827397160225") - PrecomputedLines[1][64] = emulated.ValueOf[emulated.BW6761Fp]("5988701523929581560610984180294379754868966835887441912002458746197296016937703656915666559413702631263625903364061495057456665933686956303365386760706868014348860600757271537167901231685104290021746466078585138178535287513704928") + PrecomputedLines[0][64] = emulated.ValueOf[BaseField]("2930660277843850381294621887137108135255461149809829909821377112483523980356050649163697177214375058704749326539551334374875177166039847118094070598604192734655753566201882039674293825146145171463504903948558735526872827397160225") + PrecomputedLines[1][64] = emulated.ValueOf[BaseField]("5988701523929581560610984180294379754868966835887441912002458746197296016937703656915666559413702631263625903364061495057456665933686956303365386760706868014348860600757271537167901231685104290021746466078585138178535287513704928") // i = 63 j = 1 - PrecomputedLines[0][63] = emulated.ValueOf[emulated.BW6761Fp]("80235409916131560952531634926187129854936220704751108971854293712013441645643075028881285775953897977173679734102951555672688501659893316342601229001442455921225014886258110730476599533006387167516464943028770988848119565334752") - PrecomputedLines[1][63] = emulated.ValueOf[emulated.BW6761Fp]("5645697547669765807051699414436415014546553640139306333111837902631467486478350968354759006591722977647564900224120645931064019336202965082317873586323451596595667262804678770022271564685698580435094170621340150377645331219716242") - PrecomputedLines[2][63] = emulated.ValueOf[emulated.BW6761Fp]("3515801869518688586368276649287501032232253490995929213693667666745539961609686866702375975294290905260844112197318970382348421828085682589212450872191370133742395530357304231481107985085801003563913938437804645550415387469710798") - PrecomputedLines[3][63] = emulated.ValueOf[emulated.BW6761Fp]("2768627463899769153777616923498767453844638297259238819533268522374182517088993723558739521443440612431052316999526415454061437419946607135767416256326448665426899699928320017014638884327653368630859958928958084940598054664681103") + PrecomputedLines[0][63] = emulated.ValueOf[BaseField]("80235409916131560952531634926187129854936220704751108971854293712013441645643075028881285775953897977173679734102951555672688501659893316342601229001442455921225014886258110730476599533006387167516464943028770988848119565334752") + PrecomputedLines[1][63] = emulated.ValueOf[BaseField]("5645697547669765807051699414436415014546553640139306333111837902631467486478350968354759006591722977647564900224120645931064019336202965082317873586323451596595667262804678770022271564685698580435094170621340150377645331219716242") + PrecomputedLines[2][63] = emulated.ValueOf[BaseField]("3515801869518688586368276649287501032232253490995929213693667666745539961609686866702375975294290905260844112197318970382348421828085682589212450872191370133742395530357304231481107985085801003563913938437804645550415387469710798") + PrecomputedLines[3][63] = emulated.ValueOf[BaseField]("2768627463899769153777616923498767453844638297259238819533268522374182517088993723558739521443440612431052316999526415454061437419946607135767416256326448665426899699928320017014638884327653368630859958928958084940598054664681103") // i = 62 j = 0 - PrecomputedLines[0][62] = emulated.ValueOf[emulated.BW6761Fp]("6267498047223543516085913656269800094985799102121638318066218769205732496341485331266997143838105658275997583482766391902624817799699593190625745845913736192058521667981439900412382902440513697704842470946713488669728244855268941") - PrecomputedLines[1][62] = emulated.ValueOf[emulated.BW6761Fp]("3172495843608365767106104222699963433932721840779494687213669710696273729035389365567085042159376306508312592323212373903543196676243559717338575217311945824019683796186729014449875006088163914305245567518115276847148486469675416") + PrecomputedLines[0][62] = emulated.ValueOf[BaseField]("6267498047223543516085913656269800094985799102121638318066218769205732496341485331266997143838105658275997583482766391902624817799699593190625745845913736192058521667981439900412382902440513697704842470946713488669728244855268941") + PrecomputedLines[1][62] = emulated.ValueOf[BaseField]("3172495843608365767106104222699963433932721840779494687213669710696273729035389365567085042159376306508312592323212373903543196676243559717338575217311945824019683796186729014449875006088163914305245567518115276847148486469675416") // i = 61 j = 0 - PrecomputedLines[0][61] = emulated.ValueOf[emulated.BW6761Fp]("6393185299135236521600743898901902046235665740374863049386140970534683752073956151008823232102598322138334082399707737488005513141361456335662035360356893792369078552986570350323576340398072873307536750890795347659446381995315753") - PrecomputedLines[1][61] = emulated.ValueOf[emulated.BW6761Fp]("3166198729288470960815119159020024849761120775693905362946234701033914940383170229751355601834908988520196149525495490902436617272651934048057104969447501071537789210462295263005230176802247844207966015330849259576240004475861347") + PrecomputedLines[0][61] = emulated.ValueOf[BaseField]("6393185299135236521600743898901902046235665740374863049386140970534683752073956151008823232102598322138334082399707737488005513141361456335662035360356893792369078552986570350323576340398072873307536750890795347659446381995315753") + PrecomputedLines[1][61] = emulated.ValueOf[BaseField]("3166198729288470960815119159020024849761120775693905362946234701033914940383170229751355601834908988520196149525495490902436617272651934048057104969447501071537789210462295263005230176802247844207966015330849259576240004475861347") // i = 60 j = 0 - PrecomputedLines[0][60] = emulated.ValueOf[emulated.BW6761Fp]("5933242427515184158698502243153492757724275395762347259631780046452701832550257433588929361739397299375972619193115264312711663457102177517470028944343796283322063886686941390353639393464956981156323711880431964717275018387701682") - PrecomputedLines[1][60] = emulated.ValueOf[emulated.BW6761Fp]("3384876030528746801023594675065685553683456870336735909759862775565134849351740466668332316834305760899655594942159390338717729639578479114411185241112463275424847947000663178421045281441831580381246432601271822070328156849153352") + PrecomputedLines[0][60] = emulated.ValueOf[BaseField]("5933242427515184158698502243153492757724275395762347259631780046452701832550257433588929361739397299375972619193115264312711663457102177517470028944343796283322063886686941390353639393464956981156323711880431964717275018387701682") + PrecomputedLines[1][60] = emulated.ValueOf[BaseField]("3384876030528746801023594675065685553683456870336735909759862775565134849351740466668332316834305760899655594942159390338717729639578479114411185241112463275424847947000663178421045281441831580381246432601271822070328156849153352") // i = 59 j = 0 - PrecomputedLines[0][59] = emulated.ValueOf[emulated.BW6761Fp]("5672202940327026564296098467511666610927719124345712212606253393184823723416117442821889411272955540222239709079800765814222617482044871298073480040855267633335674499253454179232541413791707149482883674890351686946817110883000228") - PrecomputedLines[1][59] = emulated.ValueOf[emulated.BW6761Fp]("1154543563423153595437057912539134386506457788445374295296155704509782049894375963754530214242479483842535098794085962783214265333207301572819449746417430876867561757821076871333678284882744783958574290553769899855932651808879891") + PrecomputedLines[0][59] = emulated.ValueOf[BaseField]("5672202940327026564296098467511666610927719124345712212606253393184823723416117442821889411272955540222239709079800765814222617482044871298073480040855267633335674499253454179232541413791707149482883674890351686946817110883000228") + PrecomputedLines[1][59] = emulated.ValueOf[BaseField]("1154543563423153595437057912539134386506457788445374295296155704509782049894375963754530214242479483842535098794085962783214265333207301572819449746417430876867561757821076871333678284882744783958574290553769899855932651808879891") // i = 58 j = 1 - PrecomputedLines[0][58] = emulated.ValueOf[emulated.BW6761Fp]("5494523358602689993082488462159401069622259263261384810777691036023979885833406510370827546720060333368038309757690955479832125270239855687629856598464690979905305508291102673871528818355512749132999808077739161976625609154087442") - PrecomputedLines[1][58] = emulated.ValueOf[emulated.BW6761Fp]("3889513228073300846774483449675405165412370889711908059928933828601820970272115969635282636780877852444112625854996590991089931313708119870086461825677989172964379008275991306511578482249736098151784221021103020403191511383026715") - PrecomputedLines[2][58] = emulated.ValueOf[emulated.BW6761Fp]("6817348152092217125383764111706396839178624284239986872074018495517405857300894298296426805941999338096243515994114168580699629757784818540853912737100720606253305749066953497290110273659748415521327759821798449434028823512899749") - PrecomputedLines[3][58] = emulated.ValueOf[emulated.BW6761Fp]("408441016040698462301045541028863542738760857595465526119973702087540331044892790379588279572626169110948234965342045564413136195279230719397130789960699105297260241439215852283327432361713263160794764750134587346851224358168016") + PrecomputedLines[0][58] = emulated.ValueOf[BaseField]("5494523358602689993082488462159401069622259263261384810777691036023979885833406510370827546720060333368038309757690955479832125270239855687629856598464690979905305508291102673871528818355512749132999808077739161976625609154087442") + PrecomputedLines[1][58] = emulated.ValueOf[BaseField]("3889513228073300846774483449675405165412370889711908059928933828601820970272115969635282636780877852444112625854996590991089931313708119870086461825677989172964379008275991306511578482249736098151784221021103020403191511383026715") + PrecomputedLines[2][58] = emulated.ValueOf[BaseField]("6817348152092217125383764111706396839178624284239986872074018495517405857300894298296426805941999338096243515994114168580699629757784818540853912737100720606253305749066953497290110273659748415521327759821798449434028823512899749") + PrecomputedLines[3][58] = emulated.ValueOf[BaseField]("408441016040698462301045541028863542738760857595465526119973702087540331044892790379588279572626169110948234965342045564413136195279230719397130789960699105297260241439215852283327432361713263160794764750134587346851224358168016") // i = 57 j = 0 - PrecomputedLines[0][57] = emulated.ValueOf[emulated.BW6761Fp]("904014207283845546342517026949002301938840680520511007708789153126108214252896375908459045568106923898014652347188514281811055130725468054629924731218357339456293621824634651205185088647436836303533136737375420850357755914019482") - PrecomputedLines[1][57] = emulated.ValueOf[emulated.BW6761Fp]("3021463156942607689893536499084418526149371959265368563253318239787696616342699376770327365917759552439071753047224832836277854106558072813015494652155076805617663734851882419677941639618620577565736429647390393259125626739995359") + PrecomputedLines[0][57] = emulated.ValueOf[BaseField]("904014207283845546342517026949002301938840680520511007708789153126108214252896375908459045568106923898014652347188514281811055130725468054629924731218357339456293621824634651205185088647436836303533136737375420850357755914019482") + PrecomputedLines[1][57] = emulated.ValueOf[BaseField]("3021463156942607689893536499084418526149371959265368563253318239787696616342699376770327365917759552439071753047224832836277854106558072813015494652155076805617663734851882419677941639618620577565736429647390393259125626739995359") // i = 56 j = 1 - PrecomputedLines[0][56] = emulated.ValueOf[emulated.BW6761Fp]("4002254150287973611774892958734645146330948131326012867658556213227131674782652425357472920865508721513207580088282234592571562733081211701929443114916737662262590051958147515409912013925831184717537636821719275182204257920247826") - PrecomputedLines[1][56] = emulated.ValueOf[emulated.BW6761Fp]("6650995954704541882285423797183833389117409382304102437747875050599180612204257823713527910062803417144644199841410840855424379322391268435824808936698654249193961626271529930100257320177120483894753385159475230006681183908486693") - PrecomputedLines[2][56] = emulated.ValueOf[emulated.BW6761Fp]("1731856182637246105907196771656973728242430938769551437479371960396568886577161343428444049436329132240591124171249486296193200751962793098717390700602949957161885965620835197484237467335434836086020378040872702181906955321234084") - PrecomputedLines[3][56] = emulated.ValueOf[emulated.BW6761Fp]("5904794864916998236634031354032726563042662734348742454636711408463512681053968061466581910826684656141140069538364115772383786783233506239578341464005935090344661046021052566188151710733410539127138076584927344794043393631875335") + PrecomputedLines[0][56] = emulated.ValueOf[BaseField]("4002254150287973611774892958734645146330948131326012867658556213227131674782652425357472920865508721513207580088282234592571562733081211701929443114916737662262590051958147515409912013925831184717537636821719275182204257920247826") + PrecomputedLines[1][56] = emulated.ValueOf[BaseField]("6650995954704541882285423797183833389117409382304102437747875050599180612204257823713527910062803417144644199841410840855424379322391268435824808936698654249193961626271529930100257320177120483894753385159475230006681183908486693") + PrecomputedLines[2][56] = emulated.ValueOf[BaseField]("1731856182637246105907196771656973728242430938769551437479371960396568886577161343428444049436329132240591124171249486296193200751962793098717390700602949957161885965620835197484237467335434836086020378040872702181906955321234084") + PrecomputedLines[3][56] = emulated.ValueOf[BaseField]("5904794864916998236634031354032726563042662734348742454636711408463512681053968061466581910826684656141140069538364115772383786783233506239578341464005935090344661046021052566188151710733410539127138076584927344794043393631875335") // i = 55 j = 0 - PrecomputedLines[0][55] = emulated.ValueOf[emulated.BW6761Fp]("4184818315804686687449311868339826992614263927786079890563005955265008801366363259097525486014913084688352218860421066209106161062321318169379423339655758015838219920065913612147776347966059741489852222087074304658538242226141107") - PrecomputedLines[1][55] = emulated.ValueOf[emulated.BW6761Fp]("1729436668893735497596788528818242711527297679305950102487681037960820908794154296615421895498309550090534641956418734833716440103307336957108046195961644346661843459382175352900679912453154393503174508250710602341932630635617104") + PrecomputedLines[0][55] = emulated.ValueOf[BaseField]("4184818315804686687449311868339826992614263927786079890563005955265008801366363259097525486014913084688352218860421066209106161062321318169379423339655758015838219920065913612147776347966059741489852222087074304658538242226141107") + PrecomputedLines[1][55] = emulated.ValueOf[BaseField]("1729436668893735497596788528818242711527297679305950102487681037960820908794154296615421895498309550090534641956418734833716440103307336957108046195961644346661843459382175352900679912453154393503174508250710602341932630635617104") // i = 54 j = 0 - PrecomputedLines[0][54] = emulated.ValueOf[emulated.BW6761Fp]("4028424328816457105275613631807939250693277717816481016645317988637513044482980841560103858167381177450927995343298109011721354600136597205734427808625992848504337217529784604969243272238302559636203132991964128317728845228827737") - PrecomputedLines[1][54] = emulated.ValueOf[emulated.BW6761Fp]("4137264771117858981063062933914663397753332258247457310892238685897247783937428646711199169425232185719356414250990689144775713028143107210691682540723085798000784988249533331875788444818880345959266557470221936184860579434674460") + PrecomputedLines[0][54] = emulated.ValueOf[BaseField]("4028424328816457105275613631807939250693277717816481016645317988637513044482980841560103858167381177450927995343298109011721354600136597205734427808625992848504337217529784604969243272238302559636203132991964128317728845228827737") + PrecomputedLines[1][54] = emulated.ValueOf[BaseField]("4137264771117858981063062933914663397753332258247457310892238685897247783937428646711199169425232185719356414250990689144775713028143107210691682540723085798000784988249533331875788444818880345959266557470221936184860579434674460") // i = 53 j = 0 - PrecomputedLines[0][53] = emulated.ValueOf[emulated.BW6761Fp]("5492090801797351752381614128547027199049948697414385519539604670596301854328273645242249057084866409918562550964885250930785720674325209012952987352495642374866705080584069469415536679936119019685669733912277135561695115666877642") - PrecomputedLines[1][53] = emulated.ValueOf[emulated.BW6761Fp]("4905858371248820162192245612107925452187136738566936712274495298277389232348237517367524132804376317049991057289942326502212212603680615088237906000153324370826140103086371117307680591832523208571162756505635031406643093406864846") + PrecomputedLines[0][53] = emulated.ValueOf[BaseField]("5492090801797351752381614128547027199049948697414385519539604670596301854328273645242249057084866409918562550964885250930785720674325209012952987352495642374866705080584069469415536679936119019685669733912277135561695115666877642") + PrecomputedLines[1][53] = emulated.ValueOf[BaseField]("4905858371248820162192245612107925452187136738566936712274495298277389232348237517367524132804376317049991057289942326502212212603680615088237906000153324370826140103086371117307680591832523208571162756505635031406643093406864846") // i = 52 j = 0 - PrecomputedLines[0][52] = emulated.ValueOf[emulated.BW6761Fp]("359178835294545969889883772667754428563026611682186272095920083011124469414808094313939667524828315558286118909738292340246984351389375075929819337763337885079238445278970206970834537857532461850702562141060178054445757061261025") - PrecomputedLines[1][52] = emulated.ValueOf[emulated.BW6761Fp]("1312200326277970534697540779331716736924580549853524235566261452574147442129502008927617292522196385102231014786673938381594831519849263038105855332568555929441096380204787419249922531962882779612974600959752032033331017307660602") + PrecomputedLines[0][52] = emulated.ValueOf[BaseField]("359178835294545969889883772667754428563026611682186272095920083011124469414808094313939667524828315558286118909738292340246984351389375075929819337763337885079238445278970206970834537857532461850702562141060178054445757061261025") + PrecomputedLines[1][52] = emulated.ValueOf[BaseField]("1312200326277970534697540779331716736924580549853524235566261452574147442129502008927617292522196385102231014786673938381594831519849263038105855332568555929441096380204787419249922531962882779612974600959752032033331017307660602") // i = 51 j = 1 - PrecomputedLines[0][51] = emulated.ValueOf[emulated.BW6761Fp]("2026038287010327744329738730229318435937175762944665742194585349571584968982882870102399978673469017390514886249305090405249521202188733937933343484364277244414353591563737610732282221596182900183491534814411847004967926819041106") - PrecomputedLines[1][51] = emulated.ValueOf[emulated.BW6761Fp]("2178832958114348900982310012790318964711295868435660304593515141455040525510122631088935523812017659055054869618428180241202047242515973139827366745153207759156458851652815475377013527980632538198101805204073000208867957404386275") - PrecomputedLines[2][51] = emulated.ValueOf[emulated.BW6761Fp]("6837231239325802714630592231544125999222471865115356607824139515924873828006966495355988144154645822325580936288573467243496622172897585520569534506877539567995164641501010714466115854526102902238483776009362232490056033478896718") - PrecomputedLines[3][51] = emulated.ValueOf[emulated.BW6761Fp]("1136729064180660079227012334655245987722990291836584884006658508324055189594139195698011309590407342768440767239608918245864512620648063831439081245116083355457158423089087145379675587830588630375397838727299113445737968051491153") + PrecomputedLines[0][51] = emulated.ValueOf[BaseField]("2026038287010327744329738730229318435937175762944665742194585349571584968982882870102399978673469017390514886249305090405249521202188733937933343484364277244414353591563737610732282221596182900183491534814411847004967926819041106") + PrecomputedLines[1][51] = emulated.ValueOf[BaseField]("2178832958114348900982310012790318964711295868435660304593515141455040525510122631088935523812017659055054869618428180241202047242515973139827366745153207759156458851652815475377013527980632538198101805204073000208867957404386275") + PrecomputedLines[2][51] = emulated.ValueOf[BaseField]("6837231239325802714630592231544125999222471865115356607824139515924873828006966495355988144154645822325580936288573467243496622172897585520569534506877539567995164641501010714466115854526102902238483776009362232490056033478896718") + PrecomputedLines[3][51] = emulated.ValueOf[BaseField]("1136729064180660079227012334655245987722990291836584884006658508324055189594139195698011309590407342768440767239608918245864512620648063831439081245116083355457158423089087145379675587830588630375397838727299113445737968051491153") // i = 50 j = 0 - PrecomputedLines[0][50] = emulated.ValueOf[emulated.BW6761Fp]("5322920300404976083455522685211004055552447217897022767313521102034409124300458651590360645227025719456716157334813011739843876771661830172780260273424774671669669534448129130732400610261443507441704074262583228691779432057383210") - PrecomputedLines[1][50] = emulated.ValueOf[emulated.BW6761Fp]("4045151325025661254472879018016993563055206037649637764035519770429754358392671351288941058414802815561896489955008560794303386044981416397960378880429579440775177944716333205061343212765352728742991869524081985800570044775720863") + PrecomputedLines[0][50] = emulated.ValueOf[BaseField]("5322920300404976083455522685211004055552447217897022767313521102034409124300458651590360645227025719456716157334813011739843876771661830172780260273424774671669669534448129130732400610261443507441704074262583228691779432057383210") + PrecomputedLines[1][50] = emulated.ValueOf[BaseField]("4045151325025661254472879018016993563055206037649637764035519770429754358392671351288941058414802815561896489955008560794303386044981416397960378880429579440775177944716333205061343212765352728742991869524081985800570044775720863") // i = 49 j = 0 - PrecomputedLines[0][49] = emulated.ValueOf[emulated.BW6761Fp]("5226258037103858585709485815951884774065463282206055949572296863155702213812699262254794092005380545671610118552173661619682770665961766560277265965652287468044256177657874378353508735265637291703944234691599675417196965708036341") - PrecomputedLines[1][49] = emulated.ValueOf[emulated.BW6761Fp]("1341647445164990334095065980943134038946017316256003003135703740054153232828619291579732165647244341657832232629026147040555154939494114670981128721804157219231387954429790542158383077677618175725451315626705948038674690506434713") + PrecomputedLines[0][49] = emulated.ValueOf[BaseField]("5226258037103858585709485815951884774065463282206055949572296863155702213812699262254794092005380545671610118552173661619682770665961766560277265965652287468044256177657874378353508735265637291703944234691599675417196965708036341") + PrecomputedLines[1][49] = emulated.ValueOf[BaseField]("1341647445164990334095065980943134038946017316256003003135703740054153232828619291579732165647244341657832232629026147040555154939494114670981128721804157219231387954429790542158383077677618175725451315626705948038674690506434713") // i = 48 j = 1 - PrecomputedLines[0][48] = emulated.ValueOf[emulated.BW6761Fp]("2669141213632483177349464677526063038092995516731288530055965072139720542416799558066265333235760093953926755294654977219704355890957195369092533432110164420763741078175284654109721413728820682856532679498998179023064591536008179") - PrecomputedLines[1][48] = emulated.ValueOf[emulated.BW6761Fp]("2134420113812914182827401634702786987961092298592150550562829030382818487856108796955415571408297807671429201199583453019724819973429332912629032447937549705209104608221786349214759677126963931958078901227230879866726885052445052") - PrecomputedLines[2][48] = emulated.ValueOf[emulated.BW6761Fp]("5301401015473682032740337209437935700074314236716542138678584038605557667425729743099901506999562233726460077935119644107638279830497233673245936694865259874079692208240393499480211839576495398325812230566957742585600576497712497") - PrecomputedLines[3][48] = emulated.ValueOf[emulated.BW6761Fp]("316237245987919229539675151585623375736684226237110958836699548130958545274822742432583398578011769251755976215515832642492191082965378422712648320438656571781374716032787691902701793949747039075058956435281006837601921806263940") + PrecomputedLines[0][48] = emulated.ValueOf[BaseField]("2669141213632483177349464677526063038092995516731288530055965072139720542416799558066265333235760093953926755294654977219704355890957195369092533432110164420763741078175284654109721413728820682856532679498998179023064591536008179") + PrecomputedLines[1][48] = emulated.ValueOf[BaseField]("2134420113812914182827401634702786987961092298592150550562829030382818487856108796955415571408297807671429201199583453019724819973429332912629032447937549705209104608221786349214759677126963931958078901227230879866726885052445052") + PrecomputedLines[2][48] = emulated.ValueOf[BaseField]("5301401015473682032740337209437935700074314236716542138678584038605557667425729743099901506999562233726460077935119644107638279830497233673245936694865259874079692208240393499480211839576495398325812230566957742585600576497712497") + PrecomputedLines[3][48] = emulated.ValueOf[BaseField]("316237245987919229539675151585623375736684226237110958836699548130958545274822742432583398578011769251755976215515832642492191082965378422712648320438656571781374716032787691902701793949747039075058956435281006837601921806263940") // i = 47 j = 0 - PrecomputedLines[0][47] = emulated.ValueOf[emulated.BW6761Fp]("2469284189539122802768267519758265300210938499804273343134547008175934793307225662932029768301730928461879508577001059172355557259081543667750994109716250014560670437893272354177453387546897128436862489793983234949990285254606452") - PrecomputedLines[1][47] = emulated.ValueOf[emulated.BW6761Fp]("1830146984962850968453585106583448314487150616750022651699991784484596999485896101930222322503775558473596214757083742949464480904175941842926026220500858275904724239903775931730004030363174733148460092172413335286081342076154919") + PrecomputedLines[0][47] = emulated.ValueOf[BaseField]("2469284189539122802768267519758265300210938499804273343134547008175934793307225662932029768301730928461879508577001059172355557259081543667750994109716250014560670437893272354177453387546897128436862489793983234949990285254606452") + PrecomputedLines[1][47] = emulated.ValueOf[BaseField]("1830146984962850968453585106583448314487150616750022651699991784484596999485896101930222322503775558473596214757083742949464480904175941842926026220500858275904724239903775931730004030363174733148460092172413335286081342076154919") // i = 46 j = -1 - PrecomputedLines[0][46] = emulated.ValueOf[emulated.BW6761Fp]("4808750674906929458479780393808057785998730391052017477551570952987054533257389747936619777106961884229021401047614317646231862764036952175790162498761774530665237875686878919242872642150254465632443227768599747003266550581405388") - PrecomputedLines[1][46] = emulated.ValueOf[emulated.BW6761Fp]("1891884882567828239204882760611347865028360372463103495087043571568211658813632369204338450133243507396041732069576309883702980103212039678198834251217568056933974768947024453446363465598515701337006224040584611704892464155922646") - PrecomputedLines[2][46] = emulated.ValueOf[emulated.BW6761Fp]("1782677192263174653114679652738148432045753091242027102628660919836353128448423680787560496210687690962650265604122324792301295723979276692851810069753634590299780709582183458343210520766053802972379144341478689122268621722390302") - PrecomputedLines[3][46] = emulated.ValueOf[emulated.BW6761Fp]("4601255220474206175154039807739446217437347898090772634618295737347141908903052922685778628767090029489974230859891899402569132880114132773342251471175144576481058945676007839307009592378129694341000415552823241628198058676301864") + PrecomputedLines[0][46] = emulated.ValueOf[BaseField]("4808750674906929458479780393808057785998730391052017477551570952987054533257389747936619777106961884229021401047614317646231862764036952175790162498761774530665237875686878919242872642150254465632443227768599747003266550581405388") + PrecomputedLines[1][46] = emulated.ValueOf[BaseField]("1891884882567828239204882760611347865028360372463103495087043571568211658813632369204338450133243507396041732069576309883702980103212039678198834251217568056933974768947024453446363465598515701337006224040584611704892464155922646") + PrecomputedLines[2][46] = emulated.ValueOf[BaseField]("1782677192263174653114679652738148432045753091242027102628660919836353128448423680787560496210687690962650265604122324792301295723979276692851810069753634590299780709582183458343210520766053802972379144341478689122268621722390302") + PrecomputedLines[3][46] = emulated.ValueOf[BaseField]("4601255220474206175154039807739446217437347898090772634618295737347141908903052922685778628767090029489974230859891899402569132880114132773342251471175144576481058945676007839307009592378129694341000415552823241628198058676301864") // i = 45 j = 0 - PrecomputedLines[0][45] = emulated.ValueOf[emulated.BW6761Fp]("3313817549411916259720752897067881926542086622610865958536519796066914607656859212778668206734368535950822735444718824275919603099081215658685318755509674356243561416633830397196231266219511716007749348762645681330551126790870376") - PrecomputedLines[1][45] = emulated.ValueOf[emulated.BW6761Fp]("3252042130416329114631484338445192030646251740098948126128650603635321744781873461724605669481911071863328041692968946348818588320589336163492834872989177013461385360402636605130251922052366702656283468969500573764322346005244605") + PrecomputedLines[0][45] = emulated.ValueOf[BaseField]("3313817549411916259720752897067881926542086622610865958536519796066914607656859212778668206734368535950822735444718824275919603099081215658685318755509674356243561416633830397196231266219511716007749348762645681330551126790870376") + PrecomputedLines[1][45] = emulated.ValueOf[BaseField]("3252042130416329114631484338445192030646251740098948126128650603635321744781873461724605669481911071863328041692968946348818588320589336163492834872989177013461385360402636605130251922052366702656283468969500573764322346005244605") // i = 44 j = 0 - PrecomputedLines[0][44] = emulated.ValueOf[emulated.BW6761Fp]("6338761415503833574158993491917412731054381446353019200951359861863236217623802777827212821773685337418478392924282420674032240090520869982950877201025879182995853168001568974019311667681399378678658372257019594917864973673309193") - PrecomputedLines[1][44] = emulated.ValueOf[emulated.BW6761Fp]("5145208095186900983628565732407350308228178211161732689086638870941412642066547959806176703516458076133350439172796500965758264802653323628323907233788177515377158457742460353846552206469110836809410531151609398126545913664188630") + PrecomputedLines[0][44] = emulated.ValueOf[BaseField]("6338761415503833574158993491917412731054381446353019200951359861863236217623802777827212821773685337418478392924282420674032240090520869982950877201025879182995853168001568974019311667681399378678658372257019594917864973673309193") + PrecomputedLines[1][44] = emulated.ValueOf[BaseField]("5145208095186900983628565732407350308228178211161732689086638870941412642066547959806176703516458076133350439172796500965758264802653323628323907233788177515377158457742460353846552206469110836809410531151609398126545913664188630") // i = 43 j = 0 - PrecomputedLines[0][43] = emulated.ValueOf[emulated.BW6761Fp]("5196926067227948572519208302811648552049645971471523826735711828398229766956255254268762415203531419391167114934194578362433366430246628887120782279447934571699353681118100448979965849493514365905012300253959326090661874306957037") - PrecomputedLines[1][43] = emulated.ValueOf[emulated.BW6761Fp]("3119923259263949969749529244369104226493012793832028159004381001301808535947984715041184266613240861351948168589053862674232986171291382714515365072351226441523796700113665533763234694043303056681109280325373132113235807147635810") + PrecomputedLines[0][43] = emulated.ValueOf[BaseField]("5196926067227948572519208302811648552049645971471523826735711828398229766956255254268762415203531419391167114934194578362433366430246628887120782279447934571699353681118100448979965849493514365905012300253959326090661874306957037") + PrecomputedLines[1][43] = emulated.ValueOf[BaseField]("3119923259263949969749529244369104226493012793832028159004381001301808535947984715041184266613240861351948168589053862674232986171291382714515365072351226441523796700113665533763234694043303056681109280325373132113235807147635810") // i = 42 j = 0 - PrecomputedLines[0][42] = emulated.ValueOf[emulated.BW6761Fp]("3701751799991197886131283811604024072336985353686243907343722147267167812517345955394536600725894396109453469705947913105619652148410105985236906738662670825757973774071236977402882686728704766160168756235357103252696719757853080") - PrecomputedLines[1][42] = emulated.ValueOf[emulated.BW6761Fp]("4328206745347948324047675202212800610600103831121253704737929492249698600108545495006620418550929295799787934661360306902163955205189032671319126960886388468587745108551360815318758470615289870220975458457801506393380445587040331") + PrecomputedLines[0][42] = emulated.ValueOf[BaseField]("3701751799991197886131283811604024072336985353686243907343722147267167812517345955394536600725894396109453469705947913105619652148410105985236906738662670825757973774071236977402882686728704766160168756235357103252696719757853080") + PrecomputedLines[1][42] = emulated.ValueOf[BaseField]("4328206745347948324047675202212800610600103831121253704737929492249698600108545495006620418550929295799787934661360306902163955205189032671319126960886388468587745108551360815318758470615289870220975458457801506393380445587040331") // i = 41 j = 0 - PrecomputedLines[0][41] = emulated.ValueOf[emulated.BW6761Fp]("5243931540637815073298817765538453903847853699668038453409399793026947683823322658059258449070462262268954906925773665150004113080811722220228212123648000373937683836475968100704584922681517218113636325461148739730351900244430486") - PrecomputedLines[1][41] = emulated.ValueOf[emulated.BW6761Fp]("696303549522548469135732799411259466465742009157193344130063238624867632912352618408234824957796454146834346585274133110077926048562040046657743412672416024185699629924036777170476680150185390702804937742220109575805994018565880") + PrecomputedLines[0][41] = emulated.ValueOf[BaseField]("5243931540637815073298817765538453903847853699668038453409399793026947683823322658059258449070462262268954906925773665150004113080811722220228212123648000373937683836475968100704584922681517218113636325461148739730351900244430486") + PrecomputedLines[1][41] = emulated.ValueOf[BaseField]("696303549522548469135732799411259466465742009157193344130063238624867632912352618408234824957796454146834346585274133110077926048562040046657743412672416024185699629924036777170476680150185390702804937742220109575805994018565880") // i = 40 j = 0 - PrecomputedLines[0][40] = emulated.ValueOf[emulated.BW6761Fp]("6556291914440995915077184566874121406081010955823879975783964894145083820107493360375502209467776811107722009865129010270289679418541453362001848171476122313995482719748410193307819143390117395993923732784399598145000236756770778") - PrecomputedLines[1][40] = emulated.ValueOf[emulated.BW6761Fp]("5030629984485491079543487382652657069214793759421195749161710920620485872796101353201771155469317379128888992818420203178859483332221009950916704606376754774957762349644308776768989209075348134409711677264115878561405610708211224") + PrecomputedLines[0][40] = emulated.ValueOf[BaseField]("6556291914440995915077184566874121406081010955823879975783964894145083820107493360375502209467776811107722009865129010270289679418541453362001848171476122313995482719748410193307819143390117395993923732784399598145000236756770778") + PrecomputedLines[1][40] = emulated.ValueOf[BaseField]("5030629984485491079543487382652657069214793759421195749161710920620485872796101353201771155469317379128888992818420203178859483332221009950916704606376754774957762349644308776768989209075348134409711677264115878561405610708211224") // i = 39 j = 0 - PrecomputedLines[0][39] = emulated.ValueOf[emulated.BW6761Fp]("6091140106374548700858627680855718215758601972928087739044474141367987574926899958501533551620021166028801571176174643811954610349422547026888525945983551983557194042193263052574485407169478221268356892419346794783326123815016201") - PrecomputedLines[1][39] = emulated.ValueOf[emulated.BW6761Fp]("5948828392020302673989780887295980588705729037684336347591433010129397932006719799073817921549578471357750078662933637274249244592252477864992911501358565593172036494701721206192757798992471786865192758135034397631178011919037343") + PrecomputedLines[0][39] = emulated.ValueOf[BaseField]("6091140106374548700858627680855718215758601972928087739044474141367987574926899958501533551620021166028801571176174643811954610349422547026888525945983551983557194042193263052574485407169478221268356892419346794783326123815016201") + PrecomputedLines[1][39] = emulated.ValueOf[BaseField]("5948828392020302673989780887295980588705729037684336347591433010129397932006719799073817921549578471357750078662933637274249244592252477864992911501358565593172036494701721206192757798992471786865192758135034397631178011919037343") // i = 38 j = 0 - PrecomputedLines[0][38] = emulated.ValueOf[emulated.BW6761Fp]("386805651598570530441388340523805281783272334115584252445736467104669895592428739901130798336649030556456963006714317965660902340316250431631905429626265279629592255272091423988229378924855038046417269484741767052733920691109051") - PrecomputedLines[1][38] = emulated.ValueOf[emulated.BW6761Fp]("4525766759081710684536631674589709318407224846654587977942741430894023706116118416593023639529015026174903223073533435099953484358304277428041608689829938708753912201343208781545656144848211632310624653753477849722613987324257405") + PrecomputedLines[0][38] = emulated.ValueOf[BaseField]("386805651598570530441388340523805281783272334115584252445736467104669895592428739901130798336649030556456963006714317965660902340316250431631905429626265279629592255272091423988229378924855038046417269484741767052733920691109051") + PrecomputedLines[1][38] = emulated.ValueOf[BaseField]("4525766759081710684536631674589709318407224846654587977942741430894023706116118416593023639529015026174903223073533435099953484358304277428041608689829938708753912201343208781545656144848211632310624653753477849722613987324257405") // i = 37 j = 0 - PrecomputedLines[0][37] = emulated.ValueOf[emulated.BW6761Fp]("5540817150529726185507644807907302646359758202921121879259874245826174565233088540473190697869957879229268506603897981980937573633705421083663690135557685806659327424996048555355538859184738301549091170119312258022116464715530897") - PrecomputedLines[1][37] = emulated.ValueOf[emulated.BW6761Fp]("6718515479962911505845755520433037626091003178541819639197260331297301140454264418644497190790920589684999232040565875697918943358405976806940756273856093062633628493384732067302799962517254636294396334020560227976261698493244667") + PrecomputedLines[0][37] = emulated.ValueOf[BaseField]("5540817150529726185507644807907302646359758202921121879259874245826174565233088540473190697869957879229268506603897981980937573633705421083663690135557685806659327424996048555355538859184738301549091170119312258022116464715530897") + PrecomputedLines[1][37] = emulated.ValueOf[BaseField]("6718515479962911505845755520433037626091003178541819639197260331297301140454264418644497190790920589684999232040565875697918943358405976806940756273856093062633628493384732067302799962517254636294396334020560227976261698493244667") // i = 36 j = 0 - PrecomputedLines[0][36] = emulated.ValueOf[emulated.BW6761Fp]("3869131705462453083574569418603668066852580690436301014856841457006371403127016588221185386053660625244216382527839982867270233918401458075631441051875942486236219721422637941272410781283146192147117345683725174317594008155342822") - PrecomputedLines[1][36] = emulated.ValueOf[emulated.BW6761Fp]("4314980459231262879559055441934626715524184332706886138545230734708327298356917201957592166096564220843513786090287049232111040932514169912041600500621718076064675458551242521198970649693981760632428180630077255231913463976015069") + PrecomputedLines[0][36] = emulated.ValueOf[BaseField]("3869131705462453083574569418603668066852580690436301014856841457006371403127016588221185386053660625244216382527839982867270233918401458075631441051875942486236219721422637941272410781283146192147117345683725174317594008155342822") + PrecomputedLines[1][36] = emulated.ValueOf[BaseField]("4314980459231262879559055441934626715524184332706886138545230734708327298356917201957592166096564220843513786090287049232111040932514169912041600500621718076064675458551242521198970649693981760632428180630077255231913463976015069") // i = 35 j = 0 - PrecomputedLines[0][35] = emulated.ValueOf[emulated.BW6761Fp]("2427320334264300402360662887694403717302806847738543014302091243118106695361301072589835989745366595724889306543713826268811885589885050074000488307245969105060415804657357182570924945821477542418707894862854377873456920736211574") - PrecomputedLines[1][35] = emulated.ValueOf[emulated.BW6761Fp]("6547475230634432672084652762025718565231530626989882119549953997097318533514829027216502342143054309787065484993195775491031212236423786271414014282819624182157087622098437337674637018686871012527469005617383148581769811191593996") + PrecomputedLines[0][35] = emulated.ValueOf[BaseField]("2427320334264300402360662887694403717302806847738543014302091243118106695361301072589835989745366595724889306543713826268811885589885050074000488307245969105060415804657357182570924945821477542418707894862854377873456920736211574") + PrecomputedLines[1][35] = emulated.ValueOf[BaseField]("6547475230634432672084652762025718565231530626989882119549953997097318533514829027216502342143054309787065484993195775491031212236423786271414014282819624182157087622098437337674637018686871012527469005617383148581769811191593996") // i = 34 j = 0 - PrecomputedLines[0][34] = emulated.ValueOf[emulated.BW6761Fp]("5470420367198776800379064913602474642539418292471993924725551625772329613971394974002758597493934979843640341499153207410684010265570101454360050504825249909503161673795412448516621962569000123192182861955528503541040067830525054") - PrecomputedLines[1][34] = emulated.ValueOf[emulated.BW6761Fp]("4494982168085199701292806408185286692801752874423548008688924102595293266188792567032936624939523382062636324480917794944337731206576837066847574356728903291949351878926970103254919020595781292363245971532897673992090860126702369") + PrecomputedLines[0][34] = emulated.ValueOf[BaseField]("5470420367198776800379064913602474642539418292471993924725551625772329613971394974002758597493934979843640341499153207410684010265570101454360050504825249909503161673795412448516621962569000123192182861955528503541040067830525054") + PrecomputedLines[1][34] = emulated.ValueOf[BaseField]("4494982168085199701292806408185286692801752874423548008688924102595293266188792567032936624939523382062636324480917794944337731206576837066847574356728903291949351878926970103254919020595781292363245971532897673992090860126702369") // i = 33 j = 0 - PrecomputedLines[0][33] = emulated.ValueOf[emulated.BW6761Fp]("4369399103458313145656091760726423066162809996158810942119411369347168469388517928848081249440078394350933082794925208252565075936062188001383128598970827204559006905350310028359496169149633766918948630158683088828171365354841158") - PrecomputedLines[1][33] = emulated.ValueOf[emulated.BW6761Fp]("2836043989963268489265367048075271632950100267112285454252249322774245764330267772073010634431547940389182825464390146593630054274866401588089959215419663648196282197240743898943526789692085504083282842684412950862097306893801599") + PrecomputedLines[0][33] = emulated.ValueOf[BaseField]("4369399103458313145656091760726423066162809996158810942119411369347168469388517928848081249440078394350933082794925208252565075936062188001383128598970827204559006905350310028359496169149633766918948630158683088828171365354841158") + PrecomputedLines[1][33] = emulated.ValueOf[BaseField]("2836043989963268489265367048075271632950100267112285454252249322774245764330267772073010634431547940389182825464390146593630054274866401588089959215419663648196282197240743898943526789692085504083282842684412950862097306893801599") // i = 32 j = 0 - PrecomputedLines[0][32] = emulated.ValueOf[emulated.BW6761Fp]("3161593094746195465078500452987750093476067375325753560737558405536356806261984517162664827224212982791699115483519562494689316083005486820021595184605498108610292650087193437653864612092819356371768033919819822231437319340885818") - PrecomputedLines[1][32] = emulated.ValueOf[emulated.BW6761Fp]("3819644466956975667540265504039562915781357246138129664042550004125848703662511727184229838152701048608638539116167218942926958298935218078169210956945303241453470842592034811786186043813389041735902241531389493661689183192201314") + PrecomputedLines[0][32] = emulated.ValueOf[BaseField]("3161593094746195465078500452987750093476067375325753560737558405536356806261984517162664827224212982791699115483519562494689316083005486820021595184605498108610292650087193437653864612092819356371768033919819822231437319340885818") + PrecomputedLines[1][32] = emulated.ValueOf[BaseField]("3819644466956975667540265504039562915781357246138129664042550004125848703662511727184229838152701048608638539116167218942926958298935218078169210956945303241453470842592034811786186043813389041735902241531389493661689183192201314") // i = 31 j = 0 - PrecomputedLines[0][31] = emulated.ValueOf[emulated.BW6761Fp]("2392062469462140923741025287719046671043506623791654187355906507999444953112425089053401530697483613645070888237426395063497315567081124795079610087638568678421297497052700149306919191659789394545701135340977814109862320695165568") - PrecomputedLines[1][31] = emulated.ValueOf[emulated.BW6761Fp]("4832734711312326287607356828166645428191493014408322512729086123056982141909670178885145013471528991848522869327843883017611143777932437309043998670383657756265882429166098447206115408339702334049715325324660913143518801609993303") + PrecomputedLines[0][31] = emulated.ValueOf[BaseField]("2392062469462140923741025287719046671043506623791654187355906507999444953112425089053401530697483613645070888237426395063497315567081124795079610087638568678421297497052700149306919191659789394545701135340977814109862320695165568") + PrecomputedLines[1][31] = emulated.ValueOf[BaseField]("4832734711312326287607356828166645428191493014408322512729086123056982141909670178885145013471528991848522869327843883017611143777932437309043998670383657756265882429166098447206115408339702334049715325324660913143518801609993303") // i = 30 j = 0 - PrecomputedLines[0][30] = emulated.ValueOf[emulated.BW6761Fp]("1477192912994877076584299443047904339823768878392720469166065838890013031033549366840136627511260130996211450274999164360986943039558119431141104532916419870109971379707260906139507809969364754825798030720845059282506581319339014") - PrecomputedLines[1][30] = emulated.ValueOf[emulated.BW6761Fp]("4848580278471725966778152640625454583315272135939414014193260350786313591179868891886266751431003335469607271916394805253759620275236580688976609102137853719201345285969924928810598190847426584959246874917721341230807553992359714") + PrecomputedLines[0][30] = emulated.ValueOf[BaseField]("1477192912994877076584299443047904339823768878392720469166065838890013031033549366840136627511260130996211450274999164360986943039558119431141104532916419870109971379707260906139507809969364754825798030720845059282506581319339014") + PrecomputedLines[1][30] = emulated.ValueOf[BaseField]("4848580278471725966778152640625454583315272135939414014193260350786313591179868891886266751431003335469607271916394805253759620275236580688976609102137853719201345285969924928810598190847426584959246874917721341230807553992359714") // i = 29 j = 0 - PrecomputedLines[0][29] = emulated.ValueOf[emulated.BW6761Fp]("4612548657730367186580082714976803926576026636075855117464342397130243372418284273429514705085325850879471479551060605745051440773485204605835344072407837553391635924303211107514927355596277812147946061939813370285122706400351567") - PrecomputedLines[1][29] = emulated.ValueOf[emulated.BW6761Fp]("3008760023968267493067473651579101210329508467951113202776757502253763787362685970341712629429191134564062267116595653720696704870511446188226366583198831759752337733919632784312043665011553157853074013972697508251271557897622116") + PrecomputedLines[0][29] = emulated.ValueOf[BaseField]("4612548657730367186580082714976803926576026636075855117464342397130243372418284273429514705085325850879471479551060605745051440773485204605835344072407837553391635924303211107514927355596277812147946061939813370285122706400351567") + PrecomputedLines[1][29] = emulated.ValueOf[BaseField]("3008760023968267493067473651579101210329508467951113202776757502253763787362685970341712629429191134564062267116595653720696704870511446188226366583198831759752337733919632784312043665011553157853074013972697508251271557897622116") // i = 28 j = 0 - PrecomputedLines[0][28] = emulated.ValueOf[emulated.BW6761Fp]("389611075583305447184379239616257601802679758494373323193694192448587463258095924560882091875803061182347014161474858927897859287672456186458075155526027559450439890855840286219699926277529927908082352293235902086001952356050806") - PrecomputedLines[1][28] = emulated.ValueOf[emulated.BW6761Fp]("5233051879124279727841750931002413127344266604685137080535552109067249081614590411077745857610971661785764119168546299127950916764399413545456303778964651840043599767943011212201541649077025031848271498549479500822460404193902059") + PrecomputedLines[0][28] = emulated.ValueOf[BaseField]("389611075583305447184379239616257601802679758494373323193694192448587463258095924560882091875803061182347014161474858927897859287672456186458075155526027559450439890855840286219699926277529927908082352293235902086001952356050806") + PrecomputedLines[1][28] = emulated.ValueOf[BaseField]("5233051879124279727841750931002413127344266604685137080535552109067249081614590411077745857610971661785764119168546299127950916764399413545456303778964651840043599767943011212201541649077025031848271498549479500822460404193902059") // i = 27 j = 0 - PrecomputedLines[0][27] = emulated.ValueOf[emulated.BW6761Fp]("2051301240417715203541474847440511788275661712622367960004326252954683168118911315500500243454295796557207383513952291223465916233842646702105985061178036318276199181260966664406697541077931483773674540551675446385720134709377958") - PrecomputedLines[1][27] = emulated.ValueOf[emulated.BW6761Fp]("5992530410566193246175858444555670259253173691580655391949633577253373894334340401965049824695681254882694373651839548752052832871651221221812084861753932936474756435842548719584127897656636378524589912899548493768584550162322026") + PrecomputedLines[0][27] = emulated.ValueOf[BaseField]("2051301240417715203541474847440511788275661712622367960004326252954683168118911315500500243454295796557207383513952291223465916233842646702105985061178036318276199181260966664406697541077931483773674540551675446385720134709377958") + PrecomputedLines[1][27] = emulated.ValueOf[BaseField]("5992530410566193246175858444555670259253173691580655391949633577253373894334340401965049824695681254882694373651839548752052832871651221221812084861753932936474756435842548719584127897656636378524589912899548493768584550162322026") // i = 26 j = 0 - PrecomputedLines[0][26] = emulated.ValueOf[emulated.BW6761Fp]("503203931329244869313993274825431763771286678085922857991598333658068092455874867591344068855550890716224607734741433955654810857307893638961108425713685811873615289262937183421557667697024010944533996098418759629130851637575061") - PrecomputedLines[1][26] = emulated.ValueOf[emulated.BW6761Fp]("536831931203209005383817884414882142673174308352835930285382972591114428623647610993209440256536563763832989938629068274445183810773409133208605690434866892161798632072112140226565160045865984238975881552054351099184102165059436") + PrecomputedLines[0][26] = emulated.ValueOf[BaseField]("503203931329244869313993274825431763771286678085922857991598333658068092455874867591344068855550890716224607734741433955654810857307893638961108425713685811873615289262937183421557667697024010944533996098418759629130851637575061") + PrecomputedLines[1][26] = emulated.ValueOf[BaseField]("536831931203209005383817884414882142673174308352835930285382972591114428623647610993209440256536563763832989938629068274445183810773409133208605690434866892161798632072112140226565160045865984238975881552054351099184102165059436") // i = 25 j = 0 - PrecomputedLines[0][25] = emulated.ValueOf[emulated.BW6761Fp]("6463430776614704091043359647080337102302641202721165935467039486666890211843177302823757119636439288705089663618847623612548484578512254481774726375701260571814452623968715666812055458971750746812300447755820525065477082096459844") - PrecomputedLines[1][25] = emulated.ValueOf[emulated.BW6761Fp]("5902012351077562723668140155016090312343270371330172213810546725833050020604407548694284789195431375873831632478747356230690076169624436201213110122483265871607190241540211077771119739664258665822909426121943576686432308367091097") + PrecomputedLines[0][25] = emulated.ValueOf[BaseField]("6463430776614704091043359647080337102302641202721165935467039486666890211843177302823757119636439288705089663618847623612548484578512254481774726375701260571814452623968715666812055458971750746812300447755820525065477082096459844") + PrecomputedLines[1][25] = emulated.ValueOf[BaseField]("5902012351077562723668140155016090312343270371330172213810546725833050020604407548694284789195431375873831632478747356230690076169624436201213110122483265871607190241540211077771119739664258665822909426121943576686432308367091097") // i = 24 j = 0 - PrecomputedLines[0][24] = emulated.ValueOf[emulated.BW6761Fp]("1209702480415440437280489808669256969507660822534277955404713353804298133175875997191147737012533706181789004010533635994123995990432083493750059042395030464593576198103569451570698867736371126667175609011467744130522758870853541") - PrecomputedLines[1][24] = emulated.ValueOf[emulated.BW6761Fp]("5845837029777750013459224043580536350325856602315686949865177782686518032836923907289639741918375475746894480686951269100539861615728782101044640290022570112468403517712710278153623346554615057772599871299926382057138771273059968") + PrecomputedLines[0][24] = emulated.ValueOf[BaseField]("1209702480415440437280489808669256969507660822534277955404713353804298133175875997191147737012533706181789004010533635994123995990432083493750059042395030464593576198103569451570698867736371126667175609011467744130522758870853541") + PrecomputedLines[1][24] = emulated.ValueOf[BaseField]("5845837029777750013459224043580536350325856602315686949865177782686518032836923907289639741918375475746894480686951269100539861615728782101044640290022570112468403517712710278153623346554615057772599871299926382057138771273059968") // i = 23 j = 0 - PrecomputedLines[0][23] = emulated.ValueOf[emulated.BW6761Fp]("3669387921716642077111586784755843238178249266660604244928408338075745917801994751512648659830513119488679504346125606638021820335690130566721813481244030389132982533363253276690643464035331736992004545492718069275288785687228650") - PrecomputedLines[1][23] = emulated.ValueOf[emulated.BW6761Fp]("3369368532599196794572924381408197965372261616436988602166850446579339042019774376973479635755731937177394762130890209583682974918000358029127015486759788882988281657019114821541855861455914246754318200512618966432747665826090334") + PrecomputedLines[0][23] = emulated.ValueOf[BaseField]("3669387921716642077111586784755843238178249266660604244928408338075745917801994751512648659830513119488679504346125606638021820335690130566721813481244030389132982533363253276690643464035331736992004545492718069275288785687228650") + PrecomputedLines[1][23] = emulated.ValueOf[BaseField]("3369368532599196794572924381408197965372261616436988602166850446579339042019774376973479635755731937177394762130890209583682974918000358029127015486759788882988281657019114821541855861455914246754318200512618966432747665826090334") // i = 22 j = 0 - PrecomputedLines[0][22] = emulated.ValueOf[emulated.BW6761Fp]("32137541075810451210446631093663209561764748864766127373571218650766496266539912695937374318328906120216942929280088227478321482057801830310739684316581870072030933254887610177835453963146235372951835561368946061826869054994273") - PrecomputedLines[1][22] = emulated.ValueOf[emulated.BW6761Fp]("2839372605182823507158689651507665403454475643571309601972684294775968522205529181272037381032573635287150715729752526401082948508959773316413692414263445724674361578902109659588751006031022891518347158904500276267507223131882814") + PrecomputedLines[0][22] = emulated.ValueOf[BaseField]("32137541075810451210446631093663209561764748864766127373571218650766496266539912695937374318328906120216942929280088227478321482057801830310739684316581870072030933254887610177835453963146235372951835561368946061826869054994273") + PrecomputedLines[1][22] = emulated.ValueOf[BaseField]("2839372605182823507158689651507665403454475643571309601972684294775968522205529181272037381032573635287150715729752526401082948508959773316413692414263445724674361578902109659588751006031022891518347158904500276267507223131882814") // i = 21 j = 0 - PrecomputedLines[0][21] = emulated.ValueOf[emulated.BW6761Fp]("879823418448820628913406122843694317479068503824026559023059280487219225830568787775707080393802920806947189116423374891425653917985305390655018604269987777967653564492499222855808235485800357626429555167604348700507317738364124") - PrecomputedLines[1][21] = emulated.ValueOf[emulated.BW6761Fp]("2019956656507533513044304804620987498029973043800218793681083360349414431549401110624447096623879229407017520219447735283040387709926060527484378025503775835133246120572603569300328786465231048952510222155243444173812217480165304") + PrecomputedLines[0][21] = emulated.ValueOf[BaseField]("879823418448820628913406122843694317479068503824026559023059280487219225830568787775707080393802920806947189116423374891425653917985305390655018604269987777967653564492499222855808235485800357626429555167604348700507317738364124") + PrecomputedLines[1][21] = emulated.ValueOf[BaseField]("2019956656507533513044304804620987498029973043800218793681083360349414431549401110624447096623879229407017520219447735283040387709926060527484378025503775835133246120572603569300328786465231048952510222155243444173812217480165304") // i = 20 j = 0 - PrecomputedLines[0][20] = emulated.ValueOf[emulated.BW6761Fp]("3281290454511032928255125679760136566984128957779591366529207528731731533134600793218349205877224552035737108314702343961052787202471730566503327144726244281919972166384619563047210740822691567734907997537667405058497230480289404") - PrecomputedLines[1][20] = emulated.ValueOf[emulated.BW6761Fp]("217080071594348728220072331086701386987927732572324377989762242979853186956477828898073406659897247062969966133672899633849635715234824558816960723953080058711086889272221299802755516710526712507948703791745209040706597214332330") + PrecomputedLines[0][20] = emulated.ValueOf[BaseField]("3281290454511032928255125679760136566984128957779591366529207528731731533134600793218349205877224552035737108314702343961052787202471730566503327144726244281919972166384619563047210740822691567734907997537667405058497230480289404") + PrecomputedLines[1][20] = emulated.ValueOf[BaseField]("217080071594348728220072331086701386987927732572324377989762242979853186956477828898073406659897247062969966133672899633849635715234824558816960723953080058711086889272221299802755516710526712507948703791745209040706597214332330") // i = 19 j = 0 - PrecomputedLines[0][19] = emulated.ValueOf[emulated.BW6761Fp]("1905514651993040879610862104071383816957968412400965216285472577079609325869467288166983369846807418882918776026807359896903271153547170142288644907690025278163828398651066616389966680857524053164685016151033284702480515801556854") - PrecomputedLines[1][19] = emulated.ValueOf[emulated.BW6761Fp]("2816143647967364054193437905594006222302401544874073334309295347924554450783714363828797748288245483156141622680173960026092101940922703363424723805341028843408807897111158221058652334715877973135223266203838528902175225909759962") + PrecomputedLines[0][19] = emulated.ValueOf[BaseField]("1905514651993040879610862104071383816957968412400965216285472577079609325869467288166983369846807418882918776026807359896903271153547170142288644907690025278163828398651066616389966680857524053164685016151033284702480515801556854") + PrecomputedLines[1][19] = emulated.ValueOf[BaseField]("2816143647967364054193437905594006222302401544874073334309295347924554450783714363828797748288245483156141622680173960026092101940922703363424723805341028843408807897111158221058652334715877973135223266203838528902175225909759962") // i = 18 j = 0 - PrecomputedLines[0][18] = emulated.ValueOf[emulated.BW6761Fp]("3185808100707270488220861346228500651936696674923812981059355392187544269657634677839676505285448730714790787439659560131209743667640836808911335723448482317036276477849802480942477940635945348500165742930167046760547595579852815") - PrecomputedLines[1][18] = emulated.ValueOf[emulated.BW6761Fp]("4675202760094531043725176831180663495747953794115218641026912893113692505533433572730388712820529906426007256557488721698280794278442275319560802351096319033340475048755930586257216038466820741811485638189993825149184613794329637") + PrecomputedLines[0][18] = emulated.ValueOf[BaseField]("3185808100707270488220861346228500651936696674923812981059355392187544269657634677839676505285448730714790787439659560131209743667640836808911335723448482317036276477849802480942477940635945348500165742930167046760547595579852815") + PrecomputedLines[1][18] = emulated.ValueOf[BaseField]("4675202760094531043725176831180663495747953794115218641026912893113692505533433572730388712820529906426007256557488721698280794278442275319560802351096319033340475048755930586257216038466820741811485638189993825149184613794329637") // i = 17 j = 0 - PrecomputedLines[0][17] = emulated.ValueOf[emulated.BW6761Fp]("5635658802467315943564921159563504596167530609164425115569295836814932817517998408089848297249529008411035640913039177309966228255844915487089460291854988530924191714935421333239626728042785267863664613844331879333468065828136587") - PrecomputedLines[1][17] = emulated.ValueOf[emulated.BW6761Fp]("720713426151036602883179170721367739928889749190344988870442595628309715631339336820381795599137000774024829673311066906838972976105051292835974314413053140708619118427273632229673686697031873977463153954458230306803727050851428") + PrecomputedLines[0][17] = emulated.ValueOf[BaseField]("5635658802467315943564921159563504596167530609164425115569295836814932817517998408089848297249529008411035640913039177309966228255844915487089460291854988530924191714935421333239626728042785267863664613844331879333468065828136587") + PrecomputedLines[1][17] = emulated.ValueOf[BaseField]("720713426151036602883179170721367739928889749190344988870442595628309715631339336820381795599137000774024829673311066906838972976105051292835974314413053140708619118427273632229673686697031873977463153954458230306803727050851428") // i = 16 j = 0 - PrecomputedLines[0][16] = emulated.ValueOf[emulated.BW6761Fp]("1864711373715322185727274146635291781641810573108074514648212957755487300184821907927510708219825618515375569210937185934033739458982263275450097382506867527239195625939073554812307989458145792940160837796399384109722154239294444") - PrecomputedLines[1][16] = emulated.ValueOf[emulated.BW6761Fp]("3988928910093052639189864720356237097930818779307457740646973707354026597452250119882899767842529798799120303306317581346856759878215117702725337077786120241471309210981341652385909293913974337040166447032309609692911278481656743") + PrecomputedLines[0][16] = emulated.ValueOf[BaseField]("1864711373715322185727274146635291781641810573108074514648212957755487300184821907927510708219825618515375569210937185934033739458982263275450097382506867527239195625939073554812307989458145792940160837796399384109722154239294444") + PrecomputedLines[1][16] = emulated.ValueOf[BaseField]("3988928910093052639189864720356237097930818779307457740646973707354026597452250119882899767842529798799120303306317581346856759878215117702725337077786120241471309210981341652385909293913974337040166447032309609692911278481656743") // i = 15 j = 0 - PrecomputedLines[0][15] = emulated.ValueOf[emulated.BW6761Fp]("2111972138277766886255103394204659019008608985884205156966330625852224588149790528146858336924984139926163787488158760744677956554133213334043208795767747352197710008701920443139616096988941724903568076255790986324464909342967443") - PrecomputedLines[1][15] = emulated.ValueOf[emulated.BW6761Fp]("5406106584029549219347956561279481223128337834964176867650670161471450936720592598327285296544680137446958348252242981441799765208341620018997343168946611305335188418690624746362103485058997168051562245500340938652938314680722183") + PrecomputedLines[0][15] = emulated.ValueOf[BaseField]("2111972138277766886255103394204659019008608985884205156966330625852224588149790528146858336924984139926163787488158760744677956554133213334043208795767747352197710008701920443139616096988941724903568076255790986324464909342967443") + PrecomputedLines[1][15] = emulated.ValueOf[BaseField]("5406106584029549219347956561279481223128337834964176867650670161471450936720592598327285296544680137446958348252242981441799765208341620018997343168946611305335188418690624746362103485058997168051562245500340938652938314680722183") // i = 14 j = 0 - PrecomputedLines[0][14] = emulated.ValueOf[emulated.BW6761Fp]("3629209394650575177871518222330833326877272533769509791125750744516401250131698579821377134314239098363156873823213748090243637996097460542124115773096078025667715694475433979863616799378688818851677492251164758634054259820876040") - PrecomputedLines[1][14] = emulated.ValueOf[emulated.BW6761Fp]("900520437221008886800548981520464166064858146226480487932023831792015057459315475857825023928512447856980411862732432661615834630191260295728391491807141110984333046029829426377271854520636332926473064932965950054970820564717103") + PrecomputedLines[0][14] = emulated.ValueOf[BaseField]("3629209394650575177871518222330833326877272533769509791125750744516401250131698579821377134314239098363156873823213748090243637996097460542124115773096078025667715694475433979863616799378688818851677492251164758634054259820876040") + PrecomputedLines[1][14] = emulated.ValueOf[BaseField]("900520437221008886800548981520464166064858146226480487932023831792015057459315475857825023928512447856980411862732432661615834630191260295728391491807141110984333046029829426377271854520636332926473064932965950054970820564717103") // i = 13 j = 0 - PrecomputedLines[0][13] = emulated.ValueOf[emulated.BW6761Fp]("4734810408896001811214566767480966766041181785201049779275187432208928522103518291617951325971697525128808099150421788098814049436302285080209136174985981442006550818503120059546064823364852550394073259460444805722962320216100180") - PrecomputedLines[1][13] = emulated.ValueOf[emulated.BW6761Fp]("5865422391872697062771425723030860241442900546731041779331290548814431425813297913622309171769973340126174074338614151460314530384011864184662712730246129508578512966671421774525444186666845500694876618359233199037734923319542130") + PrecomputedLines[0][13] = emulated.ValueOf[BaseField]("4734810408896001811214566767480966766041181785201049779275187432208928522103518291617951325971697525128808099150421788098814049436302285080209136174985981442006550818503120059546064823364852550394073259460444805722962320216100180") + PrecomputedLines[1][13] = emulated.ValueOf[BaseField]("5865422391872697062771425723030860241442900546731041779331290548814431425813297913622309171769973340126174074338614151460314530384011864184662712730246129508578512966671421774525444186666845500694876618359233199037734923319542130") // i = 12 j = 0 - PrecomputedLines[0][12] = emulated.ValueOf[emulated.BW6761Fp]("3887760817750950677847894913143049797433989451093334387487644754302973690605338116344551865359585356915941906643556393078331726567201153915719711775804769226746078185240704547266041135408371775007735155408569785634346533933769753") - PrecomputedLines[1][12] = emulated.ValueOf[emulated.BW6761Fp]("441119206465350316882549165505604924459590172296413032937959602659532459930471493451092782512822884287867392074500585076321765177451793068061537323654024059980774359938586494921359509928655652059494641269369538241172898663035826") + PrecomputedLines[0][12] = emulated.ValueOf[BaseField]("3887760817750950677847894913143049797433989451093334387487644754302973690605338116344551865359585356915941906643556393078331726567201153915719711775804769226746078185240704547266041135408371775007735155408569785634346533933769753") + PrecomputedLines[1][12] = emulated.ValueOf[BaseField]("441119206465350316882549165505604924459590172296413032937959602659532459930471493451092782512822884287867392074500585076321765177451793068061537323654024059980774359938586494921359509928655652059494641269369538241172898663035826") // i = 11 j = 0 - PrecomputedLines[0][11] = emulated.ValueOf[emulated.BW6761Fp]("5404607077394994431251930587789042811217547570736433054557556586640813553286600053424846928225504205015146922567129918850573490092069170627610722116586131146412273453343423884209114457640062111469595924927482095035407809633089661") - PrecomputedLines[1][11] = emulated.ValueOf[emulated.BW6761Fp]("4992128273422493973515931677118934188850228139267165517174754416283071528379160023746908453872389870166264699098349225348378962525412348488383512774325517097683340882619777769544551984620309329567701220099486813789650124085796078") + PrecomputedLines[0][11] = emulated.ValueOf[BaseField]("5404607077394994431251930587789042811217547570736433054557556586640813553286600053424846928225504205015146922567129918850573490092069170627610722116586131146412273453343423884209114457640062111469595924927482095035407809633089661") + PrecomputedLines[1][11] = emulated.ValueOf[BaseField]("4992128273422493973515931677118934188850228139267165517174754416283071528379160023746908453872389870166264699098349225348378962525412348488383512774325517097683340882619777769544551984620309329567701220099486813789650124085796078") // i = 10 j = 0 - PrecomputedLines[0][10] = emulated.ValueOf[emulated.BW6761Fp]("763087849666179695979461625611996769804051713411038929855288244851316550162353575442631464450493032671382048273857185992916619387491118179703485106865943075546997886658458038757728898639967205066970190473160703633384738620148070") - PrecomputedLines[1][10] = emulated.ValueOf[emulated.BW6761Fp]("5227577585574071525091789577898879814968696426931472551503701053187708164510382055306306677871415061750278454070694425088294917207001686901252368465737693589876043800563096468947400702841366495844730967898132123037353361003037153") + PrecomputedLines[0][10] = emulated.ValueOf[BaseField]("763087849666179695979461625611996769804051713411038929855288244851316550162353575442631464450493032671382048273857185992916619387491118179703485106865943075546997886658458038757728898639967205066970190473160703633384738620148070") + PrecomputedLines[1][10] = emulated.ValueOf[BaseField]("5227577585574071525091789577898879814968696426931472551503701053187708164510382055306306677871415061750278454070694425088294917207001686901252368465737693589876043800563096468947400702841366495844730967898132123037353361003037153") // i = 9 j = 0 - PrecomputedLines[0][9] = emulated.ValueOf[emulated.BW6761Fp]("1781035943207167749034352233955519642504059203171184362796879188386098053396193436351030321164897281134193269966421005829822879973054651990134383036098787832244877022488241951982491796164194311656925620981313650251332551878174568") - PrecomputedLines[1][9] = emulated.ValueOf[emulated.BW6761Fp]("5114307858760558505028218493878912344149957944171727828461223441276920205074473499369381914839980338882527506453259283811795570014423568561039994119506118381158174777340851075528982301957519935733692661412135735978386601659268788") + PrecomputedLines[0][9] = emulated.ValueOf[BaseField]("1781035943207167749034352233955519642504059203171184362796879188386098053396193436351030321164897281134193269966421005829822879973054651990134383036098787832244877022488241951982491796164194311656925620981313650251332551878174568") + PrecomputedLines[1][9] = emulated.ValueOf[BaseField]("5114307858760558505028218493878912344149957944171727828461223441276920205074473499369381914839980338882527506453259283811795570014423568561039994119506118381158174777340851075528982301957519935733692661412135735978386601659268788") // i = 8 j = 0 - PrecomputedLines[0][8] = emulated.ValueOf[emulated.BW6761Fp]("2430911614625980011269596384381272763610223985279525352706093989400397822031992694866243135866708876193081539441025415164907568506854410818419160033732911927209720487744352610460298957595825863662700086358463670994353428472440400") - PrecomputedLines[1][8] = emulated.ValueOf[emulated.BW6761Fp]("4335308494558780318705382979642947854233414946868553910346431996037254174896634678952788540674877155437972939636950656367011448361678973639684527046756791677216648694827372273647715817383867045823075818246233445668898931395594767") + PrecomputedLines[0][8] = emulated.ValueOf[BaseField]("2430911614625980011269596384381272763610223985279525352706093989400397822031992694866243135866708876193081539441025415164907568506854410818419160033732911927209720487744352610460298957595825863662700086358463670994353428472440400") + PrecomputedLines[1][8] = emulated.ValueOf[BaseField]("4335308494558780318705382979642947854233414946868553910346431996037254174896634678952788540674877155437972939636950656367011448361678973639684527046756791677216648694827372273647715817383867045823075818246233445668898931395594767") // i = 7 j = 0 - PrecomputedLines[0][7] = emulated.ValueOf[emulated.BW6761Fp]("2547848118024519988008929564919046377764734130919966703992247478777865133666285581651380910908199249341499527419093291036315824924421071456781798698355988988002895935285715260847170096816249495158282329971766659257600058565068551") - PrecomputedLines[1][7] = emulated.ValueOf[emulated.BW6761Fp]("3815466815949541446803214953758427869213605006338708824999472457517728301413792590192240627877768012849217868883227016924672094847656511519302987719666096177580954550515172474878462121442935388043933185441940709007646866467092779") + PrecomputedLines[0][7] = emulated.ValueOf[BaseField]("2547848118024519988008929564919046377764734130919966703992247478777865133666285581651380910908199249341499527419093291036315824924421071456781798698355988988002895935285715260847170096816249495158282329971766659257600058565068551") + PrecomputedLines[1][7] = emulated.ValueOf[BaseField]("3815466815949541446803214953758427869213605006338708824999472457517728301413792590192240627877768012849217868883227016924672094847656511519302987719666096177580954550515172474878462121442935388043933185441940709007646866467092779") // i = 6 j = 0 - PrecomputedLines[0][6] = emulated.ValueOf[emulated.BW6761Fp]("1167077108768000995083265583371639051810160024459730164220078524025147365405410381409052481083355483954665138347762470353560327129943034303256612708531477178495683237179173891252090025088913287905696936171629029789627847133819510") - PrecomputedLines[1][6] = emulated.ValueOf[emulated.BW6761Fp]("406035093196089307103307474615059642877702648396642703148247458824638532132971266746290563977553124594299791531448357641367954689961054917535551770937131785613156413700799861618692902162324871023202201085410049092483775186775952") + PrecomputedLines[0][6] = emulated.ValueOf[BaseField]("1167077108768000995083265583371639051810160024459730164220078524025147365405410381409052481083355483954665138347762470353560327129943034303256612708531477178495683237179173891252090025088913287905696936171629029789627847133819510") + PrecomputedLines[1][6] = emulated.ValueOf[BaseField]("406035093196089307103307474615059642877702648396642703148247458824638532132971266746290563977553124594299791531448357641367954689961054917535551770937131785613156413700799861618692902162324871023202201085410049092483775186775952") // i = 5 j = 0 - PrecomputedLines[0][5] = emulated.ValueOf[emulated.BW6761Fp]("5399341071441425470861999462932780848935761306689901676544176243299434057444898651559397277961428534569943877757152043198433156075278927379555113704692063491709798852962308451848477392431046008507089543777328572800164773821369044") - PrecomputedLines[1][5] = emulated.ValueOf[emulated.BW6761Fp]("4380995413647501953014022884907895222277727851243307821429762028849533207304346950118872297176501204979430324923154815692850079796456195295072263401006293048513882137313361959316342663746522965665112134206267715375474513680925695") + PrecomputedLines[0][5] = emulated.ValueOf[BaseField]("5399341071441425470861999462932780848935761306689901676544176243299434057444898651559397277961428534569943877757152043198433156075278927379555113704692063491709798852962308451848477392431046008507089543777328572800164773821369044") + PrecomputedLines[1][5] = emulated.ValueOf[BaseField]("4380995413647501953014022884907895222277727851243307821429762028849533207304346950118872297176501204979430324923154815692850079796456195295072263401006293048513882137313361959316342663746522965665112134206267715375474513680925695") // i = 4 j = 0 - PrecomputedLines[0][4] = emulated.ValueOf[emulated.BW6761Fp]("2355007528001232760618455850480455889878756159911741489782272804065790095521530856067754068562930027102143923048583996593049902939282091755328298564310219091115127704570377575491630759741851478137224714576608472109143163134241888") - PrecomputedLines[1][4] = emulated.ValueOf[emulated.BW6761Fp]("4665912899792899455625749301506444981281230867228863943483114163843120887049405431893135842230516235480754063251618399643766179241982200138031389011412159570814247143899438305766243708072447877797562498822515933133270397139433709") + PrecomputedLines[0][4] = emulated.ValueOf[BaseField]("2355007528001232760618455850480455889878756159911741489782272804065790095521530856067754068562930027102143923048583996593049902939282091755328298564310219091115127704570377575491630759741851478137224714576608472109143163134241888") + PrecomputedLines[1][4] = emulated.ValueOf[BaseField]("4665912899792899455625749301506444981281230867228863943483114163843120887049405431893135842230516235480754063251618399643766179241982200138031389011412159570814247143899438305766243708072447877797562498822515933133270397139433709") // i = 3 j = 0 - PrecomputedLines[0][3] = emulated.ValueOf[emulated.BW6761Fp]("5207187280572824372922051863935983381154066518638866240941664431364801000621438981955438756540826259217505053518567779146110599177398084779430644956972778562746737866546243227275793645030333378961907301442124256757681561601565509") - PrecomputedLines[1][3] = emulated.ValueOf[emulated.BW6761Fp]("321949009317111361310696929365446618488074131566023032183338451206958310261692318478202604047493903733315880544029393577274070422541105562622923873179574100613877657615274865330644412569925819105384033887215110851435430212659905") + PrecomputedLines[0][3] = emulated.ValueOf[BaseField]("5207187280572824372922051863935983381154066518638866240941664431364801000621438981955438756540826259217505053518567779146110599177398084779430644956972778562746737866546243227275793645030333378961907301442124256757681561601565509") + PrecomputedLines[1][3] = emulated.ValueOf[BaseField]("321949009317111361310696929365446618488074131566023032183338451206958310261692318478202604047493903733315880544029393577274070422541105562622923873179574100613877657615274865330644412569925819105384033887215110851435430212659905") // i = 2 j = 0 - PrecomputedLines[0][2] = emulated.ValueOf[emulated.BW6761Fp]("171604085768836918994906821282906210004863151431034585830650164619711973937327792462246851932953079312423762492731678184930260011996638026853655426999132818363829420786676633528967828111050957233996306406638128544950132334484364") - PrecomputedLines[1][2] = emulated.ValueOf[emulated.BW6761Fp]("6792516736168200991229865079892385619624765294352391225236313718501707168858243912006527224359947264023889148380617685904914239210331300865987121974424549842263067180080608154025402396835373163617005222364670324911365935342379026") + PrecomputedLines[0][2] = emulated.ValueOf[BaseField]("171604085768836918994906821282906210004863151431034585830650164619711973937327792462246851932953079312423762492731678184930260011996638026853655426999132818363829420786676633528967828111050957233996306406638128544950132334484364") + PrecomputedLines[1][2] = emulated.ValueOf[BaseField]("6792516736168200991229865079892385619624765294352391225236313718501707168858243912006527224359947264023889148380617685904914239210331300865987121974424549842263067180080608154025402396835373163617005222364670324911365935342379026") // i = 1 j = 1 - PrecomputedLines[0][1] = emulated.ValueOf[emulated.BW6761Fp]("944621309521718726195869903203401589998750731769836683468553680511480125984458901894639375146584126764337783845625156474446875926698203520367014172302770224257630091870263675889741986266367203690209222830467843091715825765754640") - PrecomputedLines[1][1] = emulated.ValueOf[emulated.BW6761Fp]("151717716188583117580213009248663088871479025716844040691055056011917190000249071366607378973846869587747315850766873926578345476515479690657211936017801049784750197114270922646933630675513004231692030241645441850213408222685097") - PrecomputedLines[2][1] = emulated.ValueOf[emulated.BW6761Fp]("28240591223645435153733073361277903317564755913445487767068483539533044479138410276002907219108075484110392505549278277324143093596737443922825188690657065974320811475073328849015404093116839406804166651895001751574250775184455") - PrecomputedLines[3][1] = emulated.ValueOf[emulated.BW6761Fp]("4589649554746237140826435156384262430368105502118975572158357768261496043366512718050170319247735279131481525972354418839271370133844112357832425807335185239692216417703857721339378872509221452776525897587323689256311521904146265") + PrecomputedLines[0][1] = emulated.ValueOf[BaseField]("944621309521718726195869903203401589998750731769836683468553680511480125984458901894639375146584126764337783845625156474446875926698203520367014172302770224257630091870263675889741986266367203690209222830467843091715825765754640") + PrecomputedLines[1][1] = emulated.ValueOf[BaseField]("151717716188583117580213009248663088871479025716844040691055056011917190000249071366607378973846869587747315850766873926578345476515479690657211936017801049784750197114270922646933630675513004231692030241645441850213408222685097") + PrecomputedLines[2][1] = emulated.ValueOf[BaseField]("28240591223645435153733073361277903317564755913445487767068483539533044479138410276002907219108075484110392505549278277324143093596737443922825188690657065974320811475073328849015404093116839406804166651895001751574250775184455") + PrecomputedLines[3][1] = emulated.ValueOf[BaseField]("4589649554746237140826435156384262430368105502118975572158357768261496043366512718050170319247735279131481525972354418839271370133844112357832425807335185239692216417703857721339378872509221452776525897587323689256311521904146265") // i = 0 j = -3 - PrecomputedLines[0][0] = emulated.ValueOf[emulated.BW6761Fp]("640465197860141616651943019830167468662071649572960866185680631674097967785961934733973617225820045841013082657022103021262545174913240689397685222285103870309492801349613227748170760454313475424456095547502930115483054035772110") - PrecomputedLines[1][0] = emulated.ValueOf[emulated.BW6761Fp]("2388999626928869692387267530849694884621760071213154089905933112027488411260288999793599348532958544993763708471553506858810523705218284141900132752266650669434242141637113380204971907782122979495643127445776903903628231219718439") + PrecomputedLines[0][0] = emulated.ValueOf[BaseField]("640465197860141616651943019830167468662071649572960866185680631674097967785961934733973617225820045841013082657022103021262545174913240689397685222285103870309492801349613227748170760454313475424456095547502930115483054035772110") + PrecomputedLines[1][0] = emulated.ValueOf[BaseField]("2388999626928869692387267530849694884621760071213154089905933112027488411260288999793599348532958544993763708471553506858810523705218284141900132752266650669434242141637113380204971907782122979495643127445776903903628231219718439") return PrecomputedLines } diff --git a/std/algebra/interfaces.go b/std/algebra/interfaces.go index 2cfbf60a6a..ea9a6f29ac 100644 --- a/std/algebra/interfaces.go +++ b/std/algebra/interfaces.go @@ -1,15 +1,17 @@ package algebra -import "github.com/consensys/gnark/frontend" +import ( + "github.com/consensys/gnark/frontend" + "github.com/consensys/gnark/std/math/emulated" +) -type ScalarT any type GroupElementT any type G1ElementT GroupElementT type G2ElementT GroupElementT type GtElementT GroupElementT // Curve defines group operations on an elliptic curve. -type Curve[S ScalarT, G1El G1ElementT] interface { +type Curve[FR emulated.FieldParams, G1El G1ElementT] interface { // Add adds two points and returns the sum. It does not modify the input // points. Add(*G1El, *G1El) *G1El @@ -23,23 +25,23 @@ type Curve[S ScalarT, G1El G1ElementT] interface { // ScalarMul returns the scalar multiplication of the point by a scalar. It // does not modify the inputs. - ScalarMul(*G1El, *S) *G1El + ScalarMul(*G1El, *emulated.Element[FR]) *G1El // ScalarMulBase returns the scalar multiplication of the curve base point // by a scalar. It does not modify the scalar. - ScalarMulBase(*S) *G1El + ScalarMulBase(*emulated.Element[FR]) *G1El // MultiScalarMul computes the sum ∑ s_i P_i for the input // scalars s_i and points P_i. It returns an error if the input lengths // mismatch. - MultiScalarMul([]*G1El, []*S) (*G1El, error) + MultiScalarMul([]*G1El, []*emulated.Element[FR]) (*G1El, error) // MarshalG1 returns the binary decomposition G1.X || G1.Y. It matches the // output of gnark-crypto's Marshal method on G1 points. MarshalG1(G1El) []frontend.Variable // MarshalScalar returns the binary decomposition of the argument. - MarshalScalar(S) []frontend.Variable + MarshalScalar(emulated.Element[FR]) []frontend.Variable } // Pairing allows to compute the bi-linear pairing of G1 and G2 elements. diff --git a/std/algebra/native/sw_bls12377/g1_test.go b/std/algebra/native/sw_bls12377/g1_test.go index 9843547bed..ce10d40732 100644 --- a/std/algebra/native/sw_bls12377/g1_test.go +++ b/std/algebra/native/sw_bls12377/g1_test.go @@ -36,12 +36,15 @@ import ( // Marshalling type MarshalScalarTest struct { - X frontend.Variable + X Scalar R [fr.Bytes * 8]frontend.Variable } func (c *MarshalScalarTest) Define(api frontend.API) error { - ec := NewCurve(api) + ec, err := NewCurve(api) + if err != nil { + return err + } r := ec.MarshalScalar(c.X) for i := range c.R { api.AssertIsEqual(r[i], c.R[i]) @@ -55,7 +58,7 @@ func TestMarshalScalar(t *testing.T) { r.SetRandom() rBytes := r.Marshal() var witness MarshalScalarTest - witness.X = r.String() + witness.X = NewScalar(r) for i := 0; i < fr.Bytes; i++ { for j := 0; j < 8; j++ { witness.R[i*8+j] = (rBytes[i] >> (7 - j)) & 1 @@ -71,7 +74,10 @@ type MarshalG1Test struct { } func (c *MarshalG1Test) Define(api frontend.API) error { - ec := NewCurve(api) + ec, err := NewCurve(api) + if err != nil { + return err + } // the bits are layed out exactly as in gnark-crypto r := ec.MarshalG1(c.P) for i := range c.R { diff --git a/std/algebra/native/sw_bls12377/pairing2.go b/std/algebra/native/sw_bls12377/pairing2.go index 6c5e2c4586..63d8b1d614 100644 --- a/std/algebra/native/sw_bls12377/pairing2.go +++ b/std/algebra/native/sw_bls12377/pairing2.go @@ -2,31 +2,42 @@ package sw_bls12377 import ( "fmt" + "math/big" "github.com/consensys/gnark-crypto/ecc" bls12377 "github.com/consensys/gnark-crypto/ecc/bls12-377" + fr_bls12377 "github.com/consensys/gnark-crypto/ecc/bls12-377/fr" fr_bw6761 "github.com/consensys/gnark-crypto/ecc/bw6-761/fr" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/std/algebra/native/fields_bls12377" "github.com/consensys/gnark/std/math/bits" + "github.com/consensys/gnark/std/math/emulated" + "github.com/consensys/gnark/std/math/emulated/emparams" ) // Curve allows G1 operations in BLS12-377. type Curve struct { api frontend.API + fr *emulated.Field[ScalarField] } // NewCurve initializes a new [Curve] instance. -func NewCurve(api frontend.API) *Curve { +func NewCurve(api frontend.API) (*Curve, error) { + f, err := emulated.NewField[ScalarField](api) + if err != nil { + return nil, fmt.Errorf("scalar field") + } return &Curve{ api: api, - } + fr: f, + }, nil } // MarshalScalar returns func (c *Curve) MarshalScalar(s Scalar) []frontend.Variable { - nbBits := 8 * ((ecc.BLS12_377.ScalarField().BitLen() + 7) / 8) - x := bits.ToBinary(c.api, s, bits.WithNbDigits(nbBits)) + nbBits := 8 * ((ScalarField{}.Modulus().BitLen() + 7) / 8) + ss := c.fr.Reduce(&s) + x := c.fr.ToBits(ss) for i, j := 0, nbBits-1; i < j; { x[i], x[j] = x[j], x[i] i++ @@ -80,20 +91,22 @@ func (c *Curve) Neg(P *G1Affine) *G1Affine { // ScalarMul computes scalar*P and returns the result. It doesn't modify the // inputs. -func (c *Curve) ScalarMul(P *G1Affine, scalar *Scalar) *G1Affine { +func (c *Curve) ScalarMul(P *G1Affine, s *Scalar) *G1Affine { res := &G1Affine{ X: P.X, Y: P.Y, } - res.ScalarMul(c.api, *P, *scalar) + varScalar := c.packScalarToVar(s) + res.ScalarMul(c.api, *P, varScalar) return res } // ScalarMulBase computes scalar*G where G is the standard base point of the // curve. It doesn't modify the scalar. -func (c *Curve) ScalarMulBase(scalar *Scalar) *G1Affine { +func (c *Curve) ScalarMulBase(s *Scalar) *G1Affine { res := new(G1Affine) - res.ScalarMulBase(c.api, *scalar) + varScalar := c.packScalarToVar(s) + res.ScalarMulBase(c.api, varScalar) return res } @@ -252,4 +265,29 @@ func NewGTEl(v bls12377.GT) GT { // Scalar is a scalar in the groups. As the implementation is defined on a // 2-chain, then this type is an alias to [frontend.Variable]. -type Scalar = frontend.Variable +type Scalar = emulated.Element[ScalarField] + +// NewScalar allocates a witness from the native scalar and returns it. +func NewScalar(v fr_bls12377.Element) Scalar { + return emulated.ValueOf[ScalarField](v) +} + +// packScalarToVar packs the limbs of emulated scalar to a frontend.Variable. +// +// The method is for compatibility for existing scalar multiplication +// implementation which assumes as an input frontend.Variable. +func (c *Curve) packScalarToVar(s *Scalar) frontend.Variable { + var fr ScalarField + reduced := c.fr.Reduce(s) + var res frontend.Variable = 0 + nbBits := fr.BitsPerLimb() + coef := new(big.Int) + one := big.NewInt(1) + for i := range reduced.Limbs { + res = c.api.Add(res, c.api.Mul(reduced.Limbs[i], coef.Lsh(one, nbBits*uint(i)))) + } + return res +} + +// ScalarField defines the [emulated.FieldParams] implementation on a one limb of the scalar field. +type ScalarField = emparams.BLS12377Fr diff --git a/std/algebra/native/sw_bls24315/g1_test.go b/std/algebra/native/sw_bls24315/g1_test.go index 4fe4953109..9e3648d66f 100644 --- a/std/algebra/native/sw_bls24315/g1_test.go +++ b/std/algebra/native/sw_bls24315/g1_test.go @@ -36,12 +36,15 @@ import ( // Marshalling type MarshalScalarTest struct { - X frontend.Variable + X Scalar R [fr.Bytes * 8]frontend.Variable } func (c *MarshalScalarTest) Define(api frontend.API) error { - ec := NewCurve(api) + ec, err := NewCurve(api) + if err != nil { + return err + } r := ec.MarshalScalar(c.X) for i := range c.R { api.AssertIsEqual(r[i], c.R[i]) @@ -55,7 +58,7 @@ func TestMarshalScalar(t *testing.T) { r.SetRandom() rBytes := r.Marshal() var witness MarshalScalarTest - witness.X = r.String() + witness.X = NewScalar(r) for i := 0; i < fr.Bytes; i++ { for j := 0; j < 8; j++ { witness.R[i*8+j] = (rBytes[i] >> (7 - j)) & 1 @@ -71,7 +74,10 @@ type MarshalG1Test struct { } func (c *MarshalG1Test) Define(api frontend.API) error { - ec := NewCurve(api) + ec, err := NewCurve(api) + if err != nil { + return err + } // we want to get the same output as gnark-crypto's marshal. // It's a point on bls12-377 so the number of bytes is 96, as the // field of definition of bls12-377 is 48 bytes long. diff --git a/std/algebra/native/sw_bls24315/pairing2.go b/std/algebra/native/sw_bls24315/pairing2.go index 5a0944a504..21441f926d 100644 --- a/std/algebra/native/sw_bls24315/pairing2.go +++ b/std/algebra/native/sw_bls24315/pairing2.go @@ -2,31 +2,42 @@ package sw_bls24315 import ( "fmt" + "math/big" "github.com/consensys/gnark-crypto/ecc" bls24315 "github.com/consensys/gnark-crypto/ecc/bls24-315" + fr_bls24315 "github.com/consensys/gnark-crypto/ecc/bls24-315/fr" fr_bw6633 "github.com/consensys/gnark-crypto/ecc/bw6-633/fr" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/std/algebra/native/fields_bls24315" "github.com/consensys/gnark/std/math/bits" + "github.com/consensys/gnark/std/math/emulated" + "github.com/consensys/gnark/std/math/emulated/emparams" ) // Curve allows G1 operations in BLS24-315. type Curve struct { api frontend.API + fr *emulated.Field[ScalarField] } // NewCurve initializes a new [Curve] instance. -func NewCurve(api frontend.API) *Curve { +func NewCurve(api frontend.API) (*Curve, error) { + f, err := emulated.NewField[ScalarField](api) + if err != nil { + return nil, fmt.Errorf("scalar field") + } return &Curve{ api: api, - } + fr: f, + }, nil } // MarshalScalar returns func (c *Curve) MarshalScalar(s Scalar) []frontend.Variable { - nbBits := 8 * ((ecc.BLS24_315.ScalarField().BitLen() + 7) / 8) - x := bits.ToBinary(c.api, s, bits.WithNbDigits(nbBits)) + nbBits := 8 * ((ScalarField{}.Modulus().BitLen() + 7) / 8) + ss := c.fr.Reduce(&s) + x := c.fr.ToBits(ss) for i, j := 0, nbBits-1; i < j; { x[i], x[j] = x[j], x[i] i++ @@ -80,20 +91,22 @@ func (c *Curve) Neg(P *G1Affine) *G1Affine { // ScalarMul computes scalar*P and returns the result. It doesn't modify the // inputs. -func (c *Curve) ScalarMul(P *G1Affine, scalar *Scalar) *G1Affine { +func (c *Curve) ScalarMul(P *G1Affine, s *Scalar) *G1Affine { res := &G1Affine{ X: P.X, Y: P.Y, } - res.ScalarMul(c.api, *P, *scalar) + varScalar := c.packScalarToVar(s) + res.ScalarMul(c.api, *P, varScalar) return res } // ScalarMulBase computes scalar*G where G is the standard base point of the // curve. It doesn't modify the scalar. -func (c *Curve) ScalarMulBase(scalar *Scalar) *G1Affine { +func (c *Curve) ScalarMulBase(s *Scalar) *G1Affine { res := new(G1Affine) - res.ScalarMulBase(c.api, *scalar) + varScalar := c.packScalarToVar(s) + res.ScalarMulBase(c.api, varScalar) return res } @@ -300,4 +313,29 @@ func NewGTEl(v bls24315.GT) GT { // Scalar is a scalar in the groups. As the implementation is defined on a // 2-chain, then this type is an alias to [frontend.Variable]. -type Scalar = frontend.Variable +type Scalar = emulated.Element[ScalarField] + +// NewScalar allocates a witness from the native scalar and returns it. +func NewScalar(v fr_bls24315.Element) Scalar { + return emulated.ValueOf[ScalarField](v) +} + +// packScalarToVar packs the limbs of emulated scalar to a frontend.Variable. +// +// The method is for compatibility for existing scalar multiplication +// implementation which assumes as an input frontend.Variable. +func (c *Curve) packScalarToVar(s *Scalar) frontend.Variable { + var fr ScalarField + reduced := c.fr.Reduce(s) + var res frontend.Variable = 0 + nbBits := fr.BitsPerLimb() + coef := new(big.Int) + one := big.NewInt(1) + for i := range reduced.Limbs { + res = c.api.Add(res, c.api.Mul(reduced.Limbs[i], coef.Lsh(one, nbBits*uint(i)))) + } + return res +} + +// ScalarField defines the [emulated.FieldParams] implementation on a one limb of the scalar field. +type ScalarField = emparams.BLS12315Fr diff --git a/std/commitments/kzg/native_doc_test.go b/std/commitments/kzg/native_doc_test.go index 8a183e8a66..f5ff956aa5 100644 --- a/std/commitments/kzg/native_doc_test.go +++ b/std/commitments/kzg/native_doc_test.go @@ -72,7 +72,7 @@ func Example_native() { } // create a witness element of the opening proof and the evaluation point - wProof, err := kzg.ValueOfOpeningProof[sw_bls12377.Scalar, sw_bls12377.G1Affine](point, proof) + wProof, err := kzg.ValueOfOpeningProof[sw_bls12377.ScalarField, sw_bls12377.G1Affine](point, proof) if err != nil { panic("opening proof witness failed: " + err.Error()) } @@ -82,12 +82,12 @@ func Example_native() { if err != nil { panic("verifying key witness failed: " + err.Error()) } - assignment := KZGVerificationCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + assignment := KZGVerificationCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - circuit := KZGVerificationCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{} + circuit := KZGVerificationCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{} // because we are using 2-chains then the outer curve must correspond to the // inner curve. For inner BLS12-377 the outer curve is BW6-761. diff --git a/std/commitments/kzg/nonnative_doc_test.go b/std/commitments/kzg/nonnative_doc_test.go index 8fd0243a81..0289ee0959 100644 --- a/std/commitments/kzg/nonnative_doc_test.go +++ b/std/commitments/kzg/nonnative_doc_test.go @@ -13,16 +13,17 @@ import ( "github.com/consensys/gnark/std/algebra" "github.com/consensys/gnark/std/algebra/emulated/sw_bn254" "github.com/consensys/gnark/std/commitments/kzg" + "github.com/consensys/gnark/std/math/emulated" ) -type KZGVerificationCircuit[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GTEl algebra.GtElementT] struct { +type KZGVerificationCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GTEl algebra.GtElementT] struct { kzg.VerifyingKey[G2El] kzg.Commitment[G1El] - kzg.OpeningProof[S, G1El] + kzg.OpeningProof[FR, G1El] } -func (c *KZGVerificationCircuit[S, G1El, G2El, GTEl]) Define(api frontend.API) error { - curve, err := algebra.GetCurve[S, G1El](api) +func (c *KZGVerificationCircuit[FR, G1El, G2El, GTEl]) Define(api frontend.API) error { + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("get curve: %w", err) } @@ -94,7 +95,7 @@ func Example_emulated() { } // create a witness element of the opening proof and the evaluation point - wProof, err := kzg.ValueOfOpeningProof[sw_bn254.Scalar, sw_bn254.G1Affine](point, proof) + wProof, err := kzg.ValueOfOpeningProof[sw_bn254.ScalarField, sw_bn254.G1Affine](point, proof) if err != nil { panic("opening proof witness failed: " + err.Error()) } @@ -104,12 +105,12 @@ func Example_emulated() { if err != nil { panic("verifying key witness failed: " + err.Error()) } - assignment := KZGVerificationCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + assignment := KZGVerificationCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - circuit := KZGVerificationCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{} + circuit := KZGVerificationCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{} // as we are currently using the emulated implementation of BN254 // in-circuit, then we can compile to any curve. For example purposes, here diff --git a/std/commitments/kzg/verifier.go b/std/commitments/kzg/verifier.go index 7d71ee5115..60ba6d621d 100644 --- a/std/commitments/kzg/verifier.go +++ b/std/commitments/kzg/verifier.go @@ -35,6 +35,7 @@ import ( "github.com/consensys/gnark/std/algebra/emulated/sw_bw6761" "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/std/algebra/native/sw_bls24315" + "github.com/consensys/gnark/std/math/emulated" ) // Commitment is an KZG commitment to a polynomial. Use [ValueOfCommitment] to @@ -88,78 +89,78 @@ func ValueOfCommitment[G1El algebra.G1ElementT](cmt any) (Commitment[G1El], erro // OpeningProof embeds the opening proof that polynomial evaluated at Point is // equal to ClaimedValue. Use [ValueOfOpeningProof] to initialize a witness from // a native opening proof. -type OpeningProof[S algebra.ScalarT, G1El algebra.G1ElementT] struct { +type OpeningProof[FR emulated.FieldParams, G1El algebra.G1ElementT] struct { QuotientPoly G1El - ClaimedValue S - Point S + ClaimedValue emulated.Element[FR] + Point emulated.Element[FR] } // ValueOfOpeningProof initializes an opening proof from the given proof and // point. It returns an error if there is a mismatch between the type parameters // and types of the provided point and proof. -func ValueOfOpeningProof[S algebra.ScalarT, G1El algebra.G1ElementT](point any, proof any) (OpeningProof[S, G1El], error) { - var ret OpeningProof[S, G1El] +func ValueOfOpeningProof[FR emulated.FieldParams, G1El algebra.G1ElementT](point any, proof any) (OpeningProof[FR, G1El], error) { + var ret OpeningProof[FR, G1El] switch s := any(&ret).(type) { - case *OpeningProof[sw_bn254.Scalar, sw_bn254.G1Affine]: + case *OpeningProof[sw_bn254.ScalarField, sw_bn254.G1Affine]: tProof, ok := proof.(kzg_bn254.OpeningProof) if !ok { return ret, fmt.Errorf("mismatching types %T %T", ret, proof) } tPoint, ok := point.(fr_bn254.Element) if !ok { - return ret, fmt.Errorf("mismatching types %T %T", ret, point) + return ret, fmt.Errorf("mismatching types %T %T", s.Point, point) } s.QuotientPoly = sw_bn254.NewG1Affine(tProof.H) s.ClaimedValue = sw_bn254.NewScalar(tProof.ClaimedValue) s.Point = sw_bn254.NewScalar(tPoint) - case *OpeningProof[sw_bls12377.Scalar, sw_bls12377.G1Affine]: + case *OpeningProof[sw_bls12377.ScalarField, sw_bls12377.G1Affine]: tProof, ok := proof.(kzg_bls12377.OpeningProof) if !ok { return ret, fmt.Errorf("mismatching types %T %T", ret, proof) } tPoint, ok := point.(fr_bls12377.Element) if !ok { - return ret, fmt.Errorf("mismatching types %T %T", ret, point) + return ret, fmt.Errorf("mismatching types %T %T", s.Point, point) } s.QuotientPoly = sw_bls12377.NewG1Affine(tProof.H) - s.ClaimedValue = tProof.ClaimedValue.String() - s.Point = tPoint.String() - case *OpeningProof[sw_bls12381.Scalar, sw_bls12381.G1Affine]: + s.ClaimedValue = sw_bls12377.NewScalar(tProof.ClaimedValue) + s.Point = sw_bls12377.NewScalar(tPoint) + case *OpeningProof[sw_bls12381.ScalarField, sw_bls12381.G1Affine]: tProof, ok := proof.(kzg_bls12381.OpeningProof) if !ok { return ret, fmt.Errorf("mismatching types %T %T", ret, proof) } tPoint, ok := point.(fr_bls12381.Element) if !ok { - return ret, fmt.Errorf("mismatching types %T %T", ret, point) + return ret, fmt.Errorf("mismatching types %T %T", s.Point, point) } s.QuotientPoly = sw_bls12381.NewG1Affine(tProof.H) s.ClaimedValue = sw_bls12381.NewScalar(tProof.ClaimedValue) s.Point = sw_bls12381.NewScalar(tPoint) - case *OpeningProof[sw_bw6761.Scalar, sw_bw6761.G1Affine]: + case *OpeningProof[sw_bw6761.ScalarField, sw_bw6761.G1Affine]: tProof, ok := proof.(kzg_bw6761.OpeningProof) if !ok { return ret, fmt.Errorf("mismatching types %T %T", ret, proof) } tPoint, ok := point.(fr_bw6761.Element) if !ok { - return ret, fmt.Errorf("mismatching types %T %T", ret, point) + return ret, fmt.Errorf("mismatching types %T %T", s.Point, point) } s.QuotientPoly = sw_bw6761.NewG1Affine(tProof.H) s.ClaimedValue = sw_bw6761.NewScalar(tProof.ClaimedValue) s.Point = sw_bw6761.NewScalar(tPoint) - case *OpeningProof[sw_bls24315.Scalar, sw_bls24315.G1Affine]: + case *OpeningProof[sw_bls24315.ScalarField, sw_bls24315.G1Affine]: tProof, ok := proof.(kzg_bls24315.OpeningProof) if !ok { return ret, fmt.Errorf("mismatching types %T %T", ret, proof) } tPoint, ok := point.(fr_bls24315.Element) if !ok { - return ret, fmt.Errorf("mismatching types %T %T", ret, point) + return ret, fmt.Errorf("mismatching types %T %T", s.Point, point) } s.QuotientPoly = sw_bls24315.NewG1Affine(tProof.H) - s.ClaimedValue = tProof.ClaimedValue.String() - s.Point = tPoint.String() + s.ClaimedValue = sw_bls24315.NewScalar(tProof.ClaimedValue) + s.Point = sw_bls24315.NewScalar(tPoint) default: return ret, fmt.Errorf("unknown type parametrization") } @@ -220,16 +221,16 @@ func ValueOfVerifyingKey[G2El algebra.G2ElementT](vk any) (VerifyingKey[G2El], e } // Verifier allows verifying KZG opening proofs. -type Verifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.G2ElementT] struct { +type Verifier[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.G2ElementT] struct { VerifyingKey[G2El] - curve algebra.Curve[S, G1El] + curve algebra.Curve[FR, G1El] pairing algebra.Pairing[G1El, G2El, GtEl] } // NewVerifier initializes a new Verifier instance. -func NewVerifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.G2ElementT](vk VerifyingKey[G2El], curve algebra.Curve[S, G1El], pairing algebra.Pairing[G1El, G2El, GtEl]) *Verifier[S, G1El, G2El, GtEl] { - return &Verifier[S, G1El, G2El, GtEl]{ +func NewVerifier[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.G2ElementT](vk VerifyingKey[G2El], curve algebra.Curve[FR, G1El], pairing algebra.Pairing[G1El, G2El, GtEl]) *Verifier[FR, G1El, G2El, GtEl] { + return &Verifier[FR, G1El, G2El, GtEl]{ VerifyingKey: vk, curve: curve, pairing: pairing, @@ -238,7 +239,7 @@ func NewVerifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2Elem // AssertProof asserts the validity of the opening proof for the given // commitment. -func (vk *Verifier[S, G1El, G2El, GtEl]) AssertProof(commitment Commitment[G1El], proof OpeningProof[S, G1El]) error { +func (vk *Verifier[FR, G1El, G2El, GtEl]) AssertProof(commitment Commitment[G1El], proof OpeningProof[FR, G1El]) error { // [f(a)]G₁ claimedValueG1 := vk.curve.ScalarMulBase(&proof.ClaimedValue) diff --git a/std/commitments/kzg/verifier_test.go b/std/commitments/kzg/verifier_test.go index 2fed4f36f7..2d3eefff79 100644 --- a/std/commitments/kzg/verifier_test.go +++ b/std/commitments/kzg/verifier_test.go @@ -28,6 +28,7 @@ import ( "github.com/consensys/gnark/std/algebra/emulated/sw_bw6761" "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/std/algebra/native/sw_bls24315" + "github.com/consensys/gnark/std/math/emulated" "github.com/consensys/gnark/test" ) @@ -36,14 +37,14 @@ const ( polynomialSize = 100 ) -type KZGVerificationCircuit[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GTEl algebra.GtElementT] struct { +type KZGVerificationCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GTEl algebra.GtElementT] struct { VerifyingKey[G2El] Commitment[G1El] - OpeningProof[S, G1El] + OpeningProof[FR, G1El] } -func (c *KZGVerificationCircuit[S, G1El, G2El, GTEl]) Define(api frontend.API) error { - curve, err := algebra.GetCurve[S, G1El](api) +func (c *KZGVerificationCircuit[FR, G1El, G2El, GTEl]) Define(api frontend.API) error { + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("get curve: %w", err) } @@ -85,17 +86,17 @@ func TestKZGVerificationEmulated(t *testing.T) { wCmt, err := ValueOfCommitment[sw_bn254.G1Affine](com) assert.NoError(err) - wProof, err := ValueOfOpeningProof[sw_bn254.Scalar, sw_bn254.G1Affine](point, proof) + wProof, err := ValueOfOpeningProof[sw_bn254.ScalarField, sw_bn254.G1Affine](point, proof) assert.NoError(err) wVk, err := ValueOfVerifyingKey[sw_bn254.G2Affine](srs.Vk) assert.NoError(err) - assignment := KZGVerificationCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + assignment := KZGVerificationCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - assert.CheckCircuit(&KZGVerificationCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{}, test.WithValidAssignment(&assignment)) + assert.CheckCircuit(&KZGVerificationCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{}, test.WithValidAssignment(&assignment)) } func TestKZGVerificationEmulated2(t *testing.T) { @@ -125,17 +126,17 @@ func TestKZGVerificationEmulated2(t *testing.T) { wCmt, err := ValueOfCommitment[sw_bls12381.G1Affine](com) assert.NoError(err) - wProof, err := ValueOfOpeningProof[sw_bls12381.Scalar, sw_bls12381.G1Affine](point, proof) + wProof, err := ValueOfOpeningProof[sw_bls12381.ScalarField, sw_bls12381.G1Affine](point, proof) assert.NoError(err) wVk, err := ValueOfVerifyingKey[sw_bls12381.G2Affine](srs.Vk) assert.NoError(err) - assignment := KZGVerificationCircuit[sw_bls12381.Scalar, sw_bls12381.G1Affine, sw_bls12381.G2Affine, sw_bls12381.GTEl]{ + assignment := KZGVerificationCircuit[sw_bls12381.ScalarField, sw_bls12381.G1Affine, sw_bls12381.G2Affine, sw_bls12381.GTEl]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - assert.CheckCircuit(&KZGVerificationCircuit[sw_bls12381.Scalar, sw_bls12381.G1Affine, sw_bls12381.G2Affine, sw_bls12381.GTEl]{}, test.WithValidAssignment(&assignment)) + assert.CheckCircuit(&KZGVerificationCircuit[sw_bls12381.ScalarField, sw_bls12381.G1Affine, sw_bls12381.G2Affine, sw_bls12381.GTEl]{}, test.WithValidAssignment(&assignment)) } func TestKZGVerificationEmulated3(t *testing.T) { @@ -165,17 +166,17 @@ func TestKZGVerificationEmulated3(t *testing.T) { wCmt, err := ValueOfCommitment[sw_bw6761.G1Affine](com) assert.NoError(err) - wProof, err := ValueOfOpeningProof[sw_bw6761.Scalar, sw_bw6761.G1Affine](point, proof) + wProof, err := ValueOfOpeningProof[sw_bw6761.ScalarField, sw_bw6761.G1Affine](point, proof) assert.NoError(err) wVk, err := ValueOfVerifyingKey[sw_bw6761.G2Affine](srs.Vk) assert.NoError(err) - assignment := KZGVerificationCircuit[sw_bw6761.Scalar, sw_bw6761.G1Affine, sw_bw6761.G2Affine, sw_bw6761.GTEl]{ + assignment := KZGVerificationCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine, sw_bw6761.G2Affine, sw_bw6761.GTEl]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - assert.CheckCircuit(&KZGVerificationCircuit[sw_bw6761.Scalar, sw_bw6761.G1Affine, sw_bw6761.G2Affine, sw_bw6761.GTEl]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BN254)) + assert.CheckCircuit(&KZGVerificationCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine, sw_bw6761.G2Affine, sw_bw6761.GTEl]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BN254)) } func TestKZGVerificationTwoChain(t *testing.T) { @@ -205,18 +206,18 @@ func TestKZGVerificationTwoChain(t *testing.T) { wCmt, err := ValueOfCommitment[sw_bls12377.G1Affine](com) assert.NoError(err) - wProof, err := ValueOfOpeningProof[sw_bls12377.Scalar, sw_bls12377.G1Affine](point, proof) + wProof, err := ValueOfOpeningProof[sw_bls12377.ScalarField, sw_bls12377.G1Affine](point, proof) assert.NoError(err) wVk, err := ValueOfVerifyingKey[sw_bls12377.G2Affine](srs.Vk) assert.NoError(err) - assignment := KZGVerificationCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + assignment := KZGVerificationCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - assert.CheckCircuit(&KZGVerificationCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BW6_761)) + assert.CheckCircuit(&KZGVerificationCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BW6_761)) } func TestKZGVerificationTwoChain2(t *testing.T) { @@ -246,18 +247,18 @@ func TestKZGVerificationTwoChain2(t *testing.T) { wCmt, err := ValueOfCommitment[sw_bls24315.G1Affine](com) assert.NoError(err) - wProof, err := ValueOfOpeningProof[sw_bls24315.Scalar, sw_bls24315.G1Affine](point, proof) + wProof, err := ValueOfOpeningProof[sw_bls24315.ScalarField, sw_bls24315.G1Affine](point, proof) assert.NoError(err) wVk, err := ValueOfVerifyingKey[sw_bls24315.G2Affine](srs.Vk) assert.NoError(err) - assignment := KZGVerificationCircuit[sw_bls24315.Scalar, sw_bls24315.G1Affine, sw_bls24315.G2Affine, sw_bls24315.GT]{ + assignment := KZGVerificationCircuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine, sw_bls24315.G2Affine, sw_bls24315.GT]{ VerifyingKey: wVk, Commitment: wCmt, OpeningProof: wProof, } - assert.CheckCircuit(&KZGVerificationCircuit[sw_bls24315.Scalar, sw_bls24315.G1Affine, sw_bls24315.G2Affine, sw_bls24315.GT]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BW6_633)) + assert.CheckCircuit(&KZGVerificationCircuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine, sw_bls24315.G2Affine, sw_bls24315.GT]{}, test.WithValidAssignment(&assignment), test.WithCurves(ecc.BW6_633)) } func TestValueOfCommitment(t *testing.T) { @@ -305,7 +306,7 @@ func TestValueOfOpeningProof(t *testing.T) { H: G1, ClaimedValue: value, } - assignment, err := ValueOfOpeningProof[sw_bn254.Scalar, sw_bn254.G1Affine](point, proof) + assignment, err := ValueOfOpeningProof[sw_bn254.ScalarField, sw_bn254.G1Affine](point, proof) assert.NoError(err) _ = assignment }, "bn254") @@ -318,7 +319,7 @@ func TestValueOfOpeningProof(t *testing.T) { H: G1, ClaimedValue: value, } - assignment, err := ValueOfOpeningProof[sw_bls12377.Scalar, sw_bls12377.G1Affine](point, proof) + assignment, err := ValueOfOpeningProof[sw_bls12377.ScalarField, sw_bls12377.G1Affine](point, proof) assert.NoError(err) _ = assignment }, "bls12377") @@ -331,7 +332,7 @@ func TestValueOfOpeningProof(t *testing.T) { H: G1, ClaimedValue: value, } - assignment, err := ValueOfOpeningProof[sw_bls12381.Scalar, sw_bls12381.G1Affine](point, proof) + assignment, err := ValueOfOpeningProof[sw_bls12381.ScalarField, sw_bls12381.G1Affine](point, proof) assert.NoError(err) _ = assignment }, "bls12381") @@ -344,7 +345,7 @@ func TestValueOfOpeningProof(t *testing.T) { H: G1, ClaimedValue: value, } - assignment, err := ValueOfOpeningProof[sw_bw6761.Scalar, sw_bw6761.G1Affine](point, proof) + assignment, err := ValueOfOpeningProof[sw_bw6761.ScalarField, sw_bw6761.G1Affine](point, proof) assert.NoError(err) _ = assignment }, "bw6761") @@ -357,7 +358,7 @@ func TestValueOfOpeningProof(t *testing.T) { H: G1, ClaimedValue: value, } - assignment, err := ValueOfOpeningProof[sw_bls24315.Scalar, sw_bls24315.G1Affine](point, proof) + assignment, err := ValueOfOpeningProof[sw_bls24315.ScalarField, sw_bls24315.G1Affine](point, proof) assert.NoError(err) _ = assignment }, "bls24315") diff --git a/std/math/emulated/emparams/emparams.go b/std/math/emulated/emparams/emparams.go index 01088ee435..ebbf7d5d8c 100644 --- a/std/math/emulated/emparams/emparams.go +++ b/std/math/emulated/emparams/emparams.go @@ -25,6 +25,12 @@ func (fourLimbPrimeField) NbLimbs() uint { return 4 } func (fourLimbPrimeField) BitsPerLimb() uint { return 64 } func (fourLimbPrimeField) IsPrime() bool { return true } +type fiveLimbPrimeField struct{} + +func (fiveLimbPrimeField) NbLimbs() uint { return 5 } +func (fiveLimbPrimeField) BitsPerLimb() uint { return 64 } +func (fiveLimbPrimeField) IsPrime() bool { return true } + type sixLimbPrimeField struct{} func (sixLimbPrimeField) NbLimbs() uint { return 6 } @@ -122,6 +128,20 @@ type BLS12377Fp struct{ sixLimbPrimeField } func (fp BLS12377Fp) Modulus() *big.Int { return ecc.BLS12_377.BaseField() } +// BLS12377Fr provides type parametrization for field emulation: +// - limbs: 4 +// - limb width: 64 bits +// +// The prime modulus for type parametrisation is: +// +// 0x12ab655e9a2ca55660b44d1e5c37b00159aa76fed00000010a11800000000001 (base 16) +// 8444461749428370424248824938781546531375899335154063827935233455917409239041 (base 10) +// +// This is the scalar field of the BLS12-377 curve. +type BLS12377Fr struct{ fourLimbPrimeField } + +func (fr BLS12377Fr) Modulus() *big.Int { return ecc.BLS12_377.ScalarField() } + // BLS12381Fp provides type parametrization for field emulation: // - limbs: 6 // - limb width: 64 bits @@ -233,3 +253,31 @@ func (fp BW6761Fp) Modulus() *big.Int { return ecc.BW6_761.BaseField() } type BW6761Fr struct{ sixLimbPrimeField } func (fp BW6761Fr) Modulus() *big.Int { return ecc.BW6_761.ScalarField() } + +// BLS12315Fp provides type parametrization for field emulation: +// - limbs: 5 +// - limb width: 64 bits +// +// The prime modulus for type parametrisation is: +// +// 0x4c23a02b586d650d3f7498be97c5eafdec1d01aa27a1ae0421ee5da52bde5026fe802ff40300001 (base 16) +// 39705142709513438335025689890408969744933502416914749335064285505637884093126342347073617133569 (base 10) +// +// This is the base field of the BLS24-315 curve. +type BLS12315Fp struct{ fiveLimbPrimeField } + +func (fp BLS12315Fp) Modulus() *big.Int { return ecc.BLS24_315.BaseField() } + +// BLS12315Fr provides type parametrization for field emulation: +// - limbs: 4 +// - limb width: 64 bits +// +// The prime modulus for type parametrisation is: +// +// 11502027791375260645628074404575422495959608200132055716665986169834464870401 (base 16) +// 0x196deac24a9da12b25fc7ec9cf927a98c8c480ece644e36419d0c5fd00c00001 (base 10) +// +// This is the scalar field of the BLS24-315 curve. +type BLS12315Fr struct{ fourLimbPrimeField } + +func (fr BLS12315Fr) Modulus() *big.Int { return ecc.BLS24_315.ScalarField() } diff --git a/std/math/emulated/field_test.go b/std/math/emulated/field_test.go index d1124f4e82..175131827f 100644 --- a/std/math/emulated/field_test.go +++ b/std/math/emulated/field_test.go @@ -5,10 +5,8 @@ import ( "fmt" "testing" - bls12377 "github.com/consensys/gnark-crypto/ecc/bls12-377" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/frontend/cs/r1cs" - "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/test" ) @@ -29,32 +27,6 @@ func (c *WrapperCircuit) Define(api frontend.API) error { return nil } -type pairingBLS377 struct { - P sw_bls12377.G1Affine `gnark:",public"` - Q sw_bls12377.G2Affine - pairingRes bls12377.GT -} - -//lint:ignore U1000 skipped test -func (circuit *pairingBLS377) Define(api frontend.API) error { - pairingRes, _ := sw_bls12377.Pair(api, - []sw_bls12377.G1Affine{circuit.P}, - []sw_bls12377.G2Affine{circuit.Q}) - api.AssertIsEqual(pairingRes.C0.B0.A0, &circuit.pairingRes.C0.B0.A0) - api.AssertIsEqual(pairingRes.C0.B0.A1, &circuit.pairingRes.C0.B0.A1) - api.AssertIsEqual(pairingRes.C0.B1.A0, &circuit.pairingRes.C0.B1.A0) - api.AssertIsEqual(pairingRes.C0.B1.A1, &circuit.pairingRes.C0.B1.A1) - api.AssertIsEqual(pairingRes.C0.B2.A0, &circuit.pairingRes.C0.B2.A0) - api.AssertIsEqual(pairingRes.C0.B2.A1, &circuit.pairingRes.C0.B2.A1) - api.AssertIsEqual(pairingRes.C1.B0.A0, &circuit.pairingRes.C1.B0.A0) - api.AssertIsEqual(pairingRes.C1.B0.A1, &circuit.pairingRes.C1.B0.A1) - api.AssertIsEqual(pairingRes.C1.B1.A0, &circuit.pairingRes.C1.B1.A0) - api.AssertIsEqual(pairingRes.C1.B1.A1, &circuit.pairingRes.C1.B1.A1) - api.AssertIsEqual(pairingRes.C1.B2.A0, &circuit.pairingRes.C1.B2.A0) - api.AssertIsEqual(pairingRes.C1.B2.A1, &circuit.pairingRes.C1.B2.A1) - return nil -} - type ConstantCircuit struct { } diff --git a/std/recursion/groth16/native_doc_test.go b/std/recursion/groth16/native_doc_test.go index 75814eec74..c08e6e4b4b 100644 --- a/std/recursion/groth16/native_doc_test.go +++ b/std/recursion/groth16/native_doc_test.go @@ -21,7 +21,7 @@ func Example_native() { if err != nil { panic(err) } - circuitWitness, err := stdgroth16.ValueOfWitness[sw_bls12377.Scalar, sw_bls12377.G1Affine](innerWitness) + circuitWitness, err := stdgroth16.ValueOfWitness[sw_bls12377.ScalarField](innerWitness) if err != nil { panic(err) } @@ -30,7 +30,7 @@ func Example_native() { panic(err) } - outerAssignment := &OuterCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + outerAssignment := &OuterCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ InnerWitness: circuitWitness, Proof: circuitProof, VerifyingKey: circuitVk, @@ -40,8 +40,8 @@ func Example_native() { // compiled inner circuit to deduce the required size for the outer witness // using functions [stdgroth16.PlaceholderWitness] and // [stdgroth16.PlaceholderVerifyingKey] - outerCircuit := &OuterCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ - InnerWitness: stdgroth16.PlaceholderWitness[sw_bls12377.Scalar](innerCcs), + outerCircuit := &OuterCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + InnerWitness: stdgroth16.PlaceholderWitness[sw_bls12377.ScalarField](innerCcs), VerifyingKey: stdgroth16.PlaceholderVerifyingKey[sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT](innerCcs), } diff --git a/std/recursion/groth16/nonnative_doc_test.go b/std/recursion/groth16/nonnative_doc_test.go index 19cb2f15d3..e7fac6cf5d 100644 --- a/std/recursion/groth16/nonnative_doc_test.go +++ b/std/recursion/groth16/nonnative_doc_test.go @@ -12,6 +12,7 @@ import ( "github.com/consensys/gnark/frontend/cs/r1cs" "github.com/consensys/gnark/std/algebra" "github.com/consensys/gnark/std/algebra/emulated/sw_bn254" + "github.com/consensys/gnark/std/math/emulated" stdgroth16 "github.com/consensys/gnark/std/recursion/groth16" ) @@ -74,14 +75,14 @@ func computeInnerProof(field *big.Int) (constraint.ConstraintSystem, groth16.Ver // OuterCircuit is the generic outer circuit which can verify Groth16 proofs // using field emulation or 2-chains of curves. -type OuterCircuit[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { +type OuterCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { Proof stdgroth16.Proof[G1El, G2El] VerifyingKey stdgroth16.VerifyingKey[G1El, G2El, GtEl] - InnerWitness stdgroth16.Witness[S] + InnerWitness stdgroth16.Witness[FR] } -func (c *OuterCircuit[S, G1El, G2El, GtEl]) Define(api frontend.API) error { - curve, err := algebra.GetCurve[S, G1El](api) +func (c *OuterCircuit[FR, G1El, G2El, GtEl]) Define(api frontend.API) error { + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("new curve: %w", err) } @@ -104,7 +105,7 @@ func Example_emulated() { if err != nil { panic(err) } - circuitWitness, err := stdgroth16.ValueOfWitness[sw_bn254.Scalar, sw_bn254.G1Affine](innerWitness) + circuitWitness, err := stdgroth16.ValueOfWitness[sw_bn254.ScalarField](innerWitness) if err != nil { panic(err) } @@ -113,7 +114,7 @@ func Example_emulated() { panic(err) } - outerAssignment := &OuterCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + outerAssignment := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ InnerWitness: circuitWitness, Proof: circuitProof, VerifyingKey: circuitVk, @@ -123,8 +124,8 @@ func Example_emulated() { // compiled inner circuit to deduce the required size for the outer witness // using functions [stdgroth16.PlaceholderWitness] and // [stdgroth16.PlaceholderVerifyingKey] - outerCircuit := &OuterCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ - InnerWitness: stdgroth16.PlaceholderWitness[sw_bn254.Scalar](innerCcs), + outerCircuit := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + InnerWitness: stdgroth16.PlaceholderWitness[sw_bn254.ScalarField](innerCcs), VerifyingKey: stdgroth16.PlaceholderVerifyingKey[sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl](innerCcs), } diff --git a/std/recursion/groth16/verifier.go b/std/recursion/groth16/verifier.go index dbf7e51e40..9a8f33cea1 100644 --- a/std/recursion/groth16/verifier.go +++ b/std/recursion/groth16/verifier.go @@ -194,18 +194,18 @@ func ValueOfVerifyingKey[G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl // Witness is a public witness to verify the SNARK proof against. For assigning // witness use [ValueOfWitness] and to create stub witness for compiling use // [PlaceholderWitness]. -type Witness[S algebra.ScalarT] struct { +type Witness[FR emulated.FieldParams] struct { // Public is the public inputs. The first element does not need to be one // wire and is added implicitly during verification. - Public []S + Public []emulated.Element[FR] } // PlaceholderWitness creates a stub witness which can be used to allocate the // variables in the circuit if the actual witness is not yet known. It takes // into account the number of public inputs and number of used commitments. -func PlaceholderWitness[S algebra.ScalarT](ccs constraint.ConstraintSystem) Witness[S] { - return Witness[S]{ - Public: make([]S, ccs.GetNbPublicVariables()-1), +func PlaceholderWitness[FR emulated.FieldParams](ccs constraint.ConstraintSystem) Witness[FR] { + return Witness[FR]{ + Public: make([]emulated.Element[FR], ccs.GetNbPublicVariables()-1), } } @@ -213,66 +213,63 @@ func PlaceholderWitness[S algebra.ScalarT](ccs constraint.ConstraintSystem) Witn // witness. If there is a field mismatch then this method represents the witness // inputs using field emulation. It returns an error if there is a mismatch // between the type parameters and provided witness. -func ValueOfWitness[S algebra.ScalarT, G1 algebra.G1ElementT](w witness.Witness) (Witness[S], error) { - type dbwtiness[S algebra.ScalarT, G1 algebra.G1ElementT] struct { - W Witness[S] - } - var ret dbwtiness[S, G1] +func ValueOfWitness[FR emulated.FieldParams](w witness.Witness) (Witness[FR], error) { + var ret Witness[FR] pubw, err := w.Public() if err != nil { - return ret.W, fmt.Errorf("get public witness: %w", err) + return ret, fmt.Errorf("get public witness: %w", err) } vec := pubw.Vector() switch s := any(&ret).(type) { - case *dbwtiness[emulated.Element[emparams.BN254Fr], sw_bn254.G1Affine]: + case *Witness[sw_bn254.ScalarField]: vect, ok := vec.(fr_bn254.Vector) if !ok { - return ret.W, fmt.Errorf("expected fr_bn254.Vector, got %T", vec) + return ret, fmt.Errorf("expected fr_bn254.Vector, got %T", vec) } for i := range vect { - s.W.Public = append(s.W.Public, emulated.ValueOf[emparams.BN254Fr](vect[i])) + s.Public = append(s.Public, emulated.ValueOf[emparams.BN254Fr](vect[i])) } - case *dbwtiness[sw_bls12377.Scalar, sw_bls12377.G1Affine]: + case *Witness[sw_bls12377.ScalarField]: vect, ok := vec.(fr_bls12377.Vector) if !ok { - return ret.W, fmt.Errorf("expected fr_bls12377.Vector, got %T", vec) + return ret, fmt.Errorf("expected fr_bls12377.Vector, got %T", vec) } for i := range vect { - s.W.Public = append(s.W.Public, vect[i].String()) + s.Public = append(s.Public, sw_bls12377.NewScalar(vect[i])) } - case *dbwtiness[emulated.Element[emparams.BLS12381Fr], sw_bls12381.G1Affine]: + case *Witness[sw_bls12381.ScalarField]: vect, ok := vec.(fr_bls12381.Vector) if !ok { - return ret.W, fmt.Errorf("expected fr_bls12381.Vector, got %T", vec) + return ret, fmt.Errorf("expected fr_bls12381.Vector, got %T", vec) } for i := range vect { - s.W.Public = append(s.W.Public, emulated.ValueOf[emparams.BLS12381Fr](vect[i])) + s.Public = append(s.Public, emulated.ValueOf[emparams.BLS12381Fr](vect[i])) } - case *dbwtiness[sw_bls24315.Scalar, sw_bls24315.G1Affine]: + case *Witness[sw_bls24315.ScalarField]: vect, ok := vec.(fr_bls24315.Vector) if !ok { - return ret.W, fmt.Errorf("expected fr_bls24315.Vector, got %T", vec) + return ret, fmt.Errorf("expected fr_bls24315.Vector, got %T", vec) } for i := range vect { - s.W.Public = append(s.W.Public, vect[i].String()) + s.Public = append(s.Public, sw_bls24315.NewScalar(vect[i])) } default: - return ret.W, fmt.Errorf("unknown parametric type combination") + return ret, fmt.Errorf("unknown parametric type combination") } - return ret.W, nil + return ret, nil } // Verifier verifies Groth16 proofs. -type Verifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { - curve algebra.Curve[S, G1El] +type Verifier[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { + curve algebra.Curve[FR, G1El] pairing algebra.Pairing[G1El, G2El, GtEl] } // NewVerifier returns a new [Verifier] instance using the curve and pairing // interfaces. Use methods [algebra.GetCurve] and [algebra.GetPairing] to // initialize the instances. -func NewVerifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT](curve algebra.Curve[S, G1El], pairing algebra.Pairing[G1El, G2El, GtEl]) *Verifier[S, G1El, G2El, GtEl] { - return &Verifier[S, G1El, G2El, GtEl]{ +func NewVerifier[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT](curve algebra.Curve[FR, G1El], pairing algebra.Pairing[G1El, G2El, GtEl]) *Verifier[FR, G1El, G2El, GtEl] { + return &Verifier[FR, G1El, G2El, GtEl]{ curve: curve, pairing: pairing, } @@ -280,12 +277,12 @@ func NewVerifier[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2Elem // AssertProof asserts that the SNARK proof holds for the given witness and // verifying key. -func (v *Verifier[S, G1El, G2El, GtEl]) AssertProof(vk VerifyingKey[G1El, G2El, GtEl], proof Proof[G1El, G2El], witness Witness[S]) error { +func (v *Verifier[FR, G1El, G2El, GtEl]) AssertProof(vk VerifyingKey[G1El, G2El, GtEl], proof Proof[G1El, G2El], witness Witness[FR]) error { inP := make([]*G1El, len(vk.G1.K)-1) // first is for the one wire, we add it manually after MSM for i := range inP { inP[i] = &vk.G1.K[i+1] } - inS := make([]*S, len(witness.Public)) + inS := make([]*emulated.Element[FR], len(witness.Public)) for i := range inS { inS[i] = &witness.Public[i] } diff --git a/std/recursion/groth16/verifier_test.go b/std/recursion/groth16/verifier_test.go index c04c90b67b..79d00e0d91 100644 --- a/std/recursion/groth16/verifier_test.go +++ b/std/recursion/groth16/verifier_test.go @@ -107,14 +107,14 @@ func getInner(assert *test.Assert, field *big.Int) (constraint.ConstraintSystem, return innerCcs, innerVK, innerPubWitness, innerProof } -type OuterCircuit[S algebra.ScalarT, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { +type OuterCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT, G2El algebra.G2ElementT, GtEl algebra.GtElementT] struct { Proof Proof[G1El, G2El] VerifyingKey VerifyingKey[G1El, G2El, GtEl] - InnerWitness Witness[S] + InnerWitness Witness[FR] } -func (c *OuterCircuit[S, G1El, G2El, GtEl]) Define(api frontend.API) error { - curve, err := algebra.GetCurve[S, G1El](api) +func (c *OuterCircuit[FR, G1El, G2El, GtEl]) Define(api frontend.API) error { + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("new curve: %w", err) } @@ -134,16 +134,16 @@ func TestBN254InBN254(t *testing.T) { // outer proof circuitVk, err := ValueOfVerifyingKey[sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl](innerVK) assert.NoError(err) - circuitWitness, err := ValueOfWitness[sw_bn254.Scalar, sw_bn254.G1Affine](innerWitness) + circuitWitness, err := ValueOfWitness[sw_bn254.ScalarField](innerWitness) assert.NoError(err) circuitProof, err := ValueOfProof[sw_bn254.G1Affine, sw_bn254.G2Affine](innerProof) assert.NoError(err) - outerCircuit := &OuterCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ - InnerWitness: PlaceholderWitness[sw_bn254.Scalar](innerCcs), + outerCircuit := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + InnerWitness: PlaceholderWitness[sw_bn254.ScalarField](innerCcs), VerifyingKey: PlaceholderVerifyingKey[sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl](innerCcs), } - outerAssignment := &OuterCircuit[sw_bn254.Scalar, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ + outerAssignment := &OuterCircuit[sw_bn254.ScalarField, sw_bn254.G1Affine, sw_bn254.G2Affine, sw_bn254.GTEl]{ InnerWitness: circuitWitness, Proof: circuitProof, VerifyingKey: circuitVk, @@ -158,16 +158,16 @@ func TestBLS12InBW6(t *testing.T) { // outer proof circuitVk, err := ValueOfVerifyingKey[sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT](innerVK) assert.NoError(err) - circuitWitness, err := ValueOfWitness[sw_bls12377.Scalar, sw_bls12377.G1Affine](innerWitness) + circuitWitness, err := ValueOfWitness[sw_bls12377.ScalarField](innerWitness) assert.NoError(err) circuitProof, err := ValueOfProof[sw_bls12377.G1Affine, sw_bls12377.G2Affine](innerProof) assert.NoError(err) - outerCircuit := &OuterCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ - InnerWitness: PlaceholderWitness[sw_bls12377.Scalar](innerCcs), + outerCircuit := &OuterCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + InnerWitness: PlaceholderWitness[sw_bls12377.ScalarField](innerCcs), VerifyingKey: PlaceholderVerifyingKey[sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT](innerCcs), } - outerAssignment := &OuterCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ + outerAssignment := &OuterCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine, sw_bls12377.G2Affine, sw_bls12377.GT]{ InnerWitness: circuitWitness, Proof: circuitProof, VerifyingKey: circuitVk, @@ -195,28 +195,28 @@ func TestValueOfWitness(t *testing.T) { assert.Run(func(assert *test.Assert) { w, err := frontend.NewWitness(&assignment, ecc.BN254.ScalarField()) assert.NoError(err) - ww, err := ValueOfWitness[sw_bn254.Scalar, sw_bn254.G1Affine](w) + ww, err := ValueOfWitness[sw_bn254.ScalarField](w) assert.NoError(err) _ = ww }, "bn254") assert.Run(func(assert *test.Assert) { w, err := frontend.NewWitness(&assignment, ecc.BLS12_377.ScalarField()) assert.NoError(err) - ww, err := ValueOfWitness[sw_bls12377.Scalar, sw_bls12377.G1Affine](w) + ww, err := ValueOfWitness[sw_bls12377.ScalarField](w) assert.NoError(err) _ = ww }, "bls12377") assert.Run(func(assert *test.Assert) { w, err := frontend.NewWitness(&assignment, ecc.BLS12_381.ScalarField()) assert.NoError(err) - ww, err := ValueOfWitness[sw_bls12381.Scalar, sw_bls12381.G1Affine](w) + ww, err := ValueOfWitness[sw_bls12381.ScalarField](w) assert.NoError(err) _ = ww }, "bls12381") assert.Run(func(assert *test.Assert) { w, err := frontend.NewWitness(&assignment, ecc.BLS24_315.ScalarField()) assert.NoError(err) - ww, err := ValueOfWitness[sw_bls24315.Scalar, sw_bls24315.G1Affine](w) + ww, err := ValueOfWitness[sw_bls24315.ScalarField](w) assert.NoError(err) _ = ww }, "bls24315") diff --git a/std/recursion/wrapped_hash_test.go b/std/recursion/wrapped_hash_test.go index 1370d66ec6..c863f2704c 100644 --- a/std/recursion/wrapped_hash_test.go +++ b/std/recursion/wrapped_hash_test.go @@ -11,16 +11,15 @@ import ( fr_bls12377 "github.com/consensys/gnark-crypto/ecc/bls12-377/fr" bls24315 "github.com/consensys/gnark-crypto/ecc/bls24-315" fr_bls24315 "github.com/consensys/gnark-crypto/ecc/bls24-315/fr" - "github.com/consensys/gnark-crypto/ecc/bn254" - fr_bn254 "github.com/consensys/gnark-crypto/ecc/bn254/fr" bw6761 "github.com/consensys/gnark-crypto/ecc/bw6-761" + fr_bw6761 "github.com/consensys/gnark-crypto/ecc/bw6-761/fr" cryptofs "github.com/consensys/gnark-crypto/fiat-shamir" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/std/algebra" - "github.com/consensys/gnark/std/algebra/emulated/sw_bn254" "github.com/consensys/gnark/std/algebra/emulated/sw_bw6761" "github.com/consensys/gnark/std/algebra/native/sw_bls12377" "github.com/consensys/gnark/std/algebra/native/sw_bls24315" + "github.com/consensys/gnark/std/math/emulated" "github.com/consensys/gnark/std/recursion" "github.com/consensys/gnark/test" ) @@ -91,19 +90,18 @@ func TestShortHash(t *testing.T) { } } -type hashMarshalG1Circuit[S algebra.ScalarT, G1El algebra.G1ElementT] struct { +type hashMarshalG1Circuit[FR emulated.FieldParams, G1El algebra.G1ElementT] struct { Point G1El Expected frontend.Variable - - target *big.Int } -func (c *hashMarshalG1Circuit[S, G1El]) Define(api frontend.API) error { - h, err := recursion.NewHash(api, c.target, true) +func (c *hashMarshalG1Circuit[FR, G1El]) Define(api frontend.API) error { + var fr FR + h, err := recursion.NewHash(api, fr.Modulus(), true) if err != nil { return fmt.Errorf("new hash: %w", err) } - curve, err := algebra.GetCurve[S, G1El](api) + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("get curve: %w", err) } @@ -118,8 +116,8 @@ func TestHashMarshalG1(t *testing.T) { assert := test.NewAssert(t) assert.Run(func(assert *test.Assert) { - var g bn254.G1Affine - var s fr_bn254.Element + var g bw6761.G1Affine + var s fr_bw6761.Element s.SetRandom() g.ScalarMultiplicationBase(s.BigInt(new(big.Int))) h, err := recursion.NewShort(ecc.BN254.ScalarField(), ecc.BW6_761.ScalarField()) @@ -127,13 +125,10 @@ func TestHashMarshalG1(t *testing.T) { marshalled := g.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalG1Circuit[sw_bn254.Scalar, sw_bn254.G1Affine]{ - target: ecc.BW6_761.ScalarField(), - } - assignment := &hashMarshalG1Circuit[sw_bn254.Scalar, sw_bn254.G1Affine]{ - Point: sw_bn254.NewG1Affine(g), + circuit := &hashMarshalG1Circuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{} + assignment := &hashMarshalG1Circuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{ + Point: sw_bw6761.NewG1Affine(g), Expected: hashed, - target: ecc.BW6_761.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BN254), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) @@ -147,13 +142,10 @@ func TestHashMarshalG1(t *testing.T) { marshalled := g.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalG1Circuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ - target: ecc.BLS12_377.ScalarField(), - } - assignment := &hashMarshalG1Circuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ + circuit := &hashMarshalG1Circuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{} + assignment := &hashMarshalG1Circuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{ Point: sw_bls12377.NewG1Affine(g), Expected: hashed, - target: ecc.BLS12_377.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BW6_761), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) @@ -167,31 +159,27 @@ func TestHashMarshalG1(t *testing.T) { marshalled := g.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalG1Circuit[sw_bls24315.Scalar, sw_bls24315.G1Affine]{ - target: ecc.BLS12_377.ScalarField(), - } - assignment := &hashMarshalG1Circuit[sw_bls24315.Scalar, sw_bls24315.G1Affine]{ + circuit := &hashMarshalG1Circuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine]{} + assignment := &hashMarshalG1Circuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine]{ Point: sw_bls24315.NewG1Affine(g), Expected: hashed, - target: ecc.BLS12_377.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BW6_633), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) } -type hashMarshalScalarCircuit[S algebra.ScalarT, G1El algebra.G1ElementT] struct { - Scalar S +type hashMarshalScalarCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT] struct { + Scalar emulated.Element[FR] Expected frontend.Variable - - target *big.Int } -func (c *hashMarshalScalarCircuit[S, G1El]) Define(api frontend.API) error { - h, err := recursion.NewHash(api, c.target, true) +func (c *hashMarshalScalarCircuit[FR, G1El]) Define(api frontend.API) error { + var fr FR + h, err := recursion.NewHash(api, fr.Modulus(), true) if err != nil { return fmt.Errorf("new hash: %w", err) } - curve, err := algebra.GetCurve[S, G1El](api) + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("get curve: %w", err) } @@ -206,20 +194,17 @@ func TestHashMarshalScalar(t *testing.T) { assert := test.NewAssert(t) assert.Run(func(assert *test.Assert) { - var s fr_bn254.Element + var s fr_bw6761.Element s.SetRandom() h, err := recursion.NewShort(ecc.BN254.ScalarField(), ecc.BW6_761.ScalarField()) assert.NoError(err) marshalled := s.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalScalarCircuit[sw_bn254.Scalar, sw_bn254.G1Affine]{ - target: ecc.BW6_761.ScalarField(), - } - assignment := &hashMarshalScalarCircuit[sw_bn254.Scalar, sw_bn254.G1Affine]{ - Scalar: sw_bn254.NewScalar(s), + circuit := &hashMarshalScalarCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{} + assignment := &hashMarshalScalarCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{ + Scalar: sw_bw6761.NewScalar(s), Expected: hashed, - target: ecc.BW6_761.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BN254), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) @@ -231,13 +216,10 @@ func TestHashMarshalScalar(t *testing.T) { marshalled := s.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalScalarCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ - target: ecc.BLS12_377.ScalarField(), - } - assignment := &hashMarshalScalarCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ - Scalar: s.String(), + circuit := &hashMarshalScalarCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{} + assignment := &hashMarshalScalarCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{ + Scalar: sw_bls12377.NewScalar(s), Expected: hashed, - target: ecc.BLS12_377.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BW6_761), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) @@ -249,32 +231,28 @@ func TestHashMarshalScalar(t *testing.T) { marshalled := s.Marshal() h.Write(marshalled) hashed := h.Sum(nil) - circuit := &hashMarshalScalarCircuit[sw_bls24315.Scalar, sw_bls24315.G1Affine]{ - target: ecc.BLS12_377.ScalarField(), - } - assignment := &hashMarshalScalarCircuit[sw_bls24315.Scalar, sw_bls24315.G1Affine]{ - Scalar: s.String(), + circuit := &hashMarshalScalarCircuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine]{} + assignment := &hashMarshalScalarCircuit[sw_bls24315.ScalarField, sw_bls24315.G1Affine]{ + Scalar: sw_bls24315.NewScalar(s), Expected: hashed, - target: ecc.BLS12_377.ScalarField(), } assert.CheckCircuit(circuit, test.WithCurves(ecc.BW6_633), test.WithValidAssignment(assignment), test.NoFuzzing(), test.NoSerializationChecks(), test.NoSolidityChecks()) }) } -type transcriptCircuit[S algebra.ScalarT, G1El algebra.G1ElementT] struct { +type transcriptCircuit[FR emulated.FieldParams, G1El algebra.G1ElementT] struct { Challenges [3]string Points [3][3]G1El Expected [3]frontend.Variable - - target *big.Int } -func (c *transcriptCircuit[S, G1El]) Define(api frontend.API) error { - fs, err := recursion.NewTranscript(api, c.target, c.Challenges[:]) +func (c *transcriptCircuit[FR, G1El]) Define(api frontend.API) error { + var fr FR + fs, err := recursion.NewTranscript(api, fr.Modulus(), c.Challenges[:]) if err != nil { return fmt.Errorf("new transcript: %w", err) } - curve, err := algebra.GetCurve[S, G1El](api) + curve, err := algebra.GetCurve[FR, G1El](api) if err != nil { return fmt.Errorf("get curve: %w", err) } @@ -321,15 +299,13 @@ func TestTranscriptMarsha(t *testing.T) { assert.NoError(err) expected[i] = res } - circuit := &transcriptCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ + circuit := &transcriptCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{ Challenges: challenges, - target: ecc.BLS12_377.ScalarField(), } - assignment := &transcriptCircuit[sw_bls12377.Scalar, sw_bls12377.G1Affine]{ + assignment := &transcriptCircuit[sw_bls12377.ScalarField, sw_bls12377.G1Affine]{ Challenges: challenges, Points: points, Expected: expected, - target: ecc.BLS12_377.ScalarField(), } assert.CheckCircuit(circuit, test.WithValidAssignment(assignment), test.WithCurves(ecc.BW6_761), test.NoFuzzing(), test.NoSerializationChecks()) }, "bw6_761") @@ -357,15 +333,13 @@ func TestTranscriptMarsha(t *testing.T) { assert.NoError(err) expected[i] = res } - circuit := &transcriptCircuit[sw_bw6761.Scalar, sw_bw6761.G1Affine]{ + circuit := &transcriptCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{ Challenges: challenges, - target: ecc.BW6_761.ScalarField(), } - assignment := &transcriptCircuit[sw_bw6761.Scalar, sw_bw6761.G1Affine]{ + assignment := &transcriptCircuit[sw_bw6761.ScalarField, sw_bw6761.G1Affine]{ Challenges: challenges, Points: points, Expected: expected, - target: ecc.BW6_761.ScalarField(), } assert.CheckCircuit(circuit, test.WithValidAssignment(assignment), test.WithCurves(ecc.BN254), test.NoFuzzing(), test.NoSerializationChecks()) }, "bn254")