MCPcopy Create free account
hub / github.com/docknetwork/crypto / compose_decompose

Function compose_decompose

saver/src/utils.rs:114–211  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

112
113 #[test]
114 fn compose_decompose() {
115 let n1 = Fr::from(53u64);
116 let n1_decomposed = decompose(&n1, 4).unwrap();
117 for i in n1_decomposed[..62].iter() {
118 assert_eq!(*i, 0);
119 }
120 assert_eq!(n1_decomposed[62..], vec![3, 5][..]);
121 assert_eq!(n1, compose(&n1_decomposed, 4).unwrap());
122
123 let n1_decomposed = decompose(&n1, 8).unwrap();
124 for i in n1_decomposed[..31].iter() {
125 assert_eq!(*i, 0);
126 }
127 assert_eq!(n1_decomposed[31], 53);
128 assert_eq!(n1, compose(&n1_decomposed, 8).unwrap());
129
130 let n1_decomposed = decompose(&n1, 16).unwrap();
131 for i in n1_decomposed[..15].iter() {
132 assert_eq!(*i, 0);
133 }
134 assert_eq!(n1_decomposed[15], 53);
135 assert_eq!(n1, compose(&n1_decomposed, 16).unwrap());
136
137 let n2 = Fr::from(325u64);
138 let n2_decomposed = decompose(&n2, 4).unwrap();
139 for i in n2_decomposed[..61].iter() {
140 assert_eq!(*i, 0);
141 }
142 assert_eq!(n2_decomposed[61..], vec![1, 4, 5][..]);
143 assert_eq!(n2, compose(&n2_decomposed, 4).unwrap());
144
145 let n2_decomposed = decompose(&n2, 8).unwrap();
146 for i in n2_decomposed[..30].iter() {
147 assert_eq!(*i, 0);
148 }
149 assert_eq!(n2_decomposed[30..], vec![1, 69][..]);
150 assert_eq!(n2, compose(&n2_decomposed, 8).unwrap());
151
152 let n2_decomposed = decompose(&n2, 16).unwrap();
153 for i in n2_decomposed[..15].iter() {
154 assert_eq!(*i, 0);
155 }
156 assert_eq!(n2_decomposed[15], 325);
157 assert_eq!(n2, compose(&n2_decomposed, 16).unwrap());
158
159 let n3 = Fr::from(7986u64);
160 let n3_decomposed = decompose(&n3, 4).unwrap();
161 for i in n3_decomposed[..60].iter() {
162 assert_eq!(*i, 0);
163 }
164 assert_eq!(n3_decomposed[60..], vec![1, 15, 3, 2][..]);
165 assert_eq!(n3, compose(&n3_decomposed, 4).unwrap());
166
167 let n3_decomposed = decompose(&n3, 8).unwrap();
168 for i in n3_decomposed[..30].iter() {
169 assert_eq!(*i, 0);
170 }
171 assert_eq!(n3_decomposed[30..], vec![31, 50][..]);

Callers

nothing calls this directly

Calls 3

randFunction · 0.85
decomposeFunction · 0.70
iterMethod · 0.45

Tested by

no test coverage detected