Non-native field arithmetic with TurboPlonk, Plookup, etc

We’re experimenting with different approaches to non-native field arithmetic using custom gates and plookup, and it would be great to hear from other teams, particularly Aztec, about their approaches, and the resulting cost of something like the scalar multiplication of a curve point with non-native field arithmetic. Thanks!

You’re welcome to look at this document which explains some of the rationale for our non native multiplication using CRT

1 Like

Perfect, thank you Ariel.

Hm, I’m a bit confused about the use of RNS in this context. Could you clarify what the moduli set is?

We’re using the simple approach where we range check a bit more than 2p bits, but this certainly sounds more efficient!

sorry that document had some things that were drafts/thoughts. Only read the first section for the explanation.
At a high level you use CRT with your native modulus together with a large power of two, so that their product covers the 2p range