nil::crypto3::zk::snark::bacs_gate< FieldType > Struct Template Reference

#include <bacs.hpp>

+ Collaboration diagram for nil::crypto3::zk::snark::bacs_gate< FieldType >:

Public Types

typedef FieldType field_type
 

Public Member Functions

FieldType::value_type evaluate (const bacs_variable_assignment< FieldType > &input) const
 
bool operator== (const bacs_gate< FieldType > &other) const
 

Public Attributes

bool is_circuit_output
 
linear_combination< FieldType > lhs
 
variable< FieldType > output
 
linear_combination< FieldType > rhs
 

Detailed Description

template<typename FieldType>
struct nil::crypto3::zk::snark::bacs_gate< FieldType >

A BACS gate is a formal expression of the form lhs * rhs = output , where lhs and rhs are linear combinations (of variables) and output is a variable.

In other words, a BACS gate is an arithmetic gate that is bilinear.

Member Typedef Documentation

◆ field_type

template<typename FieldType >
typedef FieldType nil::crypto3::zk::snark::bacs_gate< FieldType >::field_type

Member Function Documentation

◆ evaluate()

template<typename FieldType >
FieldType::value_type nil::crypto3::zk::snark::bacs_gate< FieldType >::evaluate ( const bacs_variable_assignment< FieldType > &  input) const
inline

◆ operator==()

template<typename FieldType >
bool nil::crypto3::zk::snark::bacs_gate< FieldType >::operator== ( const bacs_gate< FieldType > &  other) const
inline

Member Data Documentation

◆ is_circuit_output

template<typename FieldType >
bool nil::crypto3::zk::snark::bacs_gate< FieldType >::is_circuit_output

◆ lhs

template<typename FieldType >
linear_combination<FieldType> nil::crypto3::zk::snark::bacs_gate< FieldType >::lhs

◆ output

template<typename FieldType >
variable<FieldType> nil::crypto3::zk::snark::bacs_gate< FieldType >::output

◆ rhs

template<typename FieldType >
linear_combination<FieldType> nil::crypto3::zk::snark::bacs_gate< FieldType >::rhs

The documentation for this struct was generated from the following file: