1#ifndef CPROVER_IEEE_FLOAT_H
2#define CPROVER_IEEE_FLOAT_H
61 return a.
f == b.
f && a.
e == b.
e;
244 void print(std::ostream &out)
const;
255 friend inline std::ostream &
Definition std_expr.h:1082
Floating-point bitvector type.
Definition irep2_type.h:621
Definition std_types.h:629
Definition ieee_float.h:11
BigInt max_fraction() const
Definition ieee_float.cpp:26
friend bool operator!=(const ieee_float_spect &a, const ieee_float_spect &b)
Definition ieee_float.h:65
unsigned width() const
Definition ieee_float.h:28
ieee_float_spect(const floatbv_typet &type)
Definition ieee_float.cpp:31
ieee_float_spect()
Definition ieee_float.h:20
BigInt bias() const
Definition ieee_float.cpp:8
unsigned f
Definition ieee_float.h:13
unsigned e
Definition ieee_float.h:13
type2tc get_type() const
Definition ieee_float.cpp:49
static ieee_float_spect single_precision()
Definition ieee_float.h:40
static ieee_float_spect quadruple_precision()
Definition ieee_float.h:52
BigInt max_exponent() const
Definition ieee_float.cpp:21
floatbv_typet to_type() const
Definition ieee_float.cpp:13
ieee_float_spect(unsigned _f, unsigned _e)
Definition ieee_float.h:24
friend bool operator==(const ieee_float_spect &a, const ieee_float_spect &b)
Definition ieee_float.h:59
static ieee_float_spect double_precision()
Definition ieee_float.h:46
Definition ieee_float.h:75
friend bool operator>=(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:1002
bool is_double() const
Definition ieee_float.cpp:1189
friend bool operator==(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:1007
ieee_floatt & operator*=(const ieee_floatt &other)
Definition ieee_float.cpp:784
friend bool operator!=(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:1071
void make_minus_infinity()
Definition ieee_float.cpp:1183
void make_fltmax()
Definition ieee_float.cpp:1163
bool is_negative() const
Definition ieee_float.h:180
float to_float() const
Definition ieee_float.cpp:1230
ieee_float_spect spec
Definition ieee_float.h:89
std::string to_ansi_c_string() const
Definition ieee_float.h:246
bool is_NaN() const
Definition ieee_float.h:190
void make_plus_infinity()
Definition ieee_float.cpp:1174
bool is_finite() const
Definition ieee_float.h:200
ieee_floatt & operator+=(const ieee_floatt &other)
Definition ieee_float.cpp:820
void extract_base10(BigInt &_fraction, BigInt &_exponent) const
Definition ieee_float.cpp:425
constant_exprt to_expr() const
Definition ieee_float.cpp:704
bool is_float() const
Definition ieee_float.cpp:1194
bool get_sign() const
Definition ieee_float.h:185
void make_zero()
Definition ieee_float.h:105
void set_sign(bool _sign)
Definition ieee_float.h:100
void from_float(const float f)
Definition ieee_float.cpp:1138
BigInt to_integer() const
Definition ieee_float.cpp:1100
bool NaN_flag
Definition ieee_float.h:299
static ieee_floatt plus_infinity(const ieee_float_spect &_spec)
Definition ieee_float.h:127
void from_expr(const constant_exprt &expr)
Definition ieee_float.cpp:1094
BigInt pack() const
Definition ieee_float.cpp:367
friend bool operator<(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:931
static ieee_floatt NaN(const ieee_float_spect &_spec)
Definition ieee_float.h:120
std::string to_string_decimal(unsigned precision) const
Definition ieee_float.cpp:143
void unpack(const BigInt &i)
Definition ieee_float.cpp:310
void negate()
Definition ieee_float.h:95
void make_NaN()
Definition ieee_float.cpp:1155
bool sign_flag
Definition ieee_float.h:296
const BigInt & get_exponent() const
Definition ieee_float.h:207
ieee_floatt & operator-=(const ieee_floatt &other)
Definition ieee_float.cpp:904
static ieee_floatt minus_infinity(const ieee_float_spect &_spec)
Definition ieee_float.h:134
void next_representable(bool greater)
Definition ieee_float.cpp:1266
const BigInt & get_fraction() const
Definition ieee_float.h:212
void increment(bool distinguish_zero=false)
Definition ieee_float.h:158
bool infinity_flag
Definition ieee_float.h:299
void from_integer(const BigInt &i)
Definition ieee_float.cpp:497
bool is_zero() const
Definition ieee_float.h:175
void build(const BigInt &exp, const BigInt &frac)
Definition ieee_float.cpp:459
BigInt fraction
Definition ieee_float.h:298
static BigInt base10_digits(const BigInt &src)
Definition ieee_float.cpp:130
double to_double() const
Definition ieee_float.cpp:1199
ieee_floatt & operator/=(const ieee_floatt &other)
Definition ieee_float.cpp:711
ieee_floatt()
Definition ieee_float.cpp:54
std::string format(const format_spect &format_spec) const
Definition ieee_float.cpp:86
friend ieee_floatt operator+(const ieee_floatt &lhs, const ieee_floatt &rhs)
Definition ieee_float.cpp:911
bool is_infinity() const
Definition ieee_float.h:195
friend std::ostream & operator<<(std::ostream &out, const ieee_floatt &f)
Definition ieee_float.h:256
void make_fltmin()
Definition ieee_float.cpp:1169
void from_base10(const BigInt &exp, const BigInt &frac)
Definition ieee_float.cpp:470
rounding_modet rounding_mode
Definition ieee_float.h:88
bool is_normal() const
Definition ieee_float.cpp:360
void extract_base2(BigInt &_fraction, BigInt &_exponent) const
Definition ieee_float.cpp:404
static ieee_floatt fltmin(const ieee_float_spect &_spec)
Definition ieee_float.h:150
ieee_floatt & operator-()
Definition ieee_float.cpp:925
std::string to_string_scientific(unsigned precision) const
Definition ieee_float.cpp:223
void decrement(bool distinguish_zero=false)
Definition ieee_float.h:167
void divide_and_round(BigInt &fraction, const BigInt &factor)
Definition ieee_float.cpp:641
rounding_modet
Definition ieee_float.h:78
@ NONDETERMINISTIC
Definition ieee_float.h:85
@ ROUND_TO_ZERO
Definition ieee_float.h:83
@ ROUND_TO_PLUS_INF
Definition ieee_float.h:81
@ UNKNOWN
Definition ieee_float.h:84
@ ROUND_TO_AWAY
Definition ieee_float.h:80
@ ROUND_TO_EVEN
Definition ieee_float.h:79
@ ROUND_TO_MINUS_INF
Definition ieee_float.h:82
void from_double(const double d)
Definition ieee_float.cpp:1121
void change_spec(const ieee_float_spect &dest_spec)
Definition ieee_float.cpp:1076
void align()
Definition ieee_float.cpp:505
friend bool operator<=(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:977
friend bool operator>(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:997
void print(std::ostream &out) const
Definition ieee_float.cpp:81
BigInt exponent
Definition ieee_float.h:297
static ieee_floatt fltmax(const ieee_float_spect &_spec)
Definition ieee_float.h:142
@ other
Definition converter_compare.cpp:887
double exp(double x)
Definition exp.c:84
bool operator>=(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:1002
bool operator!=(const ieee_float_spect &a, const ieee_float_spect &b)
Definition ieee_float.h:65
bool operator<(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:931
std::ostream & operator<<(std::ostream &, const ieee_floatt &)
Definition ieee_float.h:256
bool operator==(const ieee_float_spect &a, const ieee_float_spect &b)
Definition ieee_float.h:59
bool operator<=(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:977
bool operator>(const ieee_floatt &a, const ieee_floatt &b)
Definition ieee_float.cpp:997
irep_container< type2t > type2tc
Definition irep2.h:430