27class CompilerBackend {
34 explicit CompilerBackend(QuadCircuitF* q) : q_(q) {}
36 V assert0(
const V& a)
const {
return q_->assert0(a); }
37 V add(
const V& a,
const V& b)
const {
return q_->add(a, b); }
38 V sub(
const V& a,
const V& b)
const {
39 auto mb = mul(konst(q_->f_.mone()), b);
42 V mul(
const V& a,
const V& b)
const {
return q_->mul(a, b); }
43 V mul(
const Elt& a,
const V& b)
const {
return q_->mul(a, b); }
44 V mul(
const Elt& a,
const V& b,
const V& c)
const {
return q_->mul(a, b, c); }
45 V konst(
const Elt& a)
const {
return q_->konst(a); }
47 V ax(
const Elt& a,
const V& x)
const {
return q_->mul(a, x); }
48 V axy(
const Elt& a,
const V& x,
const V& y)
const {
return q_->mul(a, x, y); }
49 V axpy(
const V& y,
const Elt& a,
const V& x)
const {
50 return q_->axpy(y, a, x);
52 V apy(
const V& y,
const Elt& a)
const {
return q_->apy(y, a); }
54 V input()
const {
return q_->input(); }
55 void output(
size_t n, V wire_id)
const { q_->output(n, wire_id); }
56 size_t wire_id(
const V& a)
const {
return q_->wire_id(a); }