sources/modules/BNAlgebra.cpp file

implements the Bar-Natan algebra $\mathcal{B}$ from [4]


auto arrow_is_shorter(const int& a, const int& b) -> bool
false if a=0; otherwise true if |a|<|b|, assuming both have the same sign. This function is needed in the arrow pushing algorithm.
template<typename Coeff>
auto BNMorNonZero(const int& row, const int& col, const BNMor<Coeff>& value) -> bool
true if morphism is zero; this function is needed by the Eigen Template Library
template<typename Coeff>
auto label_is_zero(const Label<Coeff>& label) -> bool
true if the coefficient of the label is zero. This function is used in BNMor::simplify().