math::LinearOperator< Operator, VectorDomain, VectorImage > Struct Template Reference
[Concepts]

Concept LinearOperator. More...

#include <linear_operator.hpp>

Inheritance diagram for math::LinearOperator< Operator, VectorDomain, VectorImage >:

Inheritance graph
[legend]

List of all members.

Public Types

typedef associated_type result_type
 Associated type: result of multiplication; automatically deducted.
typedef associated_type assign_type
 Associated type: return type of assigning product to vector.
typedef associated_type plus_assign_type
 Associated type: return type of incrementally assigning product to vector.
typedef associated_type minus_assign_type
 Associated type: return type of decrementally assigning product to vector.

Public Member Functions

result_type operator* (Operator, VectorDomain)
 Multiplication of linear operator with vector.
assign_type operator= (VectorImage, result_type)
 Product must be assignable.
plus_assign_type operator+= (VectorImage, result_type)
 Product must be assignable with increment.
minus_assign_type operator+= (VectorImage, result_type)
 Product must be assignable with decrement.
axiom Addability (Operator a, VectorDomain x, VectorDomain y)
 Invariant: the linear projection of a sum is the sum of the linear projections.
axiom Scalability (Operator a, VectorSpace< VectorDomain >::scalar_type alpha, VectorDomain x)
 Invariant: the linear projection of a scaled vector is the scaling of the vector's linear projections.


Detailed Description

template<typename Operator, typename VectorDomain, typename VectorImage>
struct math::LinearOperator< Operator, VectorDomain, VectorImage >

Concept LinearOperator.

Linear operator from one vector space into another one.

Parameters:
Operator The type of the operator, e.g., some matrix type
VectorDomain The the type of a vector in the domain vector space
VectorImage The the type of a vector in the image vector space
Associated Types:
  • result_type
  • assign_type
  • plus_assign_type
  • minus_assign_type
Requires:
Notation:
a Object of type Operation
x, y Objects of type VectorDomain
u Object of type VectorImage
Valid Expressions:
Assign product: u= a * x
Add product: u+= a * x
Subtract product: u-= a * x
Invariant:
Addability a * (x + y) == a*x + a*y
Scalability alpha * (a * x) == a * (alpha * x)
Note:
  1. Using matrix vector products in arbitrary expressions requires storing it in temporary objects to avoid redundant computation. On the other hand, it is not always obvious to choose an appropriate type for such temporary depending on arbitrary operator and vector types. Using the products directly in assignments allows implementation without temporaries, e.g., by calling a function mult(a, x, u) internally.

Member Typedef Documentation

template<typename Operator, typename VectorDomain, typename VectorImage>
typedef associated_type math::LinearOperator< Operator, VectorDomain, VectorImage >::assign_type

Associated type: return type of assigning product to vector.

Automatically deducted. Using expression templates it can be different from VectorImage&

template<typename Operator, typename VectorDomain, typename VectorImage>
typedef associated_type math::LinearOperator< Operator, VectorDomain, VectorImage >::plus_assign_type

Associated type: return type of incrementally assigning product to vector.

Automatically deducted. Using expression templates it can be different from VectorImage&

template<typename Operator, typename VectorDomain, typename VectorImage>
typedef associated_type math::LinearOperator< Operator, VectorDomain, VectorImage >::minus_assign_type

Associated type: return type of decrementally assigning product to vector.

Automatically deducted. Using expression templates it can be different from VectorImage&


The documentation for this struct was generated from the following file:





math::LinearOperator< Operator, VectorDomain, VectorImage > Struct Template Reference -- MTL 4 -- Peter Gottschling and Andrew Lumsdaine -- Generated on 19 May 2009 by Doxygen 1.5.5 -- Copyright 2007 by the Trustees of Indiana University.