MCKL
Monte Carlo Kernel Library
Public Member Functions | List of all members
mckl::SMCEstimator< T, U > Class Template Reference

SMC estimator. More...

#include <mckl/algorithm/smc.hpp>

Inherits mckl::Estimator< U, std::size_t, std::size_t, Particle< T > &, U *>.

Public Member Functions

 SMCEstimator ()
 
 SMCEstimator (std::size_t dim)
 
template<typename Eval >
 SMCEstimator (std::size_t dim, Eval &&eval, MatrixLayout layout=RowMajor, bool record_only=false)
 
template<typename Eval >
void estimate (Eval &&eval, MatrixLayout layout=RowMajor, bool record_only=false)
 Set a new evaluation object. More...
 
void estimate (std::size_t iter, Particle< T > &particle)
 Perform the evaluation given the iteration number and the particle system. More...
 
bool record_only () const
 If this is a record only estimator. More...
 
- Public Member Functions inherited from mckl::Estimator< U, std::size_t, std::size_t, Particle< T > &, U *>
 Estimator ()=default
 
 Estimator (std::size_t dim)
 
 Estimator (std::size_t dim, Eval &&eval)
 
OutputIter average (OutputIter first, std::size_t cut=0, std::size_t thin=1) const
 Get the average of estimates after cut iterations using every thin elements. More...
 
std::enable_if_t<!std::is_convertible< Eval, int >::value > estimate (Eval &&eval)
 Set a new estimate evaluation method. More...
 
- Public Member Functions inherited from mckl::EstimateMatrix< U >
 EstimateMatrix (size_type dim)
 
void clear ()
 Clear the estimate matrix but preserve the dimension. More...
 
std::size_t dim () const noexcept
 The dimension of the estimator. More...
 
estimate_range estimate (size_type i)
 Range of an estimate. More...
 
const_estimate_range estimate (size_type i) const
 Range of an estimate. More...
 
U * insert_estimate ()
 Add space for a new estimate, return a pointer to the new row. More...
 
void insert_estimate (InputIter first)
 Add a new estimate to the bottom of the matrix. More...
 
void insert_estimate (size_type i, InputIter first)
 Add a new estimate into the matrix given iteration number. More...
 
std::size_t num_iter () const noexcept
 The number of iterations stored in the estimate matrix. More...
 
void reserve (std::size_t n)
 Reserve space for additional iterations. More...
 
variable_range variable (size_type j)
 Range of a variable. More...
 
const_variable_range variable (size_type j) const
 Range of a variable. More...
 
- Public Member Functions inherited from mckl::Matrix< U, RowMajor >
 Matrix () noexcept(std::is_nothrow_default_constructible< Vector< U, Allocator< U > >>::value)
 Construct an empty matrix. More...
 
 Matrix (size_type nrow, size_type ncol)
 Construct an nrow by ncol matrix. More...
 
 Matrix (const Matrix &)=default
 Copy constructor. More...
 
 Matrix (Matrix &&other) noexcept(std::is_nothrow_move_constructible< Vector< U, Allocator< U > >>::value)
 Move constructor. More...
 
reference at (size_type i, size_type j)
 Access an element in the matrix with bound checking. More...
 
const_reference at (size_type i, size_type j) const
 Access an element in the matrix with bound checking. More...
 
iterator begin ()
 Iterator to the upper left corner of the matrix. More...
 
const_iterator begin () const
 Iterator to the upper left corner of the matrix. More...
 
const_iterator cbegin () const
 Iterator to the upper left corner of the matrix. More...
 
const_col_range ccol (size_type i) const
 Range of a column. More...
 
const_iterator cend () const
 Iterator to one pass the lower right corner of the matrix. More...
 
void clear ()
 Clear the matrix of all elements. More...
 
col_range col (size_type i)
 Range of a column. More...
 
const_col_range col (size_type i) const
 Range of a column. More...
 
col_iterator col_begin (size_type i)
 Iterator to the beginning of a column. More...
 
const_col_iterator col_begin (size_type j) const
 Iterator to the beginning of a column. More...
 
const_col_iterator col_cbegin (size_type j) const
 Iterator to the beginning of a column. More...
 
const_col_iterator col_cend (size_type j) const
 Iterator to one pass the end of a column. More...
 
const_reverse_col_iterator col_crbegin (size_type j) const
 Iterator to the end of a column. More...
 
const_reverse_col_iterator col_crend (size_type j) const
 Iterator to one before the beginning of a column. More...
 
pointer col_data (size_type j)
 Pointer to the beginning of a column. More...
 
const_pointer col_data (size_type j) const
 Pointer to the beginning of a column. More...
 
col_iterator col_end (size_type j)
 Iterator to one pass the end of a column. More...
 
const_col_iterator col_end (size_type j) const
 Iterator to one pass the end of a column. More...
 
reverse_col_iterator col_rbegin (size_type j)
 Iterator to the end of a column. More...
 
const_reverse_col_iterator col_rbegin (size_type j) const
 Iterator to the end of a column. More...
 
reverse_col_iterator col_rend (size_type j)
 Iterator to one before the beginning of a column. More...
 
const_reverse_col_iterator col_rend (size_type j) const
 Iterator to one before the beginning of a column. More...
 
size_type col_stride () const
 The stride size of column-wise access through col_data() More...
 
const_reverse_iterator crbegin () const
 Iterator to the lower right corner of the matrix. More...
 
const_reverse_col_range crcol (size_type i) const
 Range of a column in reverse order. More...
 
const_reverse_iterator crend () const
 Iterator one before the upper left corner of the matrix. More...
 
const_row_range crow (size_type i) const
 Range of a row. More...
 
const_reverse_row_range crrow (size_type i) const
 Range of a row in reverse order. More...
 
pointer data ()
 Pointer to the upper left corner of the matrix. More...
 
const_pointer data () const
 Pointer to the upper left corner of the matrix. More...
 
bool empty () const
 If the matrix is empty, i.e., nrow() * ncol() == 0 More...
 
iterator end ()
 Iterator to one pass the lower right corner of the matrix. More...
 
const_iterator end () const
 Iterator to one pass the lower right corner of the matrix. More...
 
allocator_type get_allocator () const
 Return the associated allocator. More...
 
size_type ldim () const
 The number of elements in the leading dimension. More...
 
size_type ncol () const
 The number of columns. More...
 
size_type nrow () const
 The number of rows. More...
 
 operator transpose_type () const
 Convert to a matrix with a different storage layout. More...
 
reference operator() (size_type i, size_type j)
 Access an element in the matrix. More...
 
const_reference operator() (size_type i, size_type j) const
 Access an element in the matrix. More...
 
Matrixoperator= (const Matrix &)=default
 Copy assignment operator. More...
 
Matrixoperator= (Matrix &&other) noexcept(noexcept(data_.swap(other.data_)))
 Move assignment operator. More...
 
void push_back_col (InputIter first)
 Insert a new coloumn at the right. More...
 
void push_back_row (InputIter first)
 Insert a new row at the bottom. More...
 
reverse_iterator rbegin ()
 Iterator to the lower right corner of the matrix. More...
 
const_reverse_iterator rbegin () const
 Iterator to the lower right corner of the matrix. More...
 
reverse_col_range rcol (size_type i)
 Range of a column in reverse order. More...
 
const_reverse_col_range rcol (size_type i) const
 Range of a column in reverse order. More...
 
reverse_iterator rend ()
 Iterator one before the upper left corner of the matrix. More...
 
const_reverse_iterator rend () const
 Iterator one before the upper left corner of the matrix. More...
 
void reserve (size_type n, size_type m)
 Reserve storage space for the matrix. More...
 
void resize (size_type nrow, size_type ncol)
 Resize the matrix. More...
 
row_range row (size_type i)
 Range of a row. More...
 
const_row_range row (size_type i) const
 Range of a row. More...
 
row_iterator row_begin (size_type i)
 Iterator to the beginning of a row. More...
 
const_row_iterator row_begin (size_type i) const
 Iterator to the beginning of a row. More...
 
const_row_iterator row_cbegin (size_type i) const
 Iterator to the beginning of a row. More...
 
const_row_iterator row_cend (size_type i) const
 Iterator to one pass the end of a row. More...
 
const_reverse_row_iterator row_crbegin (size_type i) const
 Iterator to the end of a row. More...
 
const_reverse_row_iterator row_crend (size_type i) const
 Iterator to one before the beginning of a row. More...
 
pointer row_data (size_type i)
 Pointer to the first element of a row. More...
 
const_pointer row_data (size_type i) const
 Pointer to the first element of a row. More...
 
row_iterator row_end (size_type i)
 Iterator to one pass the end of a row. More...
 
const_row_iterator row_end (size_type i) const
 Iterator to one pass the end of a row. More...
 
reverse_row_iterator row_rbegin (size_type i)
 Iterator to the end of a row. More...
 
const_reverse_row_iterator row_rbegin (size_type i) const
 Iterator to the end of a row. More...
 
reverse_row_iterator row_rend (size_type i)
 Iterator to one before the beginning of a row. More...
 
const_reverse_row_iterator row_rend (size_type i) const
 Iterator to one before the beginning of a row. More...
 
size_type row_stride () const
 The stride of row-wise access through row_data() More...
 
reverse_row_range rrow (size_type i)
 Range of a row in reverse order. More...
 
const_reverse_row_range rrow (size_type i) const
 Range of a row in reverse order. More...
 
void shrink_to_fit ()
 Release memory no longer needed. More...
 
size_type size () const
 The total number of elements. More...
 
void swap (Matrix &other) noexcept(noexcept(data_.swap(other.data_)))
 Swap two matrices. More...
 

Additional Inherited Members

- Public Types inherited from mckl::EstimateMatrix< U >
using const_estimate_range = typename matrix_type::const_row_range
 
using const_variable_range = typename matrix_type::const_col_range
 
using estimate_range = typename matrix_type::row_range
 
using matrix_type = Matrix< U, RowMajor >
 
using size_type = typename matrix_type::size_type
 
using value_type = typename matrix_type::value_type
 
using variable_range = typename matrix_type::col_range
 
- Public Types inherited from mckl::Matrix< U, RowMajor >
using allocator_type = Allocator< U >
 
using col_iterator = std::conditional_t< Layout==ColMajor, pointer, StepIterator< pointer > >
 
using col_range = Range< col_iterator >
 
using const_col_iterator = std::conditional_t< Layout==ColMajor, const_pointer, StepIterator< const_pointer > >
 
using const_col_range = Range< const_col_iterator >
 
using const_iterator = const_pointer
 
using const_pointer = const value_type *
 
using const_reference = const value_type &
 
using const_reverse_col_iterator = std::reverse_iterator< const_col_iterator >
 
using const_reverse_col_range = Range< const_reverse_col_iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using const_reverse_row_iterator = std::reverse_iterator< const_row_iterator >
 
using const_reverse_row_range = Range< const_reverse_row_iterator >
 
using const_row_iterator = std::conditional_t< Layout==RowMajor, const_pointer, StepIterator< const_pointer > >
 
using const_row_range = Range< const_row_iterator >
 
using difference_type = std::ptrdiff_t
 
using iterator = pointer
 
using pointer = value_type *
 
using reference = value_type &
 
using reverse_col_iterator = std::reverse_iterator< col_iterator >
 
using reverse_col_range = Range< reverse_col_iterator >
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using reverse_row_iterator = std::reverse_iterator< row_iterator >
 
using reverse_row_range = Range< reverse_row_iterator >
 
using row_iterator = std::conditional_t< Layout==RowMajor, pointer, StepIterator< pointer > >
 
using row_range = Range< row_iterator >
 
using size_type = std::size_t
 
using transpose_type = Matrix< U, Layout==RowMajor ? ColMajor :RowMajor, Allocator< U > >
 
using value_type = U
 
- Static Public Member Functions inherited from mckl::Matrix< U, RowMajor >
static constexpr MatrixLayout layout ()
 The layout of the matrix. More...
 
- Protected Member Functions inherited from mckl::Estimator< U, std::size_t, std::size_t, Particle< T > &, U *>
void eval (CallArgs &&... args)
 

Detailed Description

template<typename T, typename U = double>
class mckl::SMCEstimator< T, U >

SMC estimator.

Definition at line 49 of file smc.hpp.

Constructor & Destructor Documentation

◆ SMCEstimator() [1/3]

template<typename T , typename U = double>
mckl::SMCEstimator< T, U >::SMCEstimator ( )
inline

Definition at line 56 of file smc.hpp.

◆ SMCEstimator() [2/3]

template<typename T , typename U = double>
mckl::SMCEstimator< T, U >::SMCEstimator ( std::size_t  dim)
inline

Definition at line 58 of file smc.hpp.

◆ SMCEstimator() [3/3]

template<typename T , typename U = double>
template<typename Eval >
mckl::SMCEstimator< T, U >::SMCEstimator ( std::size_t  dim,
Eval &&  eval,
MatrixLayout  layout = RowMajor,
bool  record_only = false 
)
inline

Definition at line 64 of file smc.hpp.

Member Function Documentation

◆ estimate() [1/2]

template<typename T , typename U = double>
template<typename Eval >
void mckl::SMCEstimator< T, U >::estimate ( Eval &&  eval,
MatrixLayout  layout = RowMajor,
bool  record_only = false 
)
inline

Set a new evaluation object.

Definition at line 78 of file smc.hpp.

◆ estimate() [2/2]

template<typename T , typename U = double>
void mckl::SMCEstimator< T, U >::estimate ( std::size_t  iter,
Particle< T > &  particle 
)
inline

Perform the evaluation given the iteration number and the particle system.

Definition at line 89 of file smc.hpp.

◆ record_only()

template<typename T , typename U = double>
bool mckl::SMCEstimator< T, U >::record_only ( ) const
inline

If this is a record only estimator.

Definition at line 74 of file smc.hpp.