z3-z3-4.12.6.src.util.inf_int_rational.cpp Maven / Gradle / Ivy
/*++
Copyright (c) 2006 Microsoft Corporation
Module Name:
inf_int_rational.cpp
Abstract:
Rational numbers with infenitesimals
Author:
Nikolaj Bjorner (nbjorner) 2006-12-05.
Revision History:
--*/
#include
#include "util/inf_int_rational.h"
inf_int_rational inf_int_rational::m_zero;
inf_int_rational inf_int_rational::m_one;
inf_int_rational inf_int_rational::m_minus_one;
std::string inf_int_rational::to_string() const {
if (m_second == 0) {
return m_first.to_string();
}
std::ostringstream s;
s << "(" << m_first.to_string();
if (m_second < 0) {
s << " -e*" << (-m_second) << ")";
}
else {
s << " +e*" << m_second << ")";
}
return s.str();
}
void initialize_inf_int_rational() {
inf_int_rational::init();
}
void inf_int_rational::init() {
m_zero.m_first = rational::zero();
m_one.m_first = rational::one();
m_minus_one.m_first = rational::minus_one();
}
void finalize_inf_int_rational() {
inf_int_rational::finalize();
}
void inf_int_rational::finalize() {
m_zero.~inf_int_rational();
m_one.~inf_int_rational();
m_minus_one.~inf_int_rational();
}