CBMC
boolbv_abs.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module:
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
9
#include "
boolbv.h
"
10
11
#include "
boolbv_type.h
"
12
13
#include <
util/bitvector_types.h
>
14
15
#include <
solvers/floatbv/float_utils.h
>
16
17
bvt
boolbvt::convert_abs
(
const
abs_exprt
&expr)
18
{
19
const
bvt
&op_bv=
convert_bv
(expr.
op
());
20
21
if
(expr.
op
().
type
()!=expr.
type
())
22
return
conversion_failed
(expr);
23
24
const
bvtypet
bvtype =
get_bvtype
(expr.
type
());
25
26
if
(bvtype==
bvtypet::IS_FIXED
||
27
bvtype==
bvtypet::IS_SIGNED
||
28
bvtype==
bvtypet::IS_UNSIGNED
)
29
{
30
return
bv_utils
.
absolute_value
(op_bv);
31
}
32
else
if
(bvtype==
bvtypet::IS_FLOAT
)
33
{
34
float_utilst
float_utils(
prop
,
to_floatbv_type
(expr.
type
()));
35
return
float_utils.
abs
(op_bv);
36
}
37
38
return
conversion_failed
(expr);
39
}
bvtypet::IS_SIGNED
@ IS_SIGNED
float_utilst::abs
bvt abs(const bvt &)
Definition:
float_utils.cpp:566
float_utilst
Definition:
float_utils.h:17
float_utils.h
bvt
std::vector< literalt > bvt
Definition:
literal.h:201
to_floatbv_type
const floatbv_typet & to_floatbv_type(const typet &type)
Cast a typet to a floatbv_typet.
Definition:
bitvector_types.h:367
bvtypet::IS_FIXED
@ IS_FIXED
boolbv_type.h
get_bvtype
bvtypet get_bvtype(const typet &type)
Definition:
boolbv_type.cpp:13
boolbvt::convert_abs
virtual bvt convert_abs(const abs_exprt &expr)
Definition:
boolbv_abs.cpp:17
bvtypet::IS_UNSIGNED
@ IS_UNSIGNED
bv_utilst::absolute_value
bvt absolute_value(const bvt &op)
Definition:
bv_utils.cpp:833
bvtypet
bvtypet
Definition:
boolbv_type.h:16
exprt::type
typet & type()
Return the type of the expression.
Definition:
expr.h:84
bvtypet::IS_FLOAT
@ IS_FLOAT
boolbvt::convert_bv
virtual const bvt & convert_bv(const exprt &expr, const optionalt< std::size_t > expected_width={})
Convert expression to vector of literalts, using an internal cache to speed up conversion if availabl...
Definition:
boolbv.cpp:39
bitvector_types.h
abs_exprt
Absolute value.
Definition:
std_expr.h:378
unary_exprt::op
const exprt & op() const
Definition:
std_expr.h:326
boolbvt::bv_utils
bv_utilst bv_utils
Definition:
boolbv.h:117
boolbvt::conversion_failed
bvt conversion_failed(const exprt &expr)
Print that the expression of x has failed conversion, then return a vector of x's width.
Definition:
boolbv.cpp:83
boolbv.h
prop_conv_solvert::prop
propt & prop
Definition:
prop_conv_solver.h:130
src
solvers
flattening
boolbv_abs.cpp
Generated by
1.8.17