Skip to content

Commit 3520ed4

Browse files
committed
support empty input
1 parent 49be4ba commit 3520ed4

File tree

2 files changed

+14
-12
lines changed

2 files changed

+14
-12
lines changed

extensions/native/recursion/src/challenger/duplex.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,19 @@ impl<C: Config> DuplexChallengerVariable<C> {
8080
// Observes multiple elements from an array.
8181
// This is equivalent to calling `observe` multiple times, but more efficient.
8282
pub fn observe_slice_opt(&self, builder: &mut Builder<C>, arr: &Array<C, Felt<C::F>>) {
83-
let next_pos = builder.poseidon2_multi_observe(&self.sponge_state, self.input_ptr, arr);
84-
85-
builder.assign(&self.input_ptr, self.io_empty_ptr + next_pos.clone());
86-
builder.if_ne(next_pos, Usize::from(0)).then_or_else(
87-
|builder| {
88-
builder.assign(&self.output_ptr, self.io_empty_ptr);
89-
},
90-
|builder| {
91-
builder.assign(&self.output_ptr, self.io_full_ptr);
92-
},
93-
);
83+
builder.if_ne(arr.len(), Usize::from(0)).then(|builder| {
84+
let next_pos = builder.poseidon2_multi_observe(&self.sponge_state, self.input_ptr, arr);
85+
86+
builder.assign(&self.input_ptr, self.io_empty_ptr + next_pos.clone());
87+
builder.if_ne(next_pos, Usize::from(0)).then_or_else(
88+
|builder| {
89+
builder.assign(&self.output_ptr, self.io_empty_ptr);
90+
},
91+
|builder| {
92+
builder.assign(&self.output_ptr, self.io_full_ptr);
93+
},
94+
);
95+
});
9496
}
9597

9698
fn sample(&self, builder: &mut Builder<C>) -> Felt<C::F> {

extensions/native/recursion/tests/recursion.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ fn test_multi_observe() {
230230
}
231231

232232
fn build_test_program<C: Config>(builder: &mut Builder<C>) {
233-
let sample_lens: Vec<usize> = vec![10, 2, 1, 3, 20, 200, 400];
233+
let sample_lens: Vec<usize> = vec![10, 2, 1, 0, 3, 20, 200, 400];
234234

235235
let mut rng = create_seeded_rng();
236236

0 commit comments

Comments
 (0)