Static Public Member Functions | Protected Member Functions | Related Functions
Playa::Vector< Scalar > Class Template Reference
Inheritance diagram for Playa::Vector< Scalar >:
Playa::Handle< VectorBase< Scalar > >

List of all members.

Public Member Functions

Constructors, Destructors, and Assignment Operators
 Vector ()
 Vector (Handleable< VectorBase< Scalar > > *rawPtr)
 Vector (const RefCountPtr< VectorBase< Scalar > > &smartPtr)
template<int N>
 Vector (const LCN< Scalar, N > &x)
 Construct a vector from an N-term LC.
Vector< Scalar > & operator= (const LCN< Scalar, 1 > &x)
 Assign a one-term LC to this vector.
Vector< Scalar > & operator= (const LCN< Scalar, 2 > &x)
 Assign a two-term LC to this vector.
Vector< Scalar > & operator= (const LCN< Scalar, 3 > &x)
 Assign a three-term LC to this vector.
template<int N>
Vector< Scalar > & operator= (const LCN< Scalar, N > &x)
 Assign an N-term LC to this vector.
Operators with assignment
Vector< Scalar > & operator+= (const Vector< Scalar > &other)
Vector< Scalar > & operator+= (const LCN< Scalar, 1 > &x)
Vector< Scalar > & operator+= (const LCN< Scalar, 2 > &x)
template<int N>
Vector< Scalar > & operator+= (const LCN< Scalar, N > &x)
Vector< Scalar > & operator-= (const Vector< Scalar > &other)
Vector< Scalar > & operator-= (const LCN< Scalar, 1 > &x)
Vector< Scalar > & operator-= (const LCN< Scalar, 2 > &x)
template<int N>
Vector< Scalar > & operator-= (const LCN< Scalar, N > &x)
Vector< Scalar > & operator*= (const Scalar &a)
Vector< Scalar > & operator/= (const Scalar &a)
Structural information
VectorSpace< Scalar > space () const
 My space.
const MPICommcomm () const
 My communicator.
int dim () const
 My dimension.
Block operations
int numBlocks () const
 get number of blocks
void setBlock (int i, const Vector< Scalar > &v)
 set the i-th block
const Vector< Scalar > & getBlock (int i) const
 get the i-th block
Vector< Scalar > getNonConstBlock (int i)
 get the i-th block
const Vector< Scalar > & getBlock (const BlockIterator< Scalar > &b) const
 get the i-th block
Vector< Scalar > getNonConstBlock (const BlockIterator< Scalar > &b)
 get the i-th block
Sequential data accessors
ConstDataChunk< Scalar > nextConstChunk () const
 Get the next chunk of values for read-only access.
NonConstDataChunk< Scalar > nextChunk ()
 Get the next chunk of values for read-write access.
bool hasMoreChunks () const
 Tell whether there are more chunks remaining to be accessed.
void rewind () const
 Reset the data stream back to a state where all chunks are considered unread.
Random access to local elements
const Scalar & operator[] (int localIndex) const
 const bracket operator for read-only random access to local elements as specified by a flat index that runs from 0 to space().numLocalElements(). If the vector does not consist of a single contiguous data chunk, this might be slow (worst case would be O(N), if every element is stored in its own chunk of length 1).
Scalar & operator[] (int localIndex)
 non-const bracket operator for read-write random access to local elements as specified by a flat index that runs from 0 to space().numLocalElements(). If the vector does not consist of a single contiguous data chunk, this might be slow (worst case would be O(N), if every element is stored in its own chunk of length 1).
const Scalar & operator() (const BlockIterator< Scalar > &b, int localIndexWithinBlock) const
 parentheses operator for read-only random access to local elements as specified by a block iterator and a flat index indicating the element's location within that block.
Scalar & operator() (const BlockIterator< Scalar > &b, int localIndexWithinBlock)
 parentheses operator for read-write random access to local elements as specified by a block iterator and a flat index indicating the element's location within that block.
Diagnostic output
std::string description () const
 Return a short string description of the vector.
void print (std::ostream &os) const
 Print the vector in some detail.
Math operations
Vector< Scalar > & scale (const Scalar &alpha)
 Multiply this vector by a constant scalar factor.
Vector< Scalar > & update (const Scalar &alpha, const Vector< Scalar > &x, const Scalar &gamma=1.0)
 Add a scaled vector to this vector times a constant: $ this=\alpha x + \gamma \,this. $.
Vector< Scalar > & update (const Scalar &alpha, const Vector< Scalar > &x, const Scalar &beta, const Vector< Scalar > &y, const Scalar &gamma)
 Add two scaled vectors to this vector times a constant: $ this=\alpha x + \beta y + \gamma \, this. $.
Vector< Scalar > & update (const Scalar &alpha, const Vector< Scalar > &x, const Scalar &beta, const Vector< Scalar > &y, const Scalar &gamma, const Vector< Scalar > &z, const Scalar &delta)
 Add three scaled vectors to this vector times a constant: $ this=\alpha x + \beta y + \gamma x + \delta \, this. $.
Vector< Scalar > & acceptCopyOf (const Vector< Scalar > &x)
 Copy the values of another vector into this vector.
Vector< Scalar > copy () const
 Create a new vector that is a copy of this vector.
Vector< Scalar > & selfDotStar (const Vector< Scalar > &other)
 In-place element-by-element product (Matlab dot-star operator)
Vector< Scalar > & selfDotSlash (const Vector< Scalar > &other)
 In-place element-by-element division (Matlab dot-slash operator)
Vector< Scalar > dotStar (const Vector< Scalar > &other) const
 Element-by-element product (Matlab dot-star operator)
Vector< Scalar > dotSlash (const Vector< Scalar > &other) const
 Element-by-element division (Matlab dot-slash operator)
Vector< Scalar > reciprocal () const
 Return element-by-element reciprocal as a new vector.
Vector< Scalar > abs () const
 Return element-by-element absolute value as a new vector.
Vector< Scalar > & selfReciprocal ()
 Overwrite self with element-by-element reciprocal.
Vector< Scalar > & selfAbs ()
 Overwrite self with element-by-element absolute value.
Vector< Scalar > & randomize ()
 Overwrite self with random values.
void setToConstant (const Scalar &alpha)
 Set all elements to a constant value.
Scalar dot (const Vector< Scalar > &other) const
 Take dot product with another vector.
Scalar operator* (const Vector< Scalar > &other) const
 Overloaded operator for dot product.
Scalar norm1 () const
 Compute the 1-norm of this vector.
Scalar norm2 () const
 Compute the 2-norm of this vector.
Scalar norm2 (const Vector< Scalar > &weights) const
 Compute the weighted 2-norm of this vector.
Scalar normInf () const
 Compute the infinity-norm of this vector.
void zero ()
 Set all elements to zero.
Scalar max () const
 Return the max element.
Scalar min () const
 Return the min element.
Functor application
template<class UF >
Vector< Scalar > & applyUnaryFunctor (const UF &functor)
 Apply a unary functor, overwriting this vector with the results.
template<class UF >
Vector< Scalar > & acceptUnaryFunctor (const UF &functor, const Vector< Scalar > &other)
 Apply a unary functor to another vector, writing the results into this vector. The other vector is unchanged.
template<class VF >
Vector< Scalar > & applyBinaryFunctor (const VF &functor, const Vector< Scalar > &other)
 Apply a binary functor to this vector and another vector, writing the results into this vector. The other vector is unchanged.
template<class VF >
Vector< Scalar > & applyTernaryFunctor (const VF &functor, const Vector< Scalar > &x, const Vector< Scalar > &y)
 Apply a ternary functor to this vector and two other vectors, writing the results into this vector. The other vectors are unchanged.
template<class RF >
PlayaFunctors::VectorFunctorTraits
< Scalar, RF >::ReturnType 
applyUnaryReductionFunctor (const RF &functor) const
 Apply a unary reduction functor.
template<class RF >
PlayaFunctors::VectorFunctorTraits
< Scalar, RF >::ReturnType 
applyBinaryReductionFunctor (const RF &functor, const Vector< Scalar > &other) const
 Apply a binary reduction functor.

Static Public Member Functions

static RCP< Time > & opTimer ()
 Get a stopwtach for timing vector operations.

Protected Member Functions

const Vector< Scalar > & getBlock (const std::deque< int > &iter) const
Vector< Scalar > getNonConstBlock (const std::deque< int > &iter)

Related Functions

(Note that these are not member functions.)

template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2, const Vector< Scalar > &v3)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2, const Vector< Scalar > &v3, const Vector< Scalar > &v4)
template<class Scalar >
Vector< Scalar > blockVector (const Array< Vector< Scalar > > &x)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2, const Vector< Scalar > &v3)
template<class Scalar >
Vector< Scalar > blockVector (const Vector< Scalar > &v1, const Vector< Scalar > &v2, const Vector< Scalar > &v3, const Vector< Scalar > &v4)
template<class Scalar >
Vector< Scalar > blockVector (const Array< Vector< Scalar > > &x)
template<class Scalar >
LoadableVector< Scalar > * loadable (Vector< Scalar > vec)
 Dynamic cast a Vector's underlying pointer to a LoadableVector.
template<class Scalar >
Scalar * dataPtr (Vector< Scalar > vec)
 Return a pointer to the beginning of the vector's single data chunk. If the underlying VectorBase is not a SingleChunkVector an exception will be thrown.
template<class Scalar >
const Scalar * dataPtr (const Vector< Scalar > &vec)
 Return a pointer to the beginning of the vector's single data chunk. If the underlying VectorBase is not a SingleChunkVector an exception will be thrown.
template<class Scalar >
Scalar minloc (const Vector< Scalar > &x, int &gni)
 Return minimum element and its location.
template<class Scalar >
Scalar maxloc (const Vector< Scalar > &x, int &gni)
 Return maximum element and its location.
template<class Scalar >
Scalar minlocWithBound (const Scalar &lowerBound, const Vector< Scalar > &x, int &gni)
 Return minimum element greater than a specified bound, and its location.
template<class Scalar >
Scalar maxlocWithBound (const Scalar &upperBound, const Vector< Scalar > &x, int &gni)
 Return maximum element less than a specified bound, and its location.
template<class Scalar >
Scalar norm2 (const Vector< Scalar > &x)
 Compute the Euclidean norm of a vector.
template<class Scalar >
Scalar norm1 (const Vector< Scalar > &x)
 Compute the one-norm of a vector.
template<class Scalar >
Scalar normInf (const Vector< Scalar > &x)
 Compute the infinity norm of a vector.
template<class Scalar >
Scalar norm2Dist (const Vector< Scalar > &x, const Vector< Scalar > &y)
 Compute the Euclidean distance between two vectors.
template<class Scalar >
Scalar norm1Dist (const Vector< Scalar > &x, const Vector< Scalar > &y)
 Compute the one-norm distance between two vectors.
template<class Scalar >
Scalar normInfDist (const Vector< Scalar > &x, const Vector< Scalar > &y)
 Compute the infinity-norm distance between two vectors.
template<class Scalar >
Scalar norm2 (const Vector< Scalar > &x)
 Compute the Euclidean norm of a vector.
template<class Scalar >
Scalar norm1 (const Vector< Scalar > &x)
 Compute the one-norm of a vector.
template<class Scalar >
Scalar normInf (const Vector< Scalar > &x)
 Compute the infinity norm of a vector.

Detailed Description

template<class Scalar>
class Playa::Vector< Scalar >

User-level vector class.

Vector creation

Ordinarily, you will never construct a Vector directly from a derived type. Rather, the createMember() method of VectorSpace is used to build a vector of the appropriate type, for example,

 VectorType<double> vecType = new EpetraVectorType();
 int dimension = 100;
 VectorSpace<double> space = vecType.createSpace(dimension);
 Vector<double> x = space.createMember();
 Vector<double> y = space.createMember();

This hides from you all the ugly details of creating a particular concrete type.

You will frequently create an empty vector to be filled in later, for example,

 Vector<double> y;

Note that this vector isn't just empty, it's null. Not only does it have no values assigned, it does not have a concrete type. An call a method on a null vector will result in an error. What you <it>can</it> do with a null vector is

Definition at line 100 of file PlayaVectorDecl.hpp.


Constructor & Destructor Documentation

template<class Scalar>
Playa::Vector< Scalar >::Vector ( ) [inline]

Empty ctor

Definition at line 105 of file PlayaVectorDecl.hpp.

template<class Scalar>
Playa::Vector< Scalar >::Vector ( Handleable< VectorBase< Scalar > > *  rawPtr) [inline]

Construct a Vector<Scalar> with a raw pointer to a VectorBase<Scalar>

Definition at line 105 of file PlayaVectorDecl.hpp.

template<class Scalar>
Playa::Vector< Scalar >::Vector ( const RefCountPtr< VectorBase< Scalar > > &  smartPtr) [inline]

Construct a Vector<Scalar> with a smart pointer to a VectorBase<Scalar>

Definition at line 105 of file PlayaVectorDecl.hpp.

template<class Scalar>
template<int N>
Playa::Vector< Scalar >::Vector ( const LCN< Scalar, N > &  x) [inline]

Construct a vector from an N-term LC.

Definition at line 75 of file PlayaLinearCombinationImpl.hpp.

References Playa::LCN< Scalar, N >::eval(), and Playa::Handle< VectorBase< Scalar > >::ptr().


Member Function Documentation

template<class Scalar >
Vector< Scalar > Playa::Vector< Scalar >::abs ( ) const [inline]

Return element-by-element absolute value as a new vector.

Definition at line 684 of file PlayaVectorImpl.hpp.

References Playa::Vector< Scalar >::acceptCopyOf(), and Playa::Vector< Scalar >::selfAbs().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::acceptCopyOf ( const Vector< Scalar > &  x) [inline]
template<class Scalar>
template<class UF >
Vector< Scalar > & Playa::Vector< Scalar >::acceptUnaryFunctor ( const UF &  functor,
const Vector< Scalar > &  other 
) [inline]
template<class Scalar>
template<class VF >
Vector< Scalar > & Playa::Vector< Scalar >::applyBinaryFunctor ( const VF &  functor,
const Vector< Scalar > &  other 
) [inline]
template<class Scalar>
template<class RF >
PlayaFunctors::VectorFunctorTraits< Scalar, RF >::ReturnType Playa::Vector< Scalar >::applyBinaryReductionFunctor ( const RF &  functor,
const Vector< Scalar > &  other 
) const [inline]
template<class Scalar>
template<class VF >
Vector< Scalar > & Playa::Vector< Scalar >::applyTernaryFunctor ( const VF &  functor,
const Vector< Scalar > &  x,
const Vector< Scalar > &  y 
) [inline]
template<class Scalar >
template<class UF >
Vector< Scalar > & Playa::Vector< Scalar >::applyUnaryFunctor ( const UF &  functor) [inline]

Apply a unary functor, overwriting this vector with the results.

Definition at line 344 of file PlayaVectorImpl.hpp.

References Playa::Vector< Scalar >::applyUnaryFunctor(), Playa::NonConstDataChunk< Scalar >::size(), and Playa::NonConstDataChunk< Scalar >::values().

Referenced by Playa::Vector< Scalar >::applyUnaryFunctor().

template<class Scalar >
template<class RF >
PlayaFunctors::VectorFunctorTraits< Scalar, RF >::ReturnType Playa::Vector< Scalar >::applyUnaryReductionFunctor ( const RF &  functor) const [inline]
template<class Scalar>
const MPIComm& Playa::Vector< Scalar >::comm ( ) const [inline]
template<class Scalar >
Vector< Scalar > Playa::Vector< Scalar >::copy ( ) const [inline]
template<class Scalar >
std::string Playa::Vector< Scalar >::description ( ) const

Return a short string description of the vector.

Reimplemented from Playa::Handle< VectorBase< Scalar > >.

Definition at line 327 of file PlayaVectorImpl.hpp.

References Teuchos::toString().

Referenced by Playa::LinearOperator< Scalar >::apply(), Playa::LinearOperator< Scalar >::applyTranspose(), and Playa::operator<<().

template<class Scalar>
int Playa::Vector< Scalar >::dim ( ) const [inline]

My dimension.

Definition at line 173 of file PlayaVectorDecl.hpp.

template<class Scalar>
Scalar Playa::Vector< Scalar >::dot ( const Vector< Scalar > &  other) const [inline]
template<class Scalar>
Vector< Scalar > Playa::Vector< Scalar >::dotSlash ( const Vector< Scalar > &  other) const [inline]

Element-by-element division (Matlab dot-slash operator)

Definition at line 673 of file PlayaVectorImpl.hpp.

References Playa::Vector< Scalar >::acceptCopyOf(), and Playa::Vector< Scalar >::selfDotSlash().

Referenced by Playa::VectorTester< Scalar >::dotSlashTest().

template<class Scalar>
Vector< Scalar > Playa::Vector< Scalar >::dotStar ( const Vector< Scalar > &  other) const [inline]
template<class Scalar >
const Vector< Scalar > & Playa::Vector< Scalar >::getBlock ( int  i) const
template<class Scalar>
const Vector< Scalar > & Playa::Vector< Scalar >::getBlock ( const BlockIterator< Scalar > &  b) const [inline]
template<class Scalar>
const Vector< Scalar > & Playa::Vector< Scalar >::getBlock ( const std::deque< int > &  iter) const [inline, protected]

get a subblock as specified by a deque of indices

Definition at line 190 of file PlayaVectorImpl.hpp.

template<class Scalar >
Vector< Scalar > Playa::Vector< Scalar >::getNonConstBlock ( int  i)

get the i-th block

Definition at line 148 of file PlayaVectorImpl.hpp.

References Playa::BlockVectorBase< Scalar >::getNonConstBlock().

Referenced by Playa::SimpleBlockOp< Scalar >::apply().

template<class Scalar>
Vector< Scalar > Playa::Vector< Scalar >::getNonConstBlock ( const BlockIterator< Scalar > &  b) [inline]
template<class Scalar>
Vector< Scalar > Playa::Vector< Scalar >::getNonConstBlock ( const std::deque< int > &  iter) [inline, protected]

get a non-const subblock as specified by a deque of indices

Definition at line 210 of file PlayaVectorImpl.hpp.

template<class Scalar >
bool Playa::Vector< Scalar >::hasMoreChunks ( ) const

Tell whether there are more chunks remaining to be accessed.

Definition at line 244 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::applyBinaryReductionFunctor(), Playa::Vector< Scalar >::applyUnaryReductionFunctor(), and Playa::Vector< Scalar >::print().

template<class Scalar >
Scalar Playa::Vector< Scalar >::max ( ) const [inline]

Return the max element.

Definition at line 819 of file PlayaVectorImpl.hpp.

Referenced by Sundance::ThresholdEventDetector::checkForEvent().

template<class Scalar >
Scalar Playa::Vector< Scalar >::min ( ) const [inline]

Return the min element.

Definition at line 827 of file PlayaVectorImpl.hpp.

Referenced by Sundance::ThresholdEventDetector::checkForEvent().

template<class Scalar >
NonConstDataChunk< Scalar > Playa::Vector< Scalar >::nextChunk ( )

Get the next chunk of values for read-write access.

Definition at line 236 of file PlayaVectorImpl.hpp.

template<class Scalar >
ConstDataChunk< Scalar > Playa::Vector< Scalar >::nextConstChunk ( ) const
template<class Scalar >
Scalar Playa::Vector< Scalar >::norm1 ( ) const [inline]

Compute the 1-norm of this vector.

Definition at line 760 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::norm1().

template<class Scalar >
Scalar Playa::Vector< Scalar >::norm2 ( ) const [inline]
template<class Scalar>
Scalar Playa::Vector< Scalar >::norm2 ( const Vector< Scalar > &  weights) const [inline]

Compute the weighted 2-norm of this vector.

Definition at line 780 of file PlayaVectorImpl.hpp.

template<class Scalar >
Scalar Playa::Vector< Scalar >::normInf ( ) const [inline]

Compute the infinity-norm of this vector.

Definition at line 791 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::normInf(), and Playa::DefaultOptConvergenceTest::test().

template<class Scalar >
int Playa::Vector< Scalar >::numBlocks ( ) const

get number of blocks

Definition at line 115 of file PlayaVectorImpl.hpp.

template<class Scalar>
const Scalar & Playa::Vector< Scalar >::operator() ( const BlockIterator< Scalar > &  b,
int  localIndexWithinBlock 
) const [inline]

parentheses operator for read-only random access to local elements as specified by a block iterator and a flat index indicating the element's location within that block.

Definition at line 912 of file PlayaVectorImpl.hpp.

template<class Scalar>
Scalar & Playa::Vector< Scalar >::operator() ( const BlockIterator< Scalar > &  b,
int  localIndexWithinBlock 
) [inline]

parentheses operator for read-write random access to local elements as specified by a block iterator and a flat index indicating the element's location within that block.

Definition at line 922 of file PlayaVectorImpl.hpp.

template<class Scalar>
Scalar Playa::Vector< Scalar >::operator* ( const Vector< Scalar > &  other) const [inline]

Overloaded operator for dot product.

Definition at line 749 of file PlayaVectorImpl.hpp.

References PLAYA_CHECK_SPACES, Playa::Handle< VectorBase< Scalar > >::ptr(), and Playa::Vector< Scalar >::space().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator*= ( const Scalar &  a)

Scale by a constant

Definition at line 100 of file PlayaVectorImpl.hpp.

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator+= ( const Vector< Scalar > &  other)

Add a vector into this vector

Definition at line 83 of file PlayaVectorImpl.hpp.

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator+= ( const LCN< Scalar, 1 > &  x) [inline]
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator+= ( const LCN< Scalar, 2 > &  x) [inline]
template<class Scalar>
template<int N>
Vector< Scalar > & Playa::Vector< Scalar >::operator+= ( const LCN< Scalar, N > &  x) [inline]

Add an N-term LC into this vector

Definition at line 250 of file PlayaLinearCombinationImpl.hpp.

References Playa::LCN< Scalar, N >::eval().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator-= ( const Vector< Scalar > &  other)

Subtract a vector from this vector

Definition at line 92 of file PlayaVectorImpl.hpp.

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator-= ( const LCN< Scalar, 1 > &  x) [inline]
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator-= ( const LCN< Scalar, 2 > &  x) [inline]

Subtract a two-term LC from this vector

Definition at line 284 of file PlayaLinearCombinationImpl.hpp.

References Playa::LCNBase< Scalar, N >::coeff(), Playa::Vector< Scalar >::space(), and Playa::LCNBase< Scalar, N >::vec().

template<class Scalar>
template<int N>
Vector< Scalar > & Playa::Vector< Scalar >::operator-= ( const LCN< Scalar, N > &  x) [inline]

Subtract an N-term LC from this vector

Definition at line 306 of file PlayaLinearCombinationImpl.hpp.

References Playa::LCN< Scalar, N >::eval().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator/= ( const Scalar &  a)

Divide by a constant

Definition at line 107 of file PlayaVectorImpl.hpp.

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator= ( const LCN< Scalar, 1 > &  x) [inline]
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator= ( const LCN< Scalar, 2 > &  x) [inline]
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::operator= ( const LCN< Scalar, 3 > &  x) [inline]
template<class Scalar>
template<int N>
Vector< Scalar > & Playa::Vector< Scalar >::operator= ( const LCN< Scalar, N > &  x) [inline]

Assign an N-term LC to this vector.

Definition at line 195 of file PlayaLinearCombinationImpl.hpp.

References Playa::LCN< Scalar, N >::eval(), and Playa::Handle< PointerType >::ptr().

template<class Scalar >
const Scalar & Playa::Vector< Scalar >::operator[] ( int  localIndex) const [inline]

const bracket operator for read-only random access to local elements as specified by a flat index that runs from 0 to space().numLocalElements(). If the vector does not consist of a single contiguous data chunk, this might be slow (worst case would be O(N), if every element is stored in its own chunk of length 1).

Definition at line 836 of file PlayaVectorImpl.hpp.

References Playa::SingleChunkVector< Scalar >::chunkSize(), Playa::SingleChunkVector< Scalar >::dataPtr(), Playa::Debug::on, PLAYA_BOUNDSCHECK, Playa::ConstDataChunk< Scalar >::size(), and Playa::ConstDataChunk< Scalar >::values().

template<class Scalar >
Scalar & Playa::Vector< Scalar >::operator[] ( int  localIndex) [inline]

non-const bracket operator for read-write random access to local elements as specified by a flat index that runs from 0 to space().numLocalElements(). If the vector does not consist of a single contiguous data chunk, this might be slow (worst case would be O(N), if every element is stored in its own chunk of length 1).

Definition at line 874 of file PlayaVectorImpl.hpp.

References Playa::SingleChunkVector< Scalar >::chunkSize(), Playa::SingleChunkVector< Scalar >::dataPtr(), Playa::Debug::on, PLAYA_BOUNDSCHECK, Playa::NonConstDataChunk< Scalar >::size(), and Playa::NonConstDataChunk< Scalar >::values().

template<class Scalar>
static RCP<Time>& Playa::Vector< Scalar >::opTimer ( ) [inline, static]

Get a stopwtach for timing vector operations.

Definition at line 412 of file PlayaVectorDecl.hpp.

template<class Scalar >
void Playa::Vector< Scalar >::print ( std::ostream &  os) const
template<class Scalar >
Vector< Scalar > & Playa::Vector< Scalar >::randomize ( ) [inline]

Overwrite self with random values.

Definition at line 609 of file PlayaVectorImpl.hpp.

Referenced by Playa::TesterBase< Scalar >::randomizeVec().

template<class Scalar >
Vector< Scalar > Playa::Vector< Scalar >::reciprocal ( ) const [inline]

Return element-by-element reciprocal as a new vector.

Definition at line 698 of file PlayaVectorImpl.hpp.

References Playa::Vector< Scalar >::acceptCopyOf(), and Playa::Vector< Scalar >::selfReciprocal().

template<class Scalar >
void Playa::Vector< Scalar >::rewind ( ) const
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::scale ( const Scalar &  alpha) [inline]
template<class Scalar >
Vector< Scalar > & Playa::Vector< Scalar >::selfAbs ( ) [inline]

Overwrite self with element-by-element absolute value.

Definition at line 601 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::abs().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::selfDotSlash ( const Vector< Scalar > &  other) [inline]

In-place element-by-element division (Matlab dot-slash operator)

Definition at line 655 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::dotSlash().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::selfDotStar ( const Vector< Scalar > &  other) [inline]

In-place element-by-element product (Matlab dot-star operator)

Definition at line 648 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::dotStar().

template<class Scalar >
Vector< Scalar > & Playa::Vector< Scalar >::selfReciprocal ( ) [inline]

Overwrite self with element-by-element reciprocal.

Definition at line 593 of file PlayaVectorImpl.hpp.

Referenced by Playa::Vector< Scalar >::reciprocal().

template<class Scalar>
void Playa::Vector< Scalar >::setBlock ( int  i,
const Vector< Scalar > &  v 
)

set the i-th block

Definition at line 123 of file PlayaVectorImpl.hpp.

References Playa::BlockVectorBase< Scalar >::setBlock().

Referenced by Playa::BlockTriangularSolver< Scalar >::solve().

template<class Scalar>
void Playa::Vector< Scalar >::setToConstant ( const Scalar &  alpha) [inline]
template<class Scalar>
VectorSpace<Scalar> Playa::Vector< Scalar >::space ( ) const [inline]
template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::update ( const Scalar &  alpha,
const Vector< Scalar > &  x,
const Scalar &  gamma = 1.0 
) [inline]

Add a scaled vector to this vector times a constant: $ this=\alpha x + \gamma \,this. $.

Definition at line 617 of file PlayaVectorImpl.hpp.

References Playa::Handle< VectorBase< Scalar > >::ptr().

Referenced by Sundance::addVecToDiscreteFunction(), and Playa::MultiVectorOperator< Scalar >::apply().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::update ( const Scalar &  alpha,
const Vector< Scalar > &  x,
const Scalar &  beta,
const Vector< Scalar > &  y,
const Scalar &  gamma 
) [inline]

Add two scaled vectors to this vector times a constant: $ this=\alpha x + \beta y + \gamma \, this. $.

Definition at line 710 of file PlayaVectorImpl.hpp.

References Playa::Handle< VectorBase< Scalar > >::ptr().

template<class Scalar>
Vector< Scalar > & Playa::Vector< Scalar >::update ( const Scalar &  alpha,
const Vector< Scalar > &  x,
const Scalar &  beta,
const Vector< Scalar > &  y,
const Scalar &  gamma,
const Vector< Scalar > &  z,
const Scalar &  delta 
) [inline]

Add three scaled vectors to this vector times a constant: $ this=\alpha x + \beta y + \gamma x + \delta \, this. $.

Definition at line 723 of file PlayaVectorImpl.hpp.

References Playa::Handle< VectorBase< Scalar > >::ptr().

template<class Scalar >
void Playa::Vector< Scalar >::zero ( ) [inline]

Friends And Related Function Documentation

template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1) [related]
template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2 
) [related]
template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2,
const Vector< Scalar > &  v3 
) [related]
template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2,
const Vector< Scalar > &  v3,
const Vector< Scalar > &  v4 
) [related]
template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1) [related]

Definition at line 120 of file PlayaDefaultBlockVectorImpl.hpp.

template<class Scalar >
Vector< Scalar > blockVector ( const Array< Vector< Scalar > > &  x) [related]
template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2 
) [related]

Definition at line 131 of file PlayaDefaultBlockVectorImpl.hpp.

template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2,
const Vector< Scalar > &  v3 
) [related]

Definition at line 143 of file PlayaDefaultBlockVectorImpl.hpp.

template<class Scalar >
Vector< Scalar > blockVector ( const Vector< Scalar > &  v1,
const Vector< Scalar > &  v2,
const Vector< Scalar > &  v3,
const Vector< Scalar > &  v4 
) [related]

Definition at line 157 of file PlayaDefaultBlockVectorImpl.hpp.

template<class Scalar >
Vector< Scalar > blockVector ( const Array< Vector< Scalar > > &  x) [related]

Definition at line 173 of file PlayaDefaultBlockVectorImpl.hpp.

template<class Scalar >
Scalar * dataPtr ( Vector< Scalar >  vec) [related]

Return a pointer to the beginning of the vector's single data chunk. If the underlying VectorBase is not a SingleChunkVector an exception will be thrown.

Definition at line 932 of file PlayaVectorImpl.hpp.

template<class Scalar >
const Scalar * dataPtr ( const Vector< Scalar > &  vec) [related]

Return a pointer to the beginning of the vector's single data chunk. If the underlying VectorBase is not a SingleChunkVector an exception will be thrown.

Definition at line 944 of file PlayaVectorImpl.hpp.

template<class Scalar >
LoadableVector< Scalar > * loadable ( Vector< Scalar >  vec) [related]

Dynamic cast a Vector's underlying pointer to a LoadableVector.

Definition at line 955 of file PlayaVectorImpl.hpp.

template<class Scalar >
Scalar maxloc ( const Vector< Scalar > &  x,
int &  gni 
) [related]

Return maximum element and its location.

Definition at line 78 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar maxlocWithBound ( const Scalar &  upperBound,
const Vector< Scalar > &  x,
int &  gni 
) [related]

Return maximum element less than a specified bound, and its location.

Definition at line 96 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar minloc ( const Vector< Scalar > &  x,
int &  gni 
) [related]

Return minimum element and its location.

Definition at line 71 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar minlocWithBound ( const Scalar &  lowerBound,
const Vector< Scalar > &  x,
int &  gni 
) [related]

Return minimum element greater than a specified bound, and its location.

Definition at line 85 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar norm1 ( const Vector< Scalar > &  x) [related]

Compute the one-norm of a vector.

template<class Scalar >
Scalar norm1 ( const Vector< Scalar > &  x) [related]

Compute the one-norm of a vector.

Definition at line 136 of file PlayaVectorOpsImpl.hpp.

References Playa::Vector< Scalar >::norm1().

template<class Scalar >
Scalar norm1Dist ( const Vector< Scalar > &  x,
const Vector< Scalar > &  y 
) [related]

Compute the one-norm distance between two vectors.

Definition at line 116 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar norm2 ( const Vector< Scalar > &  x) [related]

Compute the Euclidean norm of a vector.

template<class Scalar >
Scalar norm2 ( const Vector< Scalar > &  x) [related]

Compute the Euclidean norm of a vector.

Definition at line 132 of file PlayaVectorOpsImpl.hpp.

References Playa::Vector< Scalar >::norm2().

template<class Scalar >
Scalar norm2Dist ( const Vector< Scalar > &  x,
const Vector< Scalar > &  y 
) [related]

Compute the Euclidean distance between two vectors.

Definition at line 108 of file PlayaVectorOpsImpl.hpp.

template<class Scalar >
Scalar normInf ( const Vector< Scalar > &  x) [related]

Compute the infinity norm of a vector.

template<class Scalar >
Scalar normInf ( const Vector< Scalar > &  x) [related]

Compute the infinity norm of a vector.

Definition at line 140 of file PlayaVectorOpsImpl.hpp.

References Playa::Vector< Scalar >::normInf().

template<class Scalar >
Scalar normInfDist ( const Vector< Scalar > &  x,
const Vector< Scalar > &  y 
) [related]

Compute the infinity-norm distance between two vectors.

Definition at line 124 of file PlayaVectorOpsImpl.hpp.

Site Contact