// Copyright 2020 ConsenSys Software Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by consensys/gnark-crypto DO NOT EDIT // Package fr contains field arithmetic operations for modulus = 0x1cfb69...76e7e1. // // The API is similar to math/big (big.Int), but the operations are significantly faster (up to 20x for the modular multiplication on amd64, see also https://hackmd.io/@zkteam/modular_multiplication) // // The modulus is hardcoded in all the operations. // // Field elements are represented as an array, and assumed to be in Montgomery form in all methods: // // type Element [4]uint64 // // Example API signature // // // Mul z = x * y mod q // func (z *Element) Mul(x, y *Element) *Element // // and can be used like so: // // var a, b Element // a.SetUint64(2) // b.SetString("984896738") // a.Mul(a, b) // a.Sub(a, a) // .Add(a, b) // .Inv(a) // b.Exp(b, new(big.Int).SetUint64(42)) // // Modulus // // 0x1cfb69d4ca675f520cce760202687600ff8f87007419047174fd06b52876e7e1 // base 16 // 13108968793781547619861935127046491459309155893440570251786403306729687672801 // base 10 package fr