value_type * get_scaling_factors () noexcept
Returns a pointer to the scaling factors.
const value_type * get_const_scaling_factors () const noexcept
Returns a pointer to the scaling factors.
index_type * get_permutation () noexcept
Returns a pointer to the permutation indices.
const index_type * get_const_permutation () const noexcept
Returns a pointer to the permutation indices.
std::unique_ptr< ScaledPermutation > compute_inverse () const
Returns the inverse of this operator as a scaled permutation.
std::unique_ptr< ScaledPermutation > compose (ptr_param < const ScaledPermutation > other) const
Composes this scaled permutation with another scaled permutation.
void write (gko::matrix_data < value_type, index_type > &data) const override
const ScaledPermutation< default_precision , int32 > * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x) const
ScaledPermutation< default_precision , int32 > * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x)
const ScaledPermutation< default_precision , int32 > * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x) const
ScaledPermutation< default_precision , int32 > * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x)
std::unique_ptr< ScaledPermutation< default_precision , int32 > > create_default (std::shared_ptr< const Executor > exec) const
std::unique_ptr< ScaledPermutation< default_precision , int32 > > create_default () const
std::unique_ptr< ScaledPermutation< default_precision , int32 > > clone (std::shared_ptr< const Executor > exec) const
std::unique_ptr< ScaledPermutation< default_precision , int32 > > clone () const
ScaledPermutation< default_precision , int32 > * copy_from (const PolymorphicObject *other)
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, ScaledPermutation< default_precision , int32 > > * copy_from (std::unique_ptr< Derived > &&other)
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, ScaledPermutation< default_precision , int32 > > * copy_from (const std::unique_ptr< Derived > &other)
ScaledPermutation< default_precision , int32 > * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
ScaledPermutation< default_precision , int32 > * move_from (ptr_param < PolymorphicObject > other)
ScaledPermutation< default_precision , int32 > * clear ()
LinOp * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x)
Applies a linear operator to a vector (or a sequence of vectors).
const LinOp * apply (ptr_param < const LinOp > b, ptr_param < LinOp > x) const
LinOp * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x)
Performs the operation x = alpha * op(b) + beta * x.
const LinOp * apply (ptr_param < const LinOp > alpha, ptr_param < const LinOp > b, ptr_param < const LinOp > beta, ptr_param < LinOp > x) const
const dim < 2 > & get_size () const noexcept
Returns the size of the operator.
virtual bool apply_uses_initial_guess () const
Returns true if the linear operator uses the data given in x as an initial guess.
LinOp & operator= (const LinOp &)=default
Copy-assigns a LinOp .
LinOp & operator= (LinOp &&other)
Move-assigns a LinOp .
LinOp (const LinOp &)=default
Copy-constructs a LinOp .
LinOp (LinOp &&other)
Move-constructs a LinOp .
std::unique_ptr< LinOp > create_default (std::shared_ptr< const Executor > exec) const
std::unique_ptr< LinOp > create_default () const
std::unique_ptr< LinOp > clone (std::shared_ptr< const Executor > exec) const
std::unique_ptr< LinOp > clone () const
LinOp * copy_from (const PolymorphicObject *other)
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, LinOp > * copy_from (std::unique_ptr< Derived > &&other)
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, LinOp > * copy_from (const std::unique_ptr< Derived > &other)
LinOp * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
LinOp * move_from (ptr_param < PolymorphicObject > other)
LinOp * clear ()
PolymorphicObject & operator= (const PolymorphicObject &)
std::unique_ptr< PolymorphicObject > create_default (std::shared_ptr< const Executor > exec) const
Creates a new "default" object of the same dynamic type as this object.
std::unique_ptr< PolymorphicObject > create_default () const
Creates a new "default" object of the same dynamic type as this object.
std::unique_ptr< PolymorphicObject > clone (std::shared_ptr< const Executor > exec) const
Creates a clone of the object.
std::unique_ptr< PolymorphicObject > clone () const
Creates a clone of the object.
PolymorphicObject * copy_from (const PolymorphicObject *other)
Copies another object into this object.
template<typename Derived , typename Deleter >
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, PolymorphicObject > * copy_from (std::unique_ptr< Derived, Deleter > &&other)
Moves another object into this object.
template<typename Derived , typename Deleter >
std::enable_if_t< std::is_base_of< PolymorphicObject , std::decay_t< Derived > >::value, PolymorphicObject > * copy_from (const std::unique_ptr< Derived, Deleter > &other)
Copies another object into this object.
PolymorphicObject * copy_from (const std::shared_ptr< const PolymorphicObject > &other)
Copies another object into this object.
PolymorphicObject * move_from (ptr_param < PolymorphicObject > other)
Moves another object into this object.
PolymorphicObject * clear ()
Transforms the object into its default state.
std::shared_ptr< const Executor > get_executor () const noexcept
Returns the Executor of the object.
void add_logger (std::shared_ptr< const Logger > logger) override
Adds a new logger to the list of subscribed loggers.
void remove_logger (const Logger *logger) override
Removes a logger from the list of subscribed loggers.
void remove_logger (ptr_param < const Logger > logger)
const std::vector< std::shared_ptr< const Logger > > & get_loggers () const override
Returns the vector containing all loggers registered at this object.
void clear_loggers () override
Remove all loggers registered at this object.
void remove_logger (ptr_param < const Logger > logger)
void convert_to (result_type *result) const override
void move_to (result_type *result) override
void convert_to (ptr_param < result_type > result) const
void move_to (ptr_param < result_type > result)
virtual void write (matrix_data < default_precision , int32 > &data) const=0
Writes a matrix to a matrix_data structure.
template<typename ValueType = default_precision, typename IndexType = int32>
class gko::matrix::ScaledPermutation< ValueType, IndexType >
ScaledPermutation is a matrix combining a permutation with scaling factors.
It is a combination of Diagonal and Permutation , and can be read as , i.e. the scaling gets applied before the permutation.
Template Parameters
IndexType index type of permutation indices
ValueType value type of the scaling factors