CBMC
Loading...
Searching...
No Matches
Classes | Functions
arith_tools.h File Reference
#include "invariant.h"
#include "mp_arith.h"
#include "std_expr.h"
#include <limits>
+ Include dependency graph for arith_tools.h:

Go to the source code of this file.

Classes

  Numerical cast provides a unified way of converting from one numerical type to another. More...
 
  Convert expression to mp_integer. More...
 
  Convert mp_integer or expr to any integral type. More...
 

Functions

  Convert a constant expression expr to an arbitrary-precision integer.
 
template<typename Target >
std::optional< Targetnumeric_cast (const exprt &arg)
  Converts an expression to any integral type.
 
template<typename Target >
  Convert an mp_integer to integral type Target An invariant will fail if the conversion is not possible.
 
template<typename Target >
  Convert an expression to integral type Target An invariant will fail if the conversion is not possible.
 
 
std::size_t  address_bits (const mp_integer &size)
  ceil(log2(size))
 
  A multi-precision implementation of the power operator.
 
 
 
 
bool  get_bvrep_bit (const irep_idt &src, std::size_t width, std::size_t bit_index)
  Get a bit with given index from bit-vector representation.
 
irep_idt  make_bvrep (const std::size_t width, const std::function< bool(std::size_t)> f)
  construct a bit-vector representation from a functor
 
irep_idt  integer2bvrep (const mp_integer &, std::size_t width)
  convert an integer to bit-vector representation with given width This uses two's complement for negative numbers.
 
  convert a bit-vector representation (possibly signed) to integer
 

Function Documentation

◆  address_bits()

std::size_t address_bits ( const mp_integersize )

ceil(log2(size))

Definition at line 190 of file arith_tools.cpp.

◆  bvrep2integer()

mp_integer bvrep2integer ( const irep_idtsrc,
std::size_t  width,
bool  is_signed 
)

convert a bit-vector representation (possibly signed) to integer

Definition at line 426 of file arith_tools.cpp.

◆  from_integer()

constant_exprt from_integer ( const mp_integerint_value,
const typettype 
)

Definition at line 100 of file arith_tools.cpp.

◆  get_bvrep_bit()

bool get_bvrep_bit ( const irep_idtsrc,
std::size_t  width,
std::size_t  bit_index 
)

Get a bit with given index from bit-vector representation.

Parameters
src the bitvector representation
width the number of bits in the bitvector
bit_index index (0 is the least significant)

Definition at line 286 of file arith_tools.cpp.

◆  integer2bvrep()

irep_idt integer2bvrep ( const mp_integersrc,
std::size_t  width 
)

convert an integer to bit-vector representation with given width This uses two's complement for negative numbers.

If the value is out of range, it is 'wrapped around'.

Definition at line 404 of file arith_tools.cpp.

◆  is_power_of_two()

bool is_power_of_two ( const mp_integern )

Definition at line 205 of file arith_tools.cpp.

◆  make_bvrep()

irep_idt make_bvrep ( const std::size_t  width,
const std::function< bool(std::size_t)>  f 
)

construct a bit-vector representation from a functor

Parameters
width the width of the bit-vector
f the functor – the parameter is the bit index
Returns
new bitvector representation

Definition at line 330 of file arith_tools.cpp.

◆  mp_max()

void mp_max ( mp_integera,
const mp_integerb 
)

Definition at line 276 of file arith_tools.cpp.

◆  mp_min()

void mp_min ( mp_integera,
const mp_integerb 
)

Definition at line 270 of file arith_tools.cpp.

◆  numeric_cast()

template<typename Target >
std::optional< Target > numeric_cast ( const exprtarg )

Converts an expression to any integral type.

Template Parameters
Target type to convert to
Parameters
arg expression to convert
Returns
optional integer of type Target if conversion is possible, empty optional otherwise.

Definition at line 124 of file arith_tools.h.

◆  numeric_cast_v() [1/2]

template<typename Target >
Target numeric_cast_v ( const constant_exprtarg )

Convert an expression to integral type Target An invariant will fail if the conversion is not possible.

Template Parameters
Target type to convert to
Parameters
arg constant expression
Returns
value of type Target

Definition at line 148 of file arith_tools.h.

◆  numeric_cast_v() [2/2]

template<typename Target >
Target numeric_cast_v ( const mp_integerarg )

Convert an mp_integer to integral type Target An invariant will fail if the conversion is not possible.

Template Parameters
Target type to convert to
Parameters
arg mp_integer
Returns
value of type Target

Definition at line 135 of file arith_tools.h.

◆  power()

mp_integer power ( const mp_integerbase,
const mp_integerexponent 
)

A multi-precision implementation of the power operator.

parameters: Two mp_integers, base and exponent
Returns
One mp_integer with the value base^{exponent}

Definition at line 219 of file arith_tools.cpp.

◆  to_integer()

bool to_integer ( const constant_exprtexpr,
mp_integerint_value 
)

Convert a constant expression expr to an arbitrary-precision integer.

Parameters
expr Source expression
[out] int_value Integer value (only modified if conversion succeeds)
Returns
False if, and only if, the conversion was successful.

Definition at line 21 of file arith_tools.cpp.

AltStyle によって変換されたページ (->オリジナル) /