https://github.com/rburing/kontsevich_graph_series-cpp
Tip revision: 20d443646d7047f5d273c2a44436ef7e5e9b63ca authored by Ricardo Buring on 30 July 2019, 13:50:40 UTC
Penkava-Vanhaecke deformations, add data files
Penkava-Vanhaecke deformations, add data files
Tip revision: 20d4436
kontsevich_graph_sum.hpp
#ifndef INCLUDED_KONTSEVICH_GRAPH_SUM_H_
#define INCLUDED_KONTSEVICH_GRAPH_SUM_H_
#include <vector>
#include <utility>
#include <iostream>
#include "kontsevich_graph.hpp"
template<class T> class KontsevichGraphSum;
template<class T> std::ostream& operator<<(std::ostream&, const std::pair<T, KontsevichGraph>&);
template<class T> std::ostream& operator<<(std::ostream&, const KontsevichGraphSum<T>&);
template<class T> std::istream& operator>>(std::istream&, KontsevichGraphSum<T>&);
template<class T>
class KontsevichGraphSum : public std::vector< std::pair<T, KontsevichGraph> >
{
using std::vector< std::pair<T, KontsevichGraph> >::vector; // inherit constructors
using std::vector< std::pair<T, KontsevichGraph> >::operator[]; // inherit subscript operator
public:
typedef std::pair<T, KontsevichGraph> Term;
KontsevichGraphSum<T> operator[](std::vector<size_t> indegrees) const;
T operator[](KontsevichGraph) const;
KontsevichGraphSum<T> operator()(std::vector< KontsevichGraphSum<T> > arguments) const;
KontsevichGraphSum<T>& operator+=(const KontsevichGraphSum<T>& rhs);
KontsevichGraphSum<T>& operator-=(const KontsevichGraphSum<T>& rhs);
KontsevichGraphSum<T>& operator=(const KontsevichGraphSum<T>&) = default;
std::vector< std::vector<size_t> > in_degrees(bool ascending = false) const;
KontsevichGraphSum<T> symmetrization() const;
KontsevichGraphSum<T> skew_symmetrization() const;
void reduce_mod_skew();
bool operator==(const KontsevichGraphSum<T>& other) const;
bool operator==(int other) const;
bool operator!=(const KontsevichGraphSum<T>& other) const;
bool operator!=(int other) const;
friend std::ostream& operator<< <>(std::ostream& os, const KontsevichGraphSum<T>::Term& term);
friend std::ostream& operator<< <>(std::ostream& os, const KontsevichGraphSum<T>& gs);
friend std::istream& operator>> <>(std::istream& is, KontsevichGraphSum<T>& sum);
};
template <class T>
KontsevichGraphSum<T> operator+(KontsevichGraphSum<T> lhs, const KontsevichGraphSum<T>& rhs);
template <class T>
KontsevichGraphSum<T> operator-(KontsevichGraphSum<T> lhs, const KontsevichGraphSum<T>& rhs);
template <class T>
KontsevichGraphSum<T> operator*(T lhs, KontsevichGraphSum<T> rhs);
template <class T>
KontsevichGraphSum<T> gerstenhaber_bracket(const KontsevichGraphSum<T>& left, const KontsevichGraphSum<T>& right);
template <class T>
KontsevichGraphSum<T> schouten_bracket(const KontsevichGraphSum<T>& left, const KontsevichGraphSum<T>& right);
#include "kontsevich_graph_sum.tpp"
#endif