34 v=i*
power(2, spec.get_fraction_bits());
40 return v/
power(2, spec.get_fraction_bits());
49 assert(spec.width!=0);
56 std::size_t old_fraction_bits=spec.width-spec.integer_bits;
61 if(new_fraction_bits>old_fraction_bits)
62 result=v*
power(2, new_fraction_bits-old_fraction_bits);
63 else if(new_fraction_bits<old_fraction_bits)
116 return v==
power(2, spec.get_fraction_bits())*i;
123 std::size_t fraction_bits=spec.get_fraction_bits();
128 if(int_value.is_negative())
134 std::string base_10_string=
137 while(base_10_string.size()<=fraction_bits)
138 base_10_string=
"0"+base_10_string;
140 std::string integer_part=
141 std::string(base_10_string, 0, base_10_string.size()-fraction_bits);
143 std::string fraction_part=
144 std::string(base_10_string, base_10_string.size()-fraction_bits);
149 while(!fraction_part.empty() &&
150 fraction_part[fraction_part.size()-1]==
'0')
151 fraction_part.resize(fraction_part.size()-1);
153 if(!fraction_part.empty())
154 dest+=
"."+fraction_part;
std::size_t get_fraction_bits() const
const std::string & id2string(const irep_idt &d)
fixedbvt & operator*=(const fixedbvt &other)
const std::string integer2string(const mp_integer &n, unsigned base)
std::size_t get_integer_bits() const
std::string from_expr(const namespacet &ns, const irep_idt &identifier, const exprt &expr)
const irep_idt & get_value() const
void from_expr(const constant_exprt &expr)
const mp_integer binary2integer(const std::string &n, bool is_signed)
convert binary string representation to mp_integer
A constant literal expression.
bool operator==(int i) const
void round(const fixedbv_spect &dest_spec)
void set_value(const irep_idt &value)
void from_integer(const mp_integer &i)
fixedbvt & operator/=(const fixedbvt &other)
void set_integer_bits(std::size_t b)
API to expression classes.
std::string format(const format_spect &format_spec) const
constant_exprt to_expr() const
Fixed-width bit-vector with signed fixed-point interpretation.
std::size_t get_width() const
mp_integer to_integer() const
const fixedbv_typet & to_fixedbv_type(const typet &type)
Cast a generic typet to a fixedbv_typet.
const std::string integer2binary(const mp_integer &n, std::size_t width)
void set_width(std::size_t width)