goff

command module
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2020 License: Apache-2.0 Imports: 1 Imported by: 0

README

Fast finite field arithmetic in Golang

License Go Report Card

goff (go finite field) is a unix-like tool that generates fast field arithmetic in Go.

We introduced goff in this article: the project came from the need to have performant field operations in Go. For most moduli, goff outperforms math/big and optimized libraries written in C++ or Rust.

In particular, goff modular multiplication is blazingly fast. "Faster big-integer modular multiplication for most moduli" explains the algorithmic optimization we discovered and implemented, and presents some benchmarks.

Warning

goff has not been audited and is provided as-is, use at your own risk. In particular, goff makes no security guarantees such as constant time implementation or side-channel attack resistance.

goff generates code optimized for 64bits architectures

Getting started

Install goff
# dependencies
go get golang.org/x/tools/cmd/goimports

# goff
git clone https://github.com/consensys/goff.git
cd goff && make
Usage
$ goff

running goff version 0.1.0-alpha

Usage:
  goff [flags]

Flags:
  -b, --benches          set to true to generate montgomery multiplication (CIOS, FIPS, noCarry) benchmarks
  -e, --element string   name of the generated struct and file
  -h, --help             help for goff
  -m, --modulus string   field modulus (base 10)
  -o, --output string    destination path to create output files
  -p, --package string   package name in generated files
      --version          version for goff
goff -- a short example

Running

goff -m 21888242871...94645226208583 -o ./bn256/ -p bn256 -e Element

outputs three .go files in ./bn256/

  • element.go
  • element_test.go
  • arith.go

The generated type has an API that's similar with big.Int

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) // alternatively: a.MulAssign(b)

a.Sub(a, a)
 .Add(a, b)
 .Inv(a)
 
b.Exp(b, 42)
b.Neg(b)
Benchmarks
# for BN256 or BLS377
cd internal/example/bls377 # or cd internal/example/bn256

go test -c

./bls377.test -test.run=NONE -test.bench="." -test.count=10 -test.benchtime=1s -test.cpu=1 . | tee bls377.txt

benchstat bls377.txt 

For the modular multiplication with varying modulus size

cd benches/generated
./benchmark.sh
benchstat cios.txt
benchstat fips.txt
benchstat nocarry.txt

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us. Get in touch: zkteam@consensys.net

Versioning

We use SemVer for versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the Apache 2 License - see the LICENSE file for details

Documentation

Overview

Package goff (go finite field) is a unix-like tool that generates fast field arithmetic in Go.

Directories

Path Synopsis
generated
Package generated implements field arithmetics with field modulus q = 156844649131910726398766746272201855151 Code generated by goff DO NOT EDIT Element02 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2593354290362757941043045148206313036395627720047652211673 Code generated by goff DO NOT EDIT Element03 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 52068286795115451399219983130826905585508868087773948221737060012681594112383 Code generated by goff DO NOT EDIT Element04 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1051882114755502295300857442142668011025632611584520605510253318454932719511590793458820670682219 Code generated by goff DO NOT EDIT Element05 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 19112662055657007397980045511828712310416406697503871741756461756309932482986668967454389541705585960896424666636199 Code generated by goff DO NOT EDIT Element06 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 322682568289525361762046250237368232446223696123443138893952234340997414728466624440898096951488632464052441876554825788797264920515711 Code generated by goff DO NOT EDIT Element07 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 5357718211020170663674500656321001722787619941696644395910771781955509255863639240934104552269809914583854969177339692905937899426402110973507710217710303 Code generated by goff DO NOT EDIT Element08 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 103184574917104427901333969349794958333929702908907610310000668649441237878132450269633384409814565451349830727596073204454861419191038748430243571780797913131162618958407779 Code generated by goff DO NOT EDIT Element09 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2039229393813884047303486423312987637682798537214491700034026777786794475711914244584700492393185651527211844533841508171470809913067459831830534227508353167998778854705979031380987845695502747 Code generated by goff DO NOT EDIT Element10 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 41098951441307866298800100016573453189649475553413756263535379135552561307486465722065952228078649528101382189405174388529660004779988812335779092564254768938722972254899097616265429898053881243472609407781244749 Code generated by goff DO NOT EDIT Element11 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 651634509597060592379289903005803044784347612883915154061934710111613582472338221021541117261719905870915131702960938697024329897252647533155993600012101792436316464825017164484222826810062412288859862798133473858156931583275459521 Code generated by goff DO NOT EDIT Element12 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 10988186224350618853083996207325898975291060431334933409173043959990158689797054267894020642051826898269985710578820173373783381520044358562122881024060205959045496047716782023307192607268738324240450205422943117696709437335165648919749212766542582369 Code generated by goff DO NOT EDIT Element13 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 245507222027261385204045952596709538560314447600321713049979794461527226229706203029111910447763923743963049752112683691297803202205717666467146176907027148310911157016611379160892891178347763282284356183842212354815623294574376653510459448635756317030969846316377632849 Code generated by goff DO NOT EDIT Element14 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 3872914718433393162085849597603758070295997426187295035514062195484610654483316678741320358350706522999336927928400146794698851880317350419124905346531900819752994642161084629551966651936475502028533595439043414084939445041292405963352263075019676551393362216714908196333285798412331522269 Code generated by goff DO NOT EDIT Element15 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 77254469889714249818620713044763942976056727057318051229384853936394688264457083277244983142088107116678581626046159181153583062592574256050078080040003597086904252223658130829337169094004980136366985712675572593184720779189296369914285214238709431795484747636709529735049673367515937661602526796018583943299 Code generated by goff DO NOT EDIT Element16 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1290160556431806021262646877503082425561748413892452721244561474964541248040918618670723812873002782741235092576037463780033304151200683487588253412881242930222697560256519810832763280596413458408487614355944015104653304069745775655072244839071339096958417467747365526444227524244961298535274100848558873528124796308463035735919 Code generated by goff DO NOT EDIT Element17 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 24554982563710590325080599105608488612140570635023643494586700409229586797790958766413462734389099326283290977058980436579654225364657259498079300765899090448270678451132577123700239339378579124888215782620977132319455251051210469767041026857477379029394520589916902120674139230662704402616493164752714941928285746278559720469228268884803454915313 Code generated by goff DO NOT EDIT Element18 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 427550551333333752052363103750545211066486812511118159595776839431461107715938231246524568473609418129039122413133992153660960111428817547790678437442879698625399143957478033534220037291891207177429288271857883194766866869075841259275703017231594211606040892573326297309445684727847161607655739348801631912853211704289410619470024623839641540830725185974292242562579 Code generated by goff DO NOT EDIT Element19 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 10071364949105301195928415407674212540925364010765015758553342861945867588992142722204271558703494876435650444552560597941855992248444275068396996553705871100011791834367786593129749538667744653607703011903117106847210779932610727974901222593711228155387835126867005738917706292519462738036884968777340437069865602312104260935374824819017588800325409134626940418069244958077691624490509 Code generated by goff DO NOT EDIT Element20 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 187376193133827301548874114538223450196739324331982888165630023108634693268881260881167274211870407190958979534209479639322816786015308458996186477577538266218414778867691635848394968773065151084655148801123473560281608963358773687828675364475089216969824778067182057315460108090168537864443505547257961697209063938990965478140013440618210731926981790207701395130445974820668853048153239387319718979337933 Code generated by goff DO NOT EDIT Element21 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 3037330456244650071123987043667847420146411736388000779634090601614565842279595908734871454378773981201232245484853677079704691953368192852818751786616384515423315179720570038984285529376148637839824357125262237277745210483534485765649843905644441288162418547234025002371864756425505136227020314279036779759384803816533754674471634223402851270620337648891345938007484251151854155656954411702168567514852565926094948392527921 Code generated by goff DO NOT EDIT Element22 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 55976462361061239617300043275175963021493194087675031586894593362752876841413240080836815146798402081219231928644753312664857228996252505379829179034215317496019040735945457349282010276534436400870556014657918330700819182661846311491907156827125485789702799450096542232905832349835885346799500516060165442324154978474674881558706678511606806237454988512525615663500137488610231002033552703681128875425614450397024179758248685524055043734913477 Code generated by goff DO NOT EDIT Element23 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1055318725250969330847147755517875110297518053561106269031535047042709222999761237157209339009067736368656028571073774367646039161677827267655437065555930814156202785915980411069731165480324081470822578044933464755585092959472006088024335128679318661501966042003094239105426049585769560401831391321606055179840085227477406040945319579575296255784706349429290451501762094488116369027862505020705165461232894376484574357687881497482023473061699365375453576718383991 Code generated by goff DO NOT EDIT Element24 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 19097292081986303898088726619838533937691911441467494997222168174722695900106629452225289094316518852803104230923487895576612744299320238486046974331473672403837035172782420543458996277597147362864935352817040975658596516065021143295290423503124547532954958585425919910926541459477027120432289855370153053372732978204968468319067996977466239682966917920860112198114396610017632427459987148800341563484735512443763091404141264145600734858152555545375374695628292121833957042300382427 Code generated by goff DO NOT EDIT Element25 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 375071087380231792590904019302577867051489271869564596572951492729913660834037920943860433084338821239263948253858792835485280328729234233211256164774234215587719080248603573361583084269827916461193194957138266654865860977113122094124801495011100236264631061441197686377957678909710717156580011187755277501851987772859085889525393537982292151123620225393642952304610885169263949262116673233236057837735580805812276180681002867650431064242283079136967037269903681915850410743209898025022012401215955459 Code generated by goff DO NOT EDIT Element26 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 7253806502325954717005682152715708575345647472974655519466973870597099616817875004246721178838808132119826885062058187099308834394385456126724028295056729841277544521351741219596569057723450039315582876441870228356324217704154545068662105192678173620465269628536794843798850934652902265944901692717778392165777938108540423450860260330270923977820557466332875434039405036689526299957623276894613448559257833692851355096516239577069879076256494273495464095333801677780177308514022959757000418284635518246132268350872841793 Code generated by goff DO NOT EDIT Element27 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 124482784186681015810431176085043837130614602673409315067750086423197343553857716658205145440400024536217689204516630988077887974651272256967217783174799929113982346564980057706937014628292519192482992554404594789754170827829789451015032303201273363486196236484622412832968194379829340445930681730203272462683673584093319046642068281918923186707621876527658634265309073069623016717205227411018170304346842678455778252644449830380486622076183413054831777438659813802312503083732121529735343380604855579162168131914435137419742366066747572381 Code generated by goff DO NOT EDIT Element28 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2010558822009626157053787481998572483581625031929135794869542175320515727338100624448833119961418915946982632756962472747218305825096468922299847213920982998214330031387467747130669704770787482727385610480922362227315234799711402364527803802905673000694240879670641971787307516175579634066572107088664224709967843022189697283904015574832749444235358590994515119630456015955671120890690738596207360485947706809574980804232497887780568788491647801944838726182162095246416117284284488310087918519494908606008630845038433666346995537359752999032206392142697528911 Code generated by goff DO NOT EDIT Element29 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 36826995324868401636319344553863002745039297468880737121236790916205838531426310347147424459853960542838016230399951437267901506074958123759745226433817832056121913697085713946805308998456299221224537851087656600963280392628114496479793680140808968643124051828580987448567957028536889724017772878761108768963761348770048418218719978107195191955010078437892418878381086729344468657212315638820008539329294947016624388345278871959229368588128516419023807125872317543475148827232783756120350939754000761371502994347605917756959619132698066063488845268671315530258265551189442189561 Code generated by goff DO NOT EDIT Element30 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 812065431115260728528707744135316077511066122350216930141655282963716359548365065760908654017988358771164191142382102054247377486302318238665140317358530499845222947115767487347600590008242448694640560059502126463411360835024555828351390325273675953095207876676050132691493171867957449452324101864131556437206069085558328345150856380385688089118113852485603647302345907619059527993956858430929644870151006354912510690897143339794143596749663625845163568636706283678935724570594754546672231886862524911168083827383779126340030586467750011107526588992443252078019546720584964752008745006157014355849 Code generated by goff DO NOT EDIT Element31 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 15218473436313521477990075766855328079192483614735859457813989957470155650080369001038899425646855087977982691583681622428818708216858339610858334749149632964424251770069387863632299020227656567567486924164884927180051475284558484237507847502589505068366264813296019694483105813377143146652251204779714630787188061539771941542473085233457365657412531501001142025289683117984412982014121858883804619459743307161590847666286891642870634824440847901183095898120421286771650392098215169163824836879682940950960206491955654003029584160351263452436470098159614666135949714816123275325941708010918057272744654556580278121299 Code generated by goff DO NOT EDIT Element32 are assumed to be in Montgomery form in all methods
Package generated implements field arithmetics with field modulus q = 156844649131910726398766746272201855151 Code generated by goff DO NOT EDIT Element02 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2593354290362757941043045148206313036395627720047652211673 Code generated by goff DO NOT EDIT Element03 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 52068286795115451399219983130826905585508868087773948221737060012681594112383 Code generated by goff DO NOT EDIT Element04 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1051882114755502295300857442142668011025632611584520605510253318454932719511590793458820670682219 Code generated by goff DO NOT EDIT Element05 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 19112662055657007397980045511828712310416406697503871741756461756309932482986668967454389541705585960896424666636199 Code generated by goff DO NOT EDIT Element06 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 322682568289525361762046250237368232446223696123443138893952234340997414728466624440898096951488632464052441876554825788797264920515711 Code generated by goff DO NOT EDIT Element07 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 5357718211020170663674500656321001722787619941696644395910771781955509255863639240934104552269809914583854969177339692905937899426402110973507710217710303 Code generated by goff DO NOT EDIT Element08 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 103184574917104427901333969349794958333929702908907610310000668649441237878132450269633384409814565451349830727596073204454861419191038748430243571780797913131162618958407779 Code generated by goff DO NOT EDIT Element09 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2039229393813884047303486423312987637682798537214491700034026777786794475711914244584700492393185651527211844533841508171470809913067459831830534227508353167998778854705979031380987845695502747 Code generated by goff DO NOT EDIT Element10 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 41098951441307866298800100016573453189649475553413756263535379135552561307486465722065952228078649528101382189405174388529660004779988812335779092564254768938722972254899097616265429898053881243472609407781244749 Code generated by goff DO NOT EDIT Element11 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 651634509597060592379289903005803044784347612883915154061934710111613582472338221021541117261719905870915131702960938697024329897252647533155993600012101792436316464825017164484222826810062412288859862798133473858156931583275459521 Code generated by goff DO NOT EDIT Element12 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 10988186224350618853083996207325898975291060431334933409173043959990158689797054267894020642051826898269985710578820173373783381520044358562122881024060205959045496047716782023307192607268738324240450205422943117696709437335165648919749212766542582369 Code generated by goff DO NOT EDIT Element13 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 245507222027261385204045952596709538560314447600321713049979794461527226229706203029111910447763923743963049752112683691297803202205717666467146176907027148310911157016611379160892891178347763282284356183842212354815623294574376653510459448635756317030969846316377632849 Code generated by goff DO NOT EDIT Element14 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 3872914718433393162085849597603758070295997426187295035514062195484610654483316678741320358350706522999336927928400146794698851880317350419124905346531900819752994642161084629551966651936475502028533595439043414084939445041292405963352263075019676551393362216714908196333285798412331522269 Code generated by goff DO NOT EDIT Element15 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 77254469889714249818620713044763942976056727057318051229384853936394688264457083277244983142088107116678581626046159181153583062592574256050078080040003597086904252223658130829337169094004980136366985712675572593184720779189296369914285214238709431795484747636709529735049673367515937661602526796018583943299 Code generated by goff DO NOT EDIT Element16 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1290160556431806021262646877503082425561748413892452721244561474964541248040918618670723812873002782741235092576037463780033304151200683487588253412881242930222697560256519810832763280596413458408487614355944015104653304069745775655072244839071339096958417467747365526444227524244961298535274100848558873528124796308463035735919 Code generated by goff DO NOT EDIT Element17 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 24554982563710590325080599105608488612140570635023643494586700409229586797790958766413462734389099326283290977058980436579654225364657259498079300765899090448270678451132577123700239339378579124888215782620977132319455251051210469767041026857477379029394520589916902120674139230662704402616493164752714941928285746278559720469228268884803454915313 Code generated by goff DO NOT EDIT Element18 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 427550551333333752052363103750545211066486812511118159595776839431461107715938231246524568473609418129039122413133992153660960111428817547790678437442879698625399143957478033534220037291891207177429288271857883194766866869075841259275703017231594211606040892573326297309445684727847161607655739348801631912853211704289410619470024623839641540830725185974292242562579 Code generated by goff DO NOT EDIT Element19 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 10071364949105301195928415407674212540925364010765015758553342861945867588992142722204271558703494876435650444552560597941855992248444275068396996553705871100011791834367786593129749538667744653607703011903117106847210779932610727974901222593711228155387835126867005738917706292519462738036884968777340437069865602312104260935374824819017588800325409134626940418069244958077691624490509 Code generated by goff DO NOT EDIT Element20 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 187376193133827301548874114538223450196739324331982888165630023108634693268881260881167274211870407190958979534209479639322816786015308458996186477577538266218414778867691635848394968773065151084655148801123473560281608963358773687828675364475089216969824778067182057315460108090168537864443505547257961697209063938990965478140013440618210731926981790207701395130445974820668853048153239387319718979337933 Code generated by goff DO NOT EDIT Element21 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 3037330456244650071123987043667847420146411736388000779634090601614565842279595908734871454378773981201232245484853677079704691953368192852818751786616384515423315179720570038984285529376148637839824357125262237277745210483534485765649843905644441288162418547234025002371864756425505136227020314279036779759384803816533754674471634223402851270620337648891345938007484251151854155656954411702168567514852565926094948392527921 Code generated by goff DO NOT EDIT Element22 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 55976462361061239617300043275175963021493194087675031586894593362752876841413240080836815146798402081219231928644753312664857228996252505379829179034215317496019040735945457349282010276534436400870556014657918330700819182661846311491907156827125485789702799450096542232905832349835885346799500516060165442324154978474674881558706678511606806237454988512525615663500137488610231002033552703681128875425614450397024179758248685524055043734913477 Code generated by goff DO NOT EDIT Element23 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 1055318725250969330847147755517875110297518053561106269031535047042709222999761237157209339009067736368656028571073774367646039161677827267655437065555930814156202785915980411069731165480324081470822578044933464755585092959472006088024335128679318661501966042003094239105426049585769560401831391321606055179840085227477406040945319579575296255784706349429290451501762094488116369027862505020705165461232894376484574357687881497482023473061699365375453576718383991 Code generated by goff DO NOT EDIT Element24 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 19097292081986303898088726619838533937691911441467494997222168174722695900106629452225289094316518852803104230923487895576612744299320238486046974331473672403837035172782420543458996277597147362864935352817040975658596516065021143295290423503124547532954958585425919910926541459477027120432289855370153053372732978204968468319067996977466239682966917920860112198114396610017632427459987148800341563484735512443763091404141264145600734858152555545375374695628292121833957042300382427 Code generated by goff DO NOT EDIT Element25 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 375071087380231792590904019302577867051489271869564596572951492729913660834037920943860433084338821239263948253858792835485280328729234233211256164774234215587719080248603573361583084269827916461193194957138266654865860977113122094124801495011100236264631061441197686377957678909710717156580011187755277501851987772859085889525393537982292151123620225393642952304610885169263949262116673233236057837735580805812276180681002867650431064242283079136967037269903681915850410743209898025022012401215955459 Code generated by goff DO NOT EDIT Element26 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 7253806502325954717005682152715708575345647472974655519466973870597099616817875004246721178838808132119826885062058187099308834394385456126724028295056729841277544521351741219596569057723450039315582876441870228356324217704154545068662105192678173620465269628536794843798850934652902265944901692717778392165777938108540423450860260330270923977820557466332875434039405036689526299957623276894613448559257833692851355096516239577069879076256494273495464095333801677780177308514022959757000418284635518246132268350872841793 Code generated by goff DO NOT EDIT Element27 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 124482784186681015810431176085043837130614602673409315067750086423197343553857716658205145440400024536217689204516630988077887974651272256967217783174799929113982346564980057706937014628292519192482992554404594789754170827829789451015032303201273363486196236484622412832968194379829340445930681730203272462683673584093319046642068281918923186707621876527658634265309073069623016717205227411018170304346842678455778252644449830380486622076183413054831777438659813802312503083732121529735343380604855579162168131914435137419742366066747572381 Code generated by goff DO NOT EDIT Element28 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 2010558822009626157053787481998572483581625031929135794869542175320515727338100624448833119961418915946982632756962472747218305825096468922299847213920982998214330031387467747130669704770787482727385610480922362227315234799711402364527803802905673000694240879670641971787307516175579634066572107088664224709967843022189697283904015574832749444235358590994515119630456015955671120890690738596207360485947706809574980804232497887780568788491647801944838726182162095246416117284284488310087918519494908606008630845038433666346995537359752999032206392142697528911 Code generated by goff DO NOT EDIT Element29 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 36826995324868401636319344553863002745039297468880737121236790916205838531426310347147424459853960542838016230399951437267901506074958123759745226433817832056121913697085713946805308998456299221224537851087656600963280392628114496479793680140808968643124051828580987448567957028536889724017772878761108768963761348770048418218719978107195191955010078437892418878381086729344468657212315638820008539329294947016624388345278871959229368588128516419023807125872317543475148827232783756120350939754000761371502994347605917756959619132698066063488845268671315530258265551189442189561 Code generated by goff DO NOT EDIT Element30 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 812065431115260728528707744135316077511066122350216930141655282963716359548365065760908654017988358771164191142382102054247377486302318238665140317358530499845222947115767487347600590008242448694640560059502126463411360835024555828351390325273675953095207876676050132691493171867957449452324101864131556437206069085558328345150856380385688089118113852485603647302345907619059527993956858430929644870151006354912510690897143339794143596749663625845163568636706283678935724570594754546672231886862524911168083827383779126340030586467750011107526588992443252078019546720584964752008745006157014355849 Code generated by goff DO NOT EDIT Element31 are assumed to be in Montgomery form in all methods Package generated implements field arithmetics with field modulus q = 15218473436313521477990075766855328079192483614735859457813989957470155650080369001038899425646855087977982691583681622428818708216858339610858334749149632964424251770069387863632299020227656567567486924164884927180051475284558484237507847502589505068366264813296019694483105813377143146652251204779714630787188061539771941542473085233457365657412531501001142025289683117984412982014121858883804619459743307161590847666286891642870634824440847901183095898120421286771650392098215169163824836879682940950960206491955654003029584160351263452436470098159614666135949714816123275325941708010918057272744654556580278121299 Code generated by goff DO NOT EDIT Element32 are assumed to be in Montgomery form in all methods
cmd
internal
example/bls377
Package bls377 (generated by goff) contains field arithmetics operations
Package bls377 (generated by goff) contains field arithmetics operations
example/bn256
Package bn256 (generated by goff) contains field arithmetics operations
Package bn256 (generated by goff) contains field arithmetics operations

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL