bits.psm 354 B

1234567891011121314151617181920212223
  1. contract bits_decomposition
  2. param x
  3. {% for n in range(255) %}
  4. private b_{{n}}
  5. {% endfor %}
  6. unpack_bits x b_0 b_254
  7. {% for n in range(255) %}
  8. # (1 - b) * b == 0
  9. lc0_add_one
  10. lc0_sub b_{{n}}
  11. lc1_add b_{{n}}
  12. enforce
  13. {% endfor %}
  14. lc0_add_bits b_0
  15. lc0_sub x
  16. enforce
  17. end