@@ -58,10 +58,9 @@ impl BasicSnippet for BarycentricEvaluation {
58
58
xb_mul
59
59
// _ *partial_terms_end_cond *partial_terms generator [-indeterminate] generator_acc [generator_acc/(generator_acc-indeterminate)]
60
60
61
- dup 8
61
+ pick 8
62
62
write_mem { EXTENSION_DEGREE }
63
- swap 6
64
- pop 1
63
+ place 5
65
64
// _ *partial_terms_end_cond *partial_terms' generator [-indeterminate] generator_acc
66
65
67
66
dup 4
@@ -76,19 +75,12 @@ impl BasicSnippet for BarycentricEvaluation {
76
75
let numerator_from_partial_sums_loop_label =
77
76
format ! ( "{entrypoint}_numerator_from_partial_sums" ) ;
78
77
let numerator_from_partial_sums_loop_code = triton_asm ! (
79
- // BEGIN: _ *ptec *partial_terms[0] [0] *codeword[0] *partial_terms [0]
80
- // INVARIANT: _ *ptec *partial_terms[n] [acc] *codeword[n] *partial_terms [n]
78
+ // BEGIN: _ *ptec *partial_terms[0] 0 [0] *codeword[0]
79
+ // INVARIANT: _ *ptec *partial_terms[n] 0 [acc] *codeword[n]
81
80
{ numerator_from_partial_sums_loop_label} :
82
- // _ *ptec *partial_terms[n] [acc] *codeword[n] *partial_terms[n]
83
-
81
+ pick 5
84
82
xx_dot_step
85
- // _ *ptec *partial_terms[n] [acc'] *codeword[n'] *partial_terms[n']
86
-
87
- dup 0
88
- swap 6
89
- pop 1
90
- // _ *ptec *partial_terms[n'] [acc'] *codeword[n'] *partial_terms[n']
91
-
83
+ place 5
92
84
recurse_or_return
93
85
) ;
94
86
@@ -101,12 +93,9 @@ impl BasicSnippet for BarycentricEvaluation {
101
93
{ denominator_from_partial_sums_loop_label} :
102
94
// _ (*partial_terms-1) *partial_terms[n] 0 0 [acc]
103
95
104
- dup 5
96
+ pick 5
105
97
read_mem { EXTENSION_DEGREE }
106
- // _ (*partial_terms-1) *partial_terms[n] 0 0 [acc] [term] *partial_terms[n-1]
107
-
108
- swap 9
109
- pop 1
98
+ place 8
110
99
// _ (*partial_terms-1) *partial_terms[n-1] 0 0 [acc] [term]
111
100
112
101
xx_add
@@ -148,28 +137,20 @@ impl BasicSnippet for BarycentricEvaluation {
148
137
hint generator: BFieldElement = stack[ 0 ]
149
138
// _ *codeword [-indeterminate] codeword_len generator
150
139
151
- swap 1
140
+ pick 1
152
141
// _ *codeword [-indeterminate] generator codeword_len
153
142
154
143
push { EXTENSION_DEGREE }
155
144
mul
156
145
push { partial_terms_alloc. write_address( ) }
157
146
add
158
- // _ *codeword [-indeterminate] generator (*partial_terms_last_word+1)
159
- // _ *codeword (-i2) (-i1) (-i0) generator (*partial_terms_last_word+1) <-- rename
160
-
161
- swap 4
162
- // _ *codeword (*partial_terms_last_word+1) (-i1) (-i0) generator (-i2)
147
+ // _ *codeword [-indeterminate] generator (*partial_terms_last_word+1)
163
148
149
+ place 4
150
+ place 3
164
151
push { partial_terms_alloc. write_address( ) }
165
- swap 4
166
- // _ *codeword (*partial_terms_last_word+1) *partial_terms[0] (-i0) generator (-i2) (-i1)
167
-
168
- swap 1
169
- swap 2
170
- swap 3
171
- // _ *codeword (*partial_terms_last_word+1) *partial_terms[0] generator (-i2) (-i1) (-i0)
172
- // _ *codeword (*partial_terms_last_word+1) *partial_terms[0] generator [-indeterminate] <-- rename
152
+ place 4
153
+ // _ *codeword (*partial_terms_last_word+1) *partial_terms[0] generator [-indeterminate]
173
154
174
155
push 1
175
156
// _ *codeword (*partial_terms_last_word+1) *partial_terms[0] generator [-indeterminate] generator_acc
@@ -181,70 +162,52 @@ impl BasicSnippet for BarycentricEvaluation {
181
162
pop 1
182
163
// _ *codeword (*partial_terms_last_word+1)
183
164
184
- swap 1
185
- // _ (*partial_terms_last_word+1) *codeword
186
-
187
- push 1
188
- add
189
- // _ (*partial_terms_last_word+1) *codeword[0]
190
-
191
- push 0
192
- push 0
193
- push 0
194
- // _ (*partial_terms_last_word+1) *codeword[0] [acc]
195
-
165
+ place 1
196
166
push { partial_terms_alloc. write_address( ) }
197
- swap 4
198
- // _ (*partial_terms_last_word+1) *partial_terms[0] [acc] *codeword[0]
167
+ push 0
168
+ push 0 push 0 push 0
169
+ // _ (*partial_terms_last_word+1) *codeword *partial_terms[0] 0 [acc]
199
170
200
- push { partial_terms_alloc. write_address( ) }
201
- // _ (*partial_terms_last_word+1) *partial_terms[0] [acc] *codeword[0] *partial_terms[0]
171
+ pick 5
172
+ addi 1
173
+ // _ (*partial_terms_last_word+1) *partial_terms[0] 0 [acc] *codeword[0]
202
174
203
175
call { numerator_from_partial_sums_loop_label}
204
- // _ (*partial_terms_last_word+1) (*partial_terms_last_word+1) [numerator] *codeword[last + 1] (*partial_terms_last_word+1)
176
+ // _ (*partial_terms_last_word+1) (*partial_terms_last_word+1) 0 [numerator] *codeword[last + 1]
205
177
178
+ pick 4
206
179
pop 2
207
180
// _ (*partial_terms_last_word+1) (*partial_terms_last_word+1) [numerator]
208
181
hint numerator: XFieldElement = stack[ 0 ..3 ]
209
182
210
- // _ (*partial_terms_last_word+1) (*partial_terms_last_word+1) n2 n1 n0 <-- rename
211
-
212
-
213
- swap 2
214
- swap 4
215
- // _ n2 (*partial_terms_last_word+1) n0 n1 (*partial_terms_last_word+1)
216
-
217
- push -1
218
- add
219
- // _ n2 (*partial_terms_last_word+1) n0 n1 *partial_terms_last_word
220
-
221
- push { partial_terms_alloc. write_address( ) - bfe!( 1 ) }
222
- // _ n2 (*partial_terms_last_word+1) n0 n1 *partial_terms_last_word (*partial_terms - 1)
223
-
224
- swap 2
225
- swap 4
183
+ place 4
184
+ place 4
185
+ place 4
226
186
pop 1
227
- // _ n2 n1 n0 (*partial_terms - 1) *partial_terms_last_word
228
- // _ [numerator] (*partial_terms - 1) * partial_terms_last_word <-- rename
187
+ addi - 1
188
+ // _ [numerator] * partial_terms_last_word
229
189
230
190
push 0
231
191
push 0
232
192
push 0
233
193
push 0
234
194
push 0
195
+ // _ [numerator] *partial_terms_last_word 0 0 [0]
196
+
197
+ push { partial_terms_alloc. write_address( ) - bfe!( 1 ) }
198
+ hint loop_end_condition = stack[ 0 ]
199
+ place 6
235
200
// _ [numerator] (*partial_terms - 1) *partial_terms_last_word 0 0 [0]
236
201
237
202
call { denominator_from_partial_sums_loop_label}
203
+ hint denominator: XFieldElement = stack[ 0 ..2 ]
238
204
// _ [numerator] (*partial_terms - 1) *partial_terms_last_word 0 0 [denominator]
239
205
240
- swap 4
241
- pop 1
242
- swap 4
243
- pop 1
244
- swap 4
245
- pop 2
206
+ place 6
207
+ place 6
208
+ place 6
209
+ pop 4
246
210
// _ [numerator] [denominator]
247
- hint denominator: XFieldElement = stack[ 0 ..2 ]
248
211
249
212
x_invert
250
213
xx_mul
0 commit comments