Curve.add_prog: def of bend-collections-laws-crypto@1.0.0.0 Import: import bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/curve.bend as Curve Lines 57-78 of bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/curve.bend: https://jend.leeeet.dev/read.txt?path=bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/curve.bend&start_line=57&end_line=78 import Base # RCB Algorithm 7 (a = 0). Registers: 0 X1, 1 Y1, 2 Z1, 3 X2, 4 Y2, 5 Z2, # 6 b3; the paper's lines, in order, write registers 7..39: # t0 = X1 X2 (7) t1 = Y1 Y2 (8) t2 = Z1 Z2 (9) # t3 = X1 + Y1 (10) t4 = X2 + Y2 (11) t3 = t3 t4 (12) # t4 = t0 + t1 (13) t3 = t3 - t4 (14) t4 = Y1 + Z1 (15) # X3 = Y2 + Z2 (16) t4 = t4 X3 (17) X3 = t1 + t2 (18) # t4 = t4 - X3 (19) X3 = X1 + Z1 (20) Y3 = X2 + Z2 (21) # X3 = X3 Y3 (22) Y3 = t0 + t2 (23) Y3 = X3 - Y3 (24) # X3 = t0 + t0 (25) t0 = X3 + t0 (26) t2 = b3 t2 (27) # Z3 = t1 + t2 (28) t1 = t1 - t2 (29) Y3 = b3 Y3 (30) # X3 = t4 Y3 (31) t2 = t3 t1 (32) X3 = t2 - X3 (33) # Y3 = Y3 t0 (34) t1 = t1 Z3 (35) Y3 = t1 + Y3 (36) # t0 = t0 t3 (37) Z3 = Z3 t4 (38) Z3 = Z3 + t0 (39) # and the result is (X3 : Y3 : Z3) = registers (33 : 36 : 39). def add_prog() -> List<&2, SOp>: [SMul{0n, 3n}, SMul{1n, 4n}, SMul{2n, 5n}, SAdd{0n, 1n}, SAdd{3n, 4n}, SMul{10n, 11n}, SAdd{7n, 8n}, SSub{12n, 13n}, SAdd{1n, 2n}, SAdd{4n, 5n}, SMul{15n, 16n}, SAdd{8n, 9n}, SSub{17n, 18n}, SAdd{0n, 2n}, SAdd{3n, 5n}, SMul{20n, 21n}, SAdd{7n, 9n}, SSub{22n, 23n}, SAdd{7n, 7n}, SAdd{25n, 7n}, SMul{6n, 9n}, SAdd{8n, 27n}, SSub{8n, 27n}, SMul{6n, 24n}, SMul{19n, 30n}, SMul{14n, 29n}, SSub{32n, 31n}, SMul{30n, 26n}, SMul{29n, 28n}, SAdd{35n, 34n}, SMul{26n, 14n}, SMul{28n, 19n}, SAdd{38n, 37n}] Uses (2): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=List https://jend.leeeet.dev/definition.txt?path=bend-collections-laws-crypto@1.0.0.0/spec/crypto/secp256k1/curve.bend&name=SOp