@@ -55,43 +55,11 @@ impl Memory {
5555 Ok ( ( ) )
5656 }
5757
58- /// Reads a slice of memory values
59- pub fn get_slice ( & self , start : usize , len : usize ) -> Result < Vec < F > , RunnerError > {
60- ( start..start + len) . map ( |i| self . get ( i) ) . collect ( )
61- }
62-
63- /// Sets a slice of memory values
64- pub fn set_slice ( & mut self , start : usize , values : & [ F ] ) -> Result < ( ) , RunnerError > {
65- for ( i, & value) in values. iter ( ) . enumerate ( ) {
66- self . set ( start + i, value) ?;
67- }
68- Ok ( ( ) )
69- }
70-
7158 /// Gets the current size of allocated memory
7259 pub const fn size ( & self ) -> usize {
7360 self . 0 . len ( )
7461 }
7562
76- /// Checks if a memory address is initialized
77- pub fn is_initialized ( & self , index : usize ) -> bool {
78- self . 0 . get ( index) . and_then ( |x| x. as_ref ( ) ) . is_some ( )
79- }
80-
81- /// Gets all initialized memory addresses and their values
82- pub fn initialized_entries ( & self ) -> Vec < ( usize , F ) > {
83- self . 0
84- . iter ( )
85- . enumerate ( )
86- . filter_map ( |( i, opt) | opt. map ( |v| ( i, v) ) )
87- . collect ( )
88- }
89-
90- /// Clears all memory
91- pub fn clear ( & mut self ) {
92- self . 0 . clear ( ) ;
93- }
94-
9563 /// Get a vector from vectorized memory
9664 pub fn get_vector ( & self , index : usize ) -> Result < [ F ; VECTOR_LEN ] , RunnerError > {
9765 Ok ( self . get_vectorized_slice ( index, 1 ) ?. try_into ( ) . unwrap ( ) )
@@ -107,7 +75,6 @@ impl Memory {
10775 Ok ( EF :: from_basis_coefficients_slice ( & coeffs) . unwrap ( ) )
10876 }
10977
110- /// Get a vectorized slice from memory
11178 pub fn get_vectorized_slice ( & self , index : usize , len : usize ) -> Result < Vec < F > , RunnerError > {
11279 let start = index * VECTOR_LEN ;
11380 let total_len = len * VECTOR_LEN ;
@@ -142,133 +109,8 @@ impl Memory {
142109 Ok ( ( ) )
143110 }
144111
145- /// Set a vectorized slice in memory
146- pub fn set_vectorized_slice ( & mut self , index : usize , value : & [ F ] ) -> Result < ( ) , RunnerError > {
147- assert ! ( value. len( ) . is_multiple_of( VECTOR_LEN ) ) ;
148- let start = index * VECTOR_LEN ;
149- value
150- . iter ( )
151- . enumerate ( )
152- . try_for_each ( |( i, & v) | self . set ( start + i, v) )
153- }
154-
155112 /// Get a slice from memory for multilinear evaluation
156113 pub fn slice ( & self , start : usize , len : usize ) -> Result < Vec < F > , RunnerError > {
157114 ( 0 ..len) . map ( |i| self . get ( start + i) ) . collect ( )
158115 }
159116}
160-
161- #[ cfg( test) ]
162- mod tests {
163- use super :: * ;
164-
165- #[ test]
166- fn test_basic_memory_operations ( ) {
167- let mut memory = Memory :: empty ( ) ;
168-
169- // Test setting and getting values
170- memory. set ( 0 , F :: ONE ) . unwrap ( ) ;
171- memory. set ( 5 , F :: from_usize ( 42 ) ) . unwrap ( ) ;
172-
173- assert_eq ! ( memory. get( 0 ) . unwrap( ) , F :: ONE ) ;
174- assert_eq ! ( memory. get( 5 ) . unwrap( ) , F :: from_usize( 42 ) ) ;
175-
176- // Test undefined memory access
177- assert ! ( matches!( memory. get( 1 ) , Err ( RunnerError :: UndefinedMemory ) ) ) ;
178- }
179-
180- #[ test]
181- fn test_memory_already_set_error ( ) {
182- let mut memory = Memory :: empty ( ) ;
183-
184- memory. set ( 0 , F :: ONE ) . unwrap ( ) ;
185- // Setting same value should work
186- memory. set ( 0 , F :: ONE ) . unwrap ( ) ;
187-
188- // Setting different value should fail
189- assert ! ( matches!(
190- memory. set( 0 , F :: ZERO ) ,
191- Err ( RunnerError :: MemoryAlreadySet )
192- ) ) ;
193- }
194-
195- #[ test]
196- fn test_memory_slices ( ) {
197- let mut memory = Memory :: empty ( ) ;
198- let values = vec ! [ F :: ONE , F :: ZERO , F :: from_usize( 42 ) , F :: from_usize( 100 ) ] ;
199-
200- memory. set_slice ( 10 , & values) . unwrap ( ) ;
201- let retrieved = memory. get_slice ( 10 , 4 ) . unwrap ( ) ;
202-
203- assert_eq ! ( retrieved, values) ;
204- }
205-
206- #[ test]
207- fn test_memory_initialization_and_utilities ( ) {
208- let public_data = vec ! [ F :: ONE , F :: ZERO , F :: from_usize( 123 ) ] ;
209- let memory = Memory :: new ( public_data. clone ( ) ) ;
210-
211- // All public data should be initialized
212- for ( i, expected) in public_data. iter ( ) . enumerate ( ) {
213- assert ! ( memory. is_initialized( i) ) ;
214- assert_eq ! ( memory. get( i) . unwrap( ) , * expected) ;
215- }
216-
217- assert_eq ! ( memory. size( ) , 3 ) ;
218-
219- let entries = memory. initialized_entries ( ) ;
220- assert_eq ! ( entries. len( ) , 3 ) ;
221- assert_eq ! ( entries[ 0 ] , ( 0 , F :: ONE ) ) ;
222- assert_eq ! ( entries[ 2 ] , ( 2 , F :: from_usize( 123 ) ) ) ;
223- }
224-
225- #[ test]
226- fn test_vectorized_operations ( ) {
227- let mut memory = Memory :: empty ( ) ;
228- let vector = [ F :: ONE ; VECTOR_LEN ] ;
229-
230- memory. set_vector ( 0 , vector) . unwrap ( ) ;
231- let retrieved = memory. get_vector ( 0 ) . unwrap ( ) ;
232-
233- assert_eq ! ( retrieved, vector) ;
234-
235- // Test vectorized slice
236- let slice_data = vec ! [ F :: from_usize( 1 ) ; 2 * VECTOR_LEN ] ;
237- memory. set_vectorized_slice ( 1 , & slice_data) . unwrap ( ) ;
238- let retrieved_slice = memory. get_vectorized_slice ( 1 , 2 ) . unwrap ( ) ;
239-
240- assert_eq ! ( retrieved_slice, slice_data) ;
241- }
242-
243- #[ test]
244- fn test_extension_field_operations ( ) {
245- let mut memory = Memory :: empty ( ) ;
246-
247- // Create a simple extension field element with proper dimension
248- let mut coeffs = [ F :: ZERO ; DIMENSION ] ;
249- coeffs[ 0 ] = F :: ONE ;
250- let ef_value = EF :: from_basis_coefficients_slice ( & coeffs) . unwrap ( ) ;
251-
252- memory. set_ef_element ( 0 , ef_value) . unwrap ( ) ;
253- let retrieved = memory. get_ef_element ( 0 ) . unwrap ( ) ;
254-
255- assert_eq ! ( retrieved, ef_value) ;
256-
257- // Test continuous slice of EF elements
258- memory. set_ef_element ( DIMENSION , ef_value) . unwrap ( ) ;
259- let ef_slice = memory. get_continuous_slice_of_ef_elements ( 0 , 2 ) . unwrap ( ) ;
260-
261- assert_eq ! ( ef_slice. len( ) , 2 ) ;
262- assert_eq ! ( ef_slice[ 0 ] , ef_value) ;
263- assert_eq ! ( ef_slice[ 1 ] , ef_value) ;
264- }
265-
266- #[ test]
267- fn test_memory_clear ( ) {
268- let mut memory = Memory :: new ( vec ! [ F :: ONE , F :: ZERO ] ) ;
269- assert_eq ! ( memory. size( ) , 2 ) ;
270-
271- memory. clear ( ) ;
272- assert_eq ! ( memory. size( ) , 0 ) ;
273- }
274- }
0 commit comments