smats  0.0.1
Satisfability Modulo Arithmetic Theories Symbols
Loading...
Searching...
No Matches
gmp.h
1
7#pragma once
8
9#include <gmp.h> // IWYU pragma: export
10#include <gmpxx.h> // IWYU pragma: export
11
12#include <cctype>
13#include <cstring>
14#include <string_view>
15
16namespace std {
17
18template <>
19struct hash<mpq_class> {
20 size_t operator()(const mpq_class &val) const;
21};
22} // namespace std
23
24namespace smats::gmp {
25
31mpz_class floor(const mpq_class &val);
37mpz_class ceil(const mpq_class &val);
38
68inline const mpq_t &to_mpq_t(const mpq_class &cla) { return *reinterpret_cast<const mpq_t *>(cla.get_mpq_t()); }
69
70inline mpq_t &to_mpq_t(mpq_class &cla) { return *reinterpret_cast<mpq_t *>(cla.get_mpq_t()); } // NOLINT
71
81inline const mpq_class &to_mpq_class(const mpq_t &mpq) { return reinterpret_cast<const mpq_class &>(mpq); }
82
92inline mpq_class &to_mpq_class(mpq_t &mpq) { return reinterpret_cast<mpq_class &>(mpq); } // NOLINT
93
100inline bool is_digit_or_sign(char c) { return std::isdigit(c) || c == '+' || c == '-'; }
101
132mpq_class string_to_mpq(std::string_view str);
133
134} // namespace smats::gmp
Definition gmp.cpp:14