This commit is contained in:
Dmitry Vagner 2023-02-07 08:53:23 -08:00
parent 1c73e23824
commit 9f808fc78c

View File

@ -44,95 +44,95 @@
/// f, f', g, g' consist of six elements on the stack
global mul_fp254_12:
// stack: inA, inB, out
// stack: inA, inB, out
DUP1
%offset_fp254_6
// stack: inA', inA, inB, out
// stack: inA', inA, inB, out
%load_fp254_6
// stack: f', inA, inB, out
// stack: f', inA, inB, out
DUP8
%offset_fp254_6
// stack: inB', f', inA, inB, out
// stack: inB', f', inA, inB, out
%load_fp254_6
// stack: g', f', inA, inB, out
// stack: g', f', inA, inB, out
PUSH mul_fp254_12_1
// stack: mul_fp254_12_1, g', f', inA, inB, out
// stack: mul_fp254_12_1, g', f', inA, inB, out
%dup_fp254_6_7
// stack: f', mul_fp254_12_1, g', f', inA, inB, out
// stack: f', mul_fp254_12_1, g', f', inA, inB, out
%dup_fp254_6_7
// stack: g', f', mul_fp254_12_1, g', f', inA, inB, out
// stack: g', f', mul_fp254_12_1, g', f', inA, inB, out
%jump(mul_fp254_6)
mul_fp254_12_1:
// stack: f'g', g' , f', inA, inB, out
// stack: f'g', g' , f', inA, inB, out
%dup_fp254_6_0
// stack: f'g', f'g', g' , f', inA, inB, out
// stack: f'g', f'g', g' , f', inA, inB, out
%store_fp254_6_sh(0)
// stack: f'g', g' , f', inA, inB, out {0: sh(f'g')}
// stack: f'g', g' , f', inA, inB, out {0: sh(f'g')}
%store_fp254_6(6)
// stack: g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
DUP13
// stack: inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
DUP15
// stack: inB, inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: inB, inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%load_fp254_6
// stack: g , inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g , inA, g' , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%swap_fp254_6_hole
// stack: g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%dup_fp254_6_7
// stack: g,g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g,g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%add_fp254_6
// stack: g+g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g+g', inA, g , f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%swap_fp254_6_hole
// stack: g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
PUSH mul_fp254_12_2
// stack: mul_fp254_12_2, g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: mul_fp254_12_2, g, inA, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
SWAP7
// stack: inA, g, mul_fp254_12_2, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: inA, g, mul_fp254_12_2, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%load_fp254_6
// stack: f, g, mul_fp254_12_2, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: f, g, mul_fp254_12_2, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%jump(mul_fp254_6)
mul_fp254_12_2:
// stack: fg, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
// stack: fg, g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g'}
%store_fp254_6(12)
// stack: g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: g+g', f', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%swap_fp254_6
// stack: f', g+g', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: f', g+g', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
PUSH mul_fp254_12_3
// stack: mul_fp254_12_3, f', g+g', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: mul_fp254_12_3, f', g+g', inA, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
SWAP13
// stack: inA, f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: inA, f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%load_fp254_6
// stack: f,f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: f,f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%add_fp254_6
// stack: f+f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: f+f', g+g', mul_fp254_12_3, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%jump(mul_fp254_6)
mul_fp254_12_3:
// stack: (f+f')(g+g'), inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: (f+f')(g+g'), inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%load_fp254_6(12)
// stack: fg, (f+f')(g+g'), inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: fg, (f+f')(g+g'), inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%swap_fp254_6
// stack: (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%dup_fp254_6_6
// stack: fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%load_fp254_6(6)
// stack: f'g',fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: f'g',fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%add_fp254_6
// stack: f'g'+fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: f'g'+fg, (f+f')(g+g'), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%subr_fp254_6
// stack: (f+f')(g+g') - (f'g'+fg), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: (f+f')(g+g') - (f'g'+fg), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
DUP14
%offset_fp254_6
// stack: out', (f+f')(g+g') - (f'g'+fg), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: out', (f+f')(g+g') - (f'g'+fg), fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%store_fp254_6
// stack: fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%load_fp254_6(0)
// stack: sh(f'g') , fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: sh(f'g') , fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%add_fp254_6
// stack: sh(f'g') + fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: sh(f'g') + fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
DUP8
// stack: out, sh(f'g') + fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: out, sh(f'g') + fg, inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%store_fp254_6
// stack: inB, out {0: sh(f'g'), 6: f'g', 12: fg}
// stack: inB, out {0: sh(f'g'), 6: f'g', 12: fg}
%pop2
JUMP
@ -321,22 +321,22 @@ global square_fp254_12_test:
POP
global square_fp254_12:
// stack: inp, out
// stack: inp, out
DUP1
// stack: inp, inp, out
// stack: inp, inp, out
%load_fp254_6
// stack: f, inp, out
// stack: f, inp, out
PUSH square_fp254_12_3
// stack: square_fp254_12_3, f, inp, out
// stack: square_fp254_12_3, f, inp, out
SWAP7
// stack: inp, f, square_fp254_12_3, out
// stack: inp, f, square_fp254_12_3, out
PUSH square_fp254_12_2
// stack: square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: square_fp254_12_2, inp, f, square_fp254_12_3, out
%dup_fp254_6_2
// stack: f , square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: f , square_fp254_12_2, inp, f, square_fp254_12_3, out
DUP16
%offset_fp254_6
// stack: out', f , square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: out', f , square_fp254_12_2, inp, f, square_fp254_12_3, out
PUSH square_fp254_12_1
// stack: square_fp254_12_1, out', f , square_fp254_12_2, inp, f, square_fp254_12_3, out
DUP10
@ -350,32 +350,32 @@ global square_fp254_12:
// stack: f', f , square_fp254_12_1, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
%jump(mul_fp254_6)
square_fp254_12_1:
// stack: f'f, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: f'f, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
DUP7
// stack: out', f'f, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: out', f'f, out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
%store_fp254_6_double
// stack: out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: out', f', square_fp254_12_2, inp, f, square_fp254_12_3, out
POP
// stack: f', square_fp254_12_2, inp, f, square_fp254_12_3, out
// stack: f', square_fp254_12_2, inp, f, square_fp254_12_3, out
%jump(square_fp254_6)
square_fp254_12_2:
// stack: f'f', inp, f, square_fp254_12_3, out
// stack: f'f', inp, f, square_fp254_12_3, out
%sh_fp254_6
// stack: sh(f'f'), inp, f, square_fp254_12_3, out
// stack: sh(f'f'), inp, f, square_fp254_12_3, out
%swap_fp254_6_hole
// stack: f, inp, sh(f'f'), square_fp254_12_3, out
// stack: f, inp, sh(f'f'), square_fp254_12_3, out
SWAP6
SWAP13
SWAP6
// stack: f, square_fp254_12_3, sh(f'f'), inp, out
// stack: f, square_fp254_12_3, sh(f'f'), inp, out
%jump(square_fp254_6)
square_fp254_12_3:
// stack: ff , sh(f'f'), inp, out
// stack: ff , sh(f'f'), inp, out
%add_fp254_6
// stack: ff + sh(f'f'), inp, out
// stack: ff + sh(f'f'), inp, out
DUP8
// stack: out, ff + sh(f'f'), inp, out
// stack: out, ff + sh(f'f'), inp, out
%store_fp254_6
// stack: inp, out
// stack: inp, out
%pop2
JUMP