Clearmatics Libsnark  0.1
C++ library for zkSNARK proofs
Public Member Functions | Public Attributes | Friends | List of all members
libsnark::linear_combination< FieldT > Class Template Reference

#include <variable.hpp>

Inheritance diagram for libsnark::linear_combination< FieldT >:
Inheritance graph
[legend]

Public Member Functions

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

Public Attributes

std::vector< linear_term< FieldT > > terms
 

Friends

std::ostream & operator (std::ostream &out, const linear_combination< FieldT > &lc)
 
std::istream & operator>> (std::istream &in, linear_combination< FieldT > &lc)
 

Detailed Description

template<typename FieldT>
class libsnark::linear_combination< FieldT >

Forward declaration.

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

Definition at line 40 of file variable.hpp.

Constructor & Destructor Documentation

◆ linear_combination() [1/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( )
inline

Definition at line 164 of file variable.hpp.

164 {};

◆ linear_combination() [2/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( const integer_coeff_t  int_coeff)

◆ linear_combination() [3/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( const FieldT &  field_coeff)

◆ linear_combination() [4/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( const variable< FieldT > &  var)

◆ linear_combination() [5/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( const linear_term< FieldT > &  lt)

◆ linear_combination() [6/6]

template<typename FieldT >
libsnark::linear_combination< FieldT >::linear_combination ( const std::vector< linear_term< FieldT >> &  all_terms)

Member Function Documentation

◆ add_term() [1/4]

template<typename FieldT >
void libsnark::linear_combination< FieldT >::add_term ( const linear_term< FieldT > &  lt)

◆ add_term() [2/4]

template<typename FieldT >
void libsnark::linear_combination< FieldT >::add_term ( const variable< FieldT > &  var)

◆ add_term() [3/4]

template<typename FieldT >
void libsnark::linear_combination< FieldT >::add_term ( const variable< FieldT > &  var,
const FieldT &  field_coeff 
)

◆ add_term() [4/4]

template<typename FieldT >
void libsnark::linear_combination< FieldT >::add_term ( const variable< FieldT > &  var,
const integer_coeff_t  int_coeff 
)

◆ begin()

template<typename FieldT >
std::vector<linear_term<FieldT> >::const_iterator libsnark::linear_combination< FieldT >::begin ( ) const

◆ end()

template<typename FieldT >
std::vector<linear_term<FieldT> >::const_iterator libsnark::linear_combination< FieldT >::end ( ) const

◆ evaluate()

template<typename FieldT >
FieldT libsnark::linear_combination< FieldT >::evaluate ( const std::vector< FieldT > &  assignment) const

◆ is_valid()

template<typename FieldT >
bool libsnark::linear_combination< FieldT >::is_valid ( const size_t  num_variables) const

◆ operator*() [1/2]

template<typename FieldT >
linear_combination<FieldT> libsnark::linear_combination< FieldT >::operator* ( const FieldT &  field_coeff) const

◆ operator*() [2/2]

template<typename FieldT >
linear_combination<FieldT> libsnark::linear_combination< FieldT >::operator* ( const integer_coeff_t  int_coeff) const

◆ operator+()

template<typename FieldT >
linear_combination<FieldT> libsnark::linear_combination< FieldT >::operator+ ( const linear_combination< FieldT > &  other) const

◆ operator-() [1/2]

template<typename FieldT >
linear_combination<FieldT> libsnark::linear_combination< FieldT >::operator- ( ) const

◆ operator-() [2/2]

template<typename FieldT >
linear_combination<FieldT> libsnark::linear_combination< FieldT >::operator- ( const linear_combination< FieldT > &  other) const

◆ operator==()

template<typename FieldT >
bool libsnark::linear_combination< FieldT >::operator== ( const linear_combination< FieldT > &  other) const

◆ print()

template<typename FieldT >
void libsnark::linear_combination< FieldT >::print ( const std::map< size_t, std::string > &  variable_annotations = std::map< size_t, std::string >()) const

◆ print_with_assignment()

template<typename FieldT >
void libsnark::linear_combination< FieldT >::print_with_assignment ( const std::vector< FieldT > &  full_assignment,
const std::map< size_t, std::string > &  variable_annotations = std::map< size_t, std::string >() 
) const

Friends And Related Function Documentation

◆ operator

template<typename FieldT >
std::ostream& operator ( std::ostream &  out,
const linear_combination< FieldT > &  lc 
)
friend

◆ operator>>

template<typename FieldT >
std::istream& operator>> ( std::istream &  in,
linear_combination< FieldT > &  lc 
)
friend

Member Data Documentation

◆ terms

template<typename FieldT >
std::vector<linear_term<FieldT> > libsnark::linear_combination< FieldT >::terms

Definition at line 162 of file variable.hpp.


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