#ifndef LLVM_CODEGEN_PBQP_MATH_H
#define LLVM_CODEGEN_PBQP_MATH_H
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/STLExtras.h"
#include <algorithm>
#include <cassert>
#include <functional>
#include <memory>
namespace llvm {
namespace PBQP {
PBQPNum;
class Vector { … };
inline hash_code hash_value(const Vector &V) { … }
template <typename OStream>
OStream& operator<<(OStream &OS, const Vector &V) { … }
class Matrix { … };
inline hash_code hash_value(const Matrix &M) { … }
template <typename OStream>
OStream& operator<<(OStream &OS, const Matrix &M) { … }
template <typename Metadata>
class MDVector : public Vector { … };
template <typename Metadata>
inline hash_code hash_value(const MDVector<Metadata> &V) { … }
template <typename Metadata>
class MDMatrix : public Matrix { … };
template <typename Metadata>
inline hash_code hash_value(const MDMatrix<Metadata> &M) { … }
}
}
#endif