#ifndef MLIR_DIALECT_POLYNOMIAL_IR_POLYNOMIAL_H_
#define MLIR_DIALECT_POLYNOMIAL_IR_POLYNOMIAL_H_
#include "mlir/Support/LLVM.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/raw_ostream.h"
namespace mlir {
class MLIRContext;
namespace polynomial {
constexpr unsigned apintBitWidth = …;
template <class Derived, typename CoefficientType>
class MonomialBase { … };
class IntMonomial : public MonomialBase<IntMonomial, APInt> { … };
class FloatMonomial : public MonomialBase<FloatMonomial, APFloat> { … };
template <class Derived, typename Monomial>
class PolynomialBase { … };
class IntPolynomial : public PolynomialBase<IntPolynomial, IntMonomial> { … };
class FloatPolynomial : public PolynomialBase<FloatPolynomial, FloatMonomial> { … };
template <class D, typename T>
inline ::llvm::hash_code hash_value(const PolynomialBase<D, T> &arg) { … }
template <class D, typename T>
inline ::llvm::hash_code hash_value(const MonomialBase<D, T> &arg) { … }
template <class D, typename T>
inline raw_ostream &operator<<(raw_ostream &os,
const PolynomialBase<D, T> &polynomial) { … }
}
}
#endif