autoppl  v0.8
A C++ template library for probabilistic programming
ppl::util Namespace Reference

Namespaces

 details
 

Classes

struct  BaseCRTP
 
struct  counting_iterator
 
struct  data_traits
 
struct  DataBase
 
struct  dist_expr_traits
 
struct  DistExprBase
 
struct  invalid_tag
 
struct  model_expr_traits
 
struct  ModelExprBase
 
struct  OffsetPack
 
struct  param_traits
 
struct  ParamBase
 
struct  program_expr_traits
 
struct  ProgramExprBase
 
struct  ProgressLogger
 
struct  PtrPack
 
struct  range
 
struct  StopWatch
 
struct  tparam_traits
 
struct  TParamBase
 
struct  var_expr_traits
 
struct  var_traits
 
struct  VarBase
 
struct  VarExprBase
 

Typedefs

using cont_ptr_pack_t = PtrPack< util::cont_param_t *, util::cont_param_t *, util::cont_param_t *, util::cont_param_t *, util::cont_param_t * >
 
using disc_ptr_pack_t = PtrPack< util::disc_param_t *, void *, util::disc_param_t *, void *, util::disc_param_t * >
 
using dist_value_t = double
 
using cont_param_t = double
 
using disc_param_t = int32_t
 
template<class T >
using shape_traits = ad::util::shape_traits< T >
 
template<class V , class T >
using var_t = typename details::var< V, T >::type
 
template<class T >
using convert_to_param_t = typename details::convert_to_param< T >::type
 
template<class T >
using convert_to_program_t = typename details::convert_to_program< T >::type
 

Functions

template<class IntType >
constexpr bool operator== (const counting_iterator< IntType > &it1, const counting_iterator< IntType > &it2)
 
template<class IntType >
constexpr bool operator!= (const counting_iterator< IntType > &it1, const counting_iterator< IntType > &it2)
 
template<class UCValPtrType = std::nullptr_t, class UCAdjPtrType = std::nullptr_t, class TPValPtrType = std::nullptr_t, class TPAdjPtrType = std::nullptr_t, class CValPtrType = std::nullptr_t>
constexpr auto make_ptr_pack (UCValPtrType _uc_val=nullptr, UCAdjPtrType _uc_adj=nullptr, TPValPtrType _tp_val=nullptr, TPAdjPtrType _tp_adj=nullptr, CValPtrType _c_val=nullptr, size_t *_v_val=nullptr)
 
 DEFINE_HAS_TYPE (value_t)
 
 DEFINE_HAS_TYPE (pointer_t)
 
 DEFINE_HAS_TYPE (const_pointer_t)
 
 DEFINE_HAS_TYPE (id_t)
 
 DEFINE_HAS_TYPE (index_t)
 
 DEFINE_HAS_TYPE (vec_t)
 
 DEFINE_HAS_TYPE (mat_t)
 
 DEFINE_HAS_TYPE (shape_t)
 
 DEFINE_HAS_TYPE (dist_value_t)
 
 DEFINE_HAS_FUNC (size)
 
 DEFINE_HAS_FUNC (id)
 
 DEFINE_HAS_FUNC (get_variable)
 
 DEFINE_HAS_FUNC (get_distribution)
 
 DEFINE_ASSERT_TWO_PARAM (is_explicitly_convertible_v)
 
template<class ValueType , class ShapeType >
constexpr auto make_val (size_t rows=1, size_t cols=1)
 
template<class T >
constexpr size_t size (const T &x)
 
template<class T >
constexpr size_t rows (const T &x)
 
template<class T >
constexpr size_t cols (const T &x)
 
template<class T >
auto & get (T &&x)
 
template<class T , class ValPtrType >
void bind (T &x, ValPtrType begin, size_t rows=1, size_t cols=1)
 
template<class T >
constexpr auto to_array (const T &x)
 

Variables

template<class T >
constexpr bool dist_expr_is_base_of_v
 
template<class T >
constexpr bool is_dist_expr_v
 
template<class T >
constexpr bool model_expr_is_base_of_v
 
template<class T >
constexpr bool is_model_expr_v
 
template<class T >
constexpr bool program_expr_is_base_of_v
 
template<class T >
constexpr bool is_program_expr_v
 
template<class T >
constexpr bool is_scl_v = ad::util::is_scl_v<T>
 
template<class T >
constexpr bool is_vec_v = ad::util::is_vec_v<T>
 
template<class T >
constexpr bool is_mat_v = ad::util::is_mat_v<T>
 
template<class T >
constexpr bool is_shape_v
 
template<class T >
constexpr bool is_shape_tag_v
 
template<class T >
constexpr bool is_valid_dist_param_v
 
template<class T1 , class T2 >
constexpr bool is_not_both_arithmetic_v
 
template<class T >
constexpr bool is_valid_op_param_v
 
template<class From , class To >
constexpr bool is_explicitly_convertible_v
 
template<class T >
constexpr bool is_cont_v = std::is_floating_point_v<T>
 
template<class T >
constexpr bool is_disc_v = std::is_integral_v<T>
 
template<class T >
constexpr bool var_expr_is_base_of_v
 
template<class T >
constexpr bool is_var_expr_v
 
template<class T >
constexpr bool param_is_base_of_v
 
template<class T >
constexpr bool tparam_is_base_of_v
 
template<class T >
constexpr bool data_is_base_of_v
 
template<class T >
constexpr bool is_param_v
 
template<class T >
constexpr bool is_tparam_v
 
template<class T >
constexpr bool is_data_v
 
template<class T >
constexpr bool is_var_v
 
template<class T >
constexpr bool is_dist_assignable_v
 

Typedef Documentation

◆ cont_param_t

using ppl::util::cont_param_t = typedef double

◆ cont_ptr_pack_t

◆ convert_to_param_t

template<class T >
using ppl::util::convert_to_param_t = typedef typename details::convert_to_param<T>::type

◆ convert_to_program_t

template<class T >
using ppl::util::convert_to_program_t = typedef typename details::convert_to_program<T>::type

◆ disc_param_t

using ppl::util::disc_param_t = typedef int32_t

◆ disc_ptr_pack_t

◆ dist_value_t

using ppl::util::dist_value_t = typedef double

◆ shape_traits

template<class T >
using ppl::util::shape_traits = typedef ad::util::shape_traits<T>

◆ var_t

template<class V , class T >
using ppl::util::var_t = typedef typename details::var<V, T>::type

Function Documentation

◆ bind()

template<class T , class ValPtrType >
void ppl::util::bind ( T &  x,
ValPtrType  begin,
size_t  rows = 1,
size_t  cols = 1 
)

◆ cols()

template<class T >
constexpr size_t ppl::util::cols ( const T &  x)
constexpr

◆ DEFINE_ASSERT_TWO_PARAM()

ppl::util::DEFINE_ASSERT_TWO_PARAM ( is_explicitly_convertible_v  )

◆ DEFINE_HAS_FUNC() [1/4]

ppl::util::DEFINE_HAS_FUNC ( get_distribution  )

◆ DEFINE_HAS_FUNC() [2/4]

ppl::util::DEFINE_HAS_FUNC ( get_variable  )

◆ DEFINE_HAS_FUNC() [3/4]

ppl::util::DEFINE_HAS_FUNC ( id  )

◆ DEFINE_HAS_FUNC() [4/4]

ppl::util::DEFINE_HAS_FUNC ( size  )

◆ DEFINE_HAS_TYPE() [1/9]

ppl::util::DEFINE_HAS_TYPE ( const_pointer_t  )

◆ DEFINE_HAS_TYPE() [2/9]

ppl::util::DEFINE_HAS_TYPE ( dist_value_t  )

◆ DEFINE_HAS_TYPE() [3/9]

ppl::util::DEFINE_HAS_TYPE ( id_t  )

◆ DEFINE_HAS_TYPE() [4/9]

ppl::util::DEFINE_HAS_TYPE ( index_t  )

◆ DEFINE_HAS_TYPE() [5/9]

ppl::util::DEFINE_HAS_TYPE ( mat_t  )

◆ DEFINE_HAS_TYPE() [6/9]

ppl::util::DEFINE_HAS_TYPE ( pointer_t  )

◆ DEFINE_HAS_TYPE() [7/9]

ppl::util::DEFINE_HAS_TYPE ( shape_t  )

◆ DEFINE_HAS_TYPE() [8/9]

ppl::util::DEFINE_HAS_TYPE ( value_t  )

◆ DEFINE_HAS_TYPE() [9/9]

ppl::util::DEFINE_HAS_TYPE ( vec_t  )

◆ get()

template<class T >
auto& ppl::util::get ( T &&  x)

◆ make_ptr_pack()

template<class UCValPtrType = std::nullptr_t, class UCAdjPtrType = std::nullptr_t, class TPValPtrType = std::nullptr_t, class TPAdjPtrType = std::nullptr_t, class CValPtrType = std::nullptr_t>
constexpr auto ppl::util::make_ptr_pack ( UCValPtrType  _uc_val = nullptr,
UCAdjPtrType  _uc_adj = nullptr,
TPValPtrType  _tp_val = nullptr,
TPAdjPtrType  _tp_adj = nullptr,
CValPtrType  _c_val = nullptr,
size_t *  _v_val = nullptr 
)
inlineconstexpr

◆ make_val()

template<class ValueType , class ShapeType >
constexpr auto ppl::util::make_val ( size_t  rows = 1,
size_t  cols = 1 
)
constexpr

◆ operator!=()

template<class IntType >
constexpr bool ppl::util::operator!= ( const counting_iterator< IntType > &  it1,
const counting_iterator< IntType > &  it2 
)
inlineconstexpr

◆ operator==()

template<class IntType >
constexpr bool ppl::util::operator== ( const counting_iterator< IntType > &  it1,
const counting_iterator< IntType > &  it2 
)
inlineconstexpr

◆ rows()

template<class T >
constexpr size_t ppl::util::rows ( const T &  x)
constexpr

◆ size()

template<class T >
constexpr size_t ppl::util::size ( const T &  x)
constexpr

◆ to_array()

template<class T >
constexpr auto ppl::util::to_array ( const T &  x)
inlineconstexpr

Variable Documentation

◆ data_is_base_of_v

template<class T >
constexpr bool ppl::util::data_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<DataBase<T>, T>

◆ dist_expr_is_base_of_v

template<class T >
constexpr bool ppl::util::dist_expr_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<DistExprBase<T>, T>

◆ is_cont_v

template<class T >
constexpr bool ppl::util::is_cont_v = std::is_floating_point_v<T>
inlineconstexpr

◆ is_data_v

template<class T >
constexpr bool ppl::util::is_data_v
inlineconstexpr
Initial value:
=
data_is_base_of_v<T> &&
has_type_id_t_v<T> &&
has_func_id_v<const T>

◆ is_disc_v

template<class T >
constexpr bool ppl::util::is_disc_v = std::is_integral_v<T>
inlineconstexpr

◆ is_dist_assignable_v

template<class T >
constexpr bool ppl::util::is_dist_assignable_v
inlineconstexpr
Initial value:
=
is_param_v<T> ||
is_data_v<T>

◆ is_dist_expr_v

template<class T >
constexpr bool ppl::util::is_dist_expr_v
inlineconstexpr
Initial value:
=
dist_expr_is_base_of_v<T> &&
has_type_value_t_v<T> &&
has_type_dist_value_t_v<T>

A distribution expression is any class that satisfies the following concept:

◆ is_explicitly_convertible_v

template<class From , class To >
constexpr bool ppl::util::is_explicitly_convertible_v
inlineconstexpr
Initial value:
=
std::is_constructible_v<To, From> &&
!std::is_convertible_v<From, To>

Checks if type From can be explicitly converted to type To.

◆ is_mat_v

template<class T >
constexpr bool ppl::util::is_mat_v = ad::util::is_mat_v<T>
inlineconstexpr

◆ is_model_expr_v

template<class T >
constexpr bool ppl::util::is_model_expr_v
inlineconstexpr
Initial value:
=
model_expr_is_base_of_v<T> &&
has_type_dist_value_t_v<T>

◆ is_not_both_arithmetic_v

template<class T1 , class T2 >
constexpr bool ppl::util::is_not_both_arithmetic_v
inlineconstexpr
Initial value:
=
!(std::is_arithmetic_v<std::decay_t<T1>> &&
std::is_arithmetic_v<std::decay_t<T2>>)

Checks if the decayed types of T1 and T2 are not both arithmetic types.

◆ is_param_v

template<class T >
constexpr bool ppl::util::is_param_v
inlineconstexpr
Initial value:
=
param_is_base_of_v<T> &&
has_type_id_t_v<T> &&
has_func_id_v<const T>

◆ is_program_expr_v

template<class T >
constexpr bool ppl::util::is_program_expr_v
inlineconstexpr
Initial value:
=
program_expr_is_base_of_v<T>

◆ is_scl_v

template<class T >
constexpr bool ppl::util::is_scl_v = ad::util::is_scl_v<T>
inlineconstexpr

◆ is_shape_tag_v

template<class T >
constexpr bool ppl::util::is_shape_tag_v
inlineconstexpr
Initial value:
=
std::is_same_v<T, ppl::scl> ||
std::is_same_v<T, ppl::vec> ||
std::is_same_v<T, ppl::mat>

Checks if T is a shape tag.

◆ is_shape_v

template<class T >
constexpr bool ppl::util::is_shape_v
inlineconstexpr
Initial value:
=
is_scl_v<T> ||
is_vec_v<T> ||
is_mat_v<T>

◆ is_tparam_v

template<class T >
constexpr bool ppl::util::is_tparam_v
inlineconstexpr
Initial value:
=
tparam_is_base_of_v<T> &&
has_type_id_t_v<T> &&
has_func_id_v<const T>

◆ is_valid_dist_param_v

template<class T >
constexpr bool ppl::util::is_valid_dist_param_v
inlineconstexpr
Initial value:
=
std::is_arithmetic_v<std::decay_t<T>> ||
ad::util::is_eigen_v<std::decay_t<T>> ||
util::is_var_v<std::decay_t<T>> ||
util::is_var_expr_v<std::decay_t<T>>

Checks if valid distribution parameter:

  • can be arithmetic
  • if not arithmetic, must be variable or variable expression

◆ is_valid_op_param_v

template<class T >
constexpr bool ppl::util::is_valid_op_param_v
inlineconstexpr
Initial value:
=
std::is_arithmetic_v<std::decay_t<T>> ||
util::is_var_v<std::decay_t<T>> ||
util::is_var_expr_v<std::decay_t<T>>

◆ is_var_expr_v

template<class T >
constexpr bool ppl::util::is_var_expr_v
inlineconstexpr
Initial value:
=
is_shape_v<T> &&
var_expr_is_base_of_v<T> &&
has_type_value_t_v<T>

◆ is_var_v

template<class T >
constexpr bool ppl::util::is_var_v
inlineconstexpr
Initial value:
=
is_param_v<T> ||
is_tparam_v<T> ||
is_data_v<T>

◆ is_vec_v

template<class T >
constexpr bool ppl::util::is_vec_v = ad::util::is_vec_v<T>
inlineconstexpr

◆ model_expr_is_base_of_v

template<class T >
constexpr bool ppl::util::model_expr_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<ModelExprBase<T>, T>

Checks if ModelExprBase<T> is base of type T

◆ param_is_base_of_v

template<class T >
constexpr bool ppl::util::param_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<ParamBase<T>, T>

◆ program_expr_is_base_of_v

template<class T >
constexpr bool ppl::util::program_expr_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<ProgramExprBase<T>, T>

◆ tparam_is_base_of_v

template<class T >
constexpr bool ppl::util::tparam_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<TParamBase<T>, T>

◆ var_expr_is_base_of_v

template<class T >
constexpr bool ppl::util::var_expr_is_base_of_v
inlineconstexpr
Initial value:
=
std::is_base_of_v<VarExprBase<T>, T>