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

#include <variable.hpp>

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

Public Types

typedef FieldType field_type
 
typedef field_type::value_type field_value_type
 

Public Member Functions

void add_term (const linear_term< FieldType > &lt)
 
void add_term (const variable< FieldType > &var)
 
void add_term (const variable< FieldType > &var, const field_value_type &field_coeff)
 
void add_term (const variable< FieldType > &var, integer_coeff_t int_coeff)
 
std::vector< linear_term< FieldType > >::const_iterator begin () const
 
std::vector< linear_term< FieldType > >::const_iterator end () const
 
field_value_type evaluate (const std::vector< field_value_type > &assignment) const
 
bool is_valid (size_t num_variables) const
 
 linear_combination ()
 
 linear_combination (const field_value_type &field_coeff)
 
 linear_combination (const integer_coeff_t int_coeff)
 
 linear_combination (const linear_term< FieldType > &lt)
 
 linear_combination (const std::vector< linear_term< FieldType >> &all_terms)
 
 linear_combination (const variable< FieldType > &var)
 
linear_combination operator* (const field_value_type &field_coeff) const
 
linear_combination operator* (integer_coeff_t int_coeff) const
 
linear_combination operator+ (const linear_combination &other) const
 
linear_combination operator- () const
 
linear_combination operator- (const linear_combination &other) const
 
bool operator== (const linear_combination &other) const
 

Public Attributes

std::vector< linear_term< FieldType > > terms
 

Detailed Description

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

Forward declaration.

A linear combination represents a formal expression of the form "sum_i coeff_i * x_{index_i}".

Member Typedef Documentation

◆ field_type

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

◆ field_value_type

template<typename FieldType >
typedef field_type::value_type nil::crypto3::zk::snark::linear_combination< FieldType >::field_value_type

Constructor & Destructor Documentation

◆ linear_combination() [1/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( )
inline

◆ linear_combination() [2/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( const integer_coeff_t  int_coeff)
inline

◆ linear_combination() [3/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( const field_value_type field_coeff)
inline

◆ linear_combination() [4/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( const variable< FieldType > &  var)
inline

◆ linear_combination() [5/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( const linear_term< FieldType > &  lt)
inline

◆ linear_combination() [6/6]

template<typename FieldType >
nil::crypto3::zk::snark::linear_combination< FieldType >::linear_combination ( const std::vector< linear_term< FieldType >> &  all_terms)
inline

Member Function Documentation

◆ add_term() [1/4]

template<typename FieldType >
void nil::crypto3::zk::snark::linear_combination< FieldType >::add_term ( const linear_term< FieldType > &  lt)
inline

◆ add_term() [2/4]

template<typename FieldType >
void nil::crypto3::zk::snark::linear_combination< FieldType >::add_term ( const variable< FieldType > &  var)
inline

◆ add_term() [3/4]

template<typename FieldType >
void nil::crypto3::zk::snark::linear_combination< FieldType >::add_term ( const variable< FieldType > &  var,
const field_value_type field_coeff 
)
inline

◆ add_term() [4/4]

template<typename FieldType >
void nil::crypto3::zk::snark::linear_combination< FieldType >::add_term ( const variable< FieldType > &  var,
integer_coeff_t  int_coeff 
)
inline

◆ begin()

template<typename FieldType >
std::vector<linear_term<FieldType> >::const_iterator nil::crypto3::zk::snark::linear_combination< FieldType >::begin ( ) const
inline

◆ end()

template<typename FieldType >
std::vector<linear_term<FieldType> >::const_iterator nil::crypto3::zk::snark::linear_combination< FieldType >::end ( ) const
inline

◆ evaluate()

template<typename FieldType >
field_value_type nil::crypto3::zk::snark::linear_combination< FieldType >::evaluate ( const std::vector< field_value_type > &  assignment) const
inline

◆ is_valid()

template<typename FieldType >
bool nil::crypto3::zk::snark::linear_combination< FieldType >::is_valid ( size_t  num_variables) const
inline

◆ operator*() [1/2]

template<typename FieldType >
linear_combination nil::crypto3::zk::snark::linear_combination< FieldType >::operator* ( const field_value_type field_coeff) const
inline

◆ operator*() [2/2]

template<typename FieldType >
linear_combination nil::crypto3::zk::snark::linear_combination< FieldType >::operator* ( integer_coeff_t  int_coeff) const
inline

◆ operator+()

template<typename FieldType >
linear_combination nil::crypto3::zk::snark::linear_combination< FieldType >::operator+ ( const linear_combination< FieldType > &  other) const
inline

◆ operator-() [1/2]

template<typename FieldType >
linear_combination nil::crypto3::zk::snark::linear_combination< FieldType >::operator- ( ) const
inline

◆ operator-() [2/2]

template<typename FieldType >
linear_combination nil::crypto3::zk::snark::linear_combination< FieldType >::operator- ( const linear_combination< FieldType > &  other) const
inline

◆ operator==()

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

Member Data Documentation

◆ terms

template<typename FieldType >
std::vector<linear_term<FieldType> > nil::crypto3::zk::snark::linear_combination< FieldType >::terms

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