pragma circom 2.0.0; include "../node_modules/circomlib/circuits/bitify.circom"; include "../node_modules/circomlib/circuits/mux1.circom"; include "../node_modules/circomlib/circuits/comparators.circom"; template Decompressor(){ signal input in; signal output out[10][3]; component toBits = Num2Bits(240); component toNum[10][3]; toBits.in <== in; for (var i=0; i<10; i++) { for (var j=0; j<3; j++) { toNum[i][j] = Bits2Num(8); toNum[i][j].in[0] <== toBits.out[i*24+j*8]; toNum[i][j].in[1] <== toBits.out[i*24+j*8+1]; toNum[i][j].in[2] <== toBits.out[i*24+j*8+2]; toNum[i][j].in[3] <== toBits.out[i*24+j*8+3]; toNum[i][j].in[4] <== toBits.out[i*24+j*8+4]; toNum[i][j].in[5] <== toBits.out[i*24+j*8+5]; toNum[i][j].in[6] <== toBits.out[i*24+j*8+6]; toNum[i][j].in[7] <== toBits.out[i*24+j*8+7]; out[i][j] <== toNum[i][j].out; } } } template DecompressorKernel(kernel_size){ signal input in; signal output out[kernel_size][kernel_size]; component toBits = Num2Bits(kernel_size*kernel_size*9); // 8-bit value, 1-bit sign component toNum[kernel_size][kernel_size]; component selector[kernel_size][kernel_size]; toBits.in <== in; for (var i=0; i