1
0
Fork 0
mirror of synced 2025-09-24 04:40:05 +00:00

Update ir.md

This commit is contained in:
Thibaut Schaeffer 2019-02-01 11:44:44 +01:00 committed by GitHub
parent 00659fc60a
commit e0316c39e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -5,9 +5,11 @@ ZIR is the intermediate representation ZoKrates uses to represent programs. It i
**Note that ZIR is still in development and can change without notice.** **Note that ZIR is still in development and can change without notice.**
When generating R1CS constraints, very large numbers are often used, which can make reading ZIR hard for humans. When generating R1CS constraints, very large numbers are often used, which can make reading ZIR hard for humans.
To mitigate this, ZIR applies an isomorphism when displaying field elements: they are shown as members of the interval `[-(p-1)/2, (p-1)/2]`. To mitigate this, ZIR applies an isomorphism when displaying field elements: they are shown as members of the interval `[- (p - 1)/2, (p - 1)/2]`. In other words, the following mapping is used:
- elements in `[0, (p - 1)/2]` map to themselves
- elements in `[(p + 1)/2, p - 1]` map to themselves minus `p`
Therefore, instead of writing p - 1 as: Therefore, instead of writing `p - 1` as:
``` ```
21888242871839275222246405745257275088548364400416034343698204186575808495616 21888242871839275222246405745257275088548364400416034343698204186575808495616
``` ```