namnc / circom-2-arithc

Circom interpreter to arithmetic circuit description
MIT License
33 stars 7 forks source link

Support `PrefixOp` #50

Closed voltrevo closed 1 week ago

voltrevo commented 1 month ago

See #31.

Basically just delegates to infix ops:

fn to_equivalent_infix(op: &ExpressionPrefixOpcode) -> (u32, ExpressionInfixOpcode) {
    match op {
        ExpressionPrefixOpcode::Sub => (0, ExpressionInfixOpcode::Sub),
        ExpressionPrefixOpcode::BoolNot => (0, ExpressionInfixOpcode::Eq),
        ExpressionPrefixOpcode::Complement => (u32::MAX, ExpressionInfixOpcode::BitXor),
    }
}

I've done some limited manual testing and it seems right, but I don't fully really understand the output format yet.