KrisLibrary  1.0.0
BlockVector.h
1 #ifndef MATH_BLOCK_VECTOR_H
2 #define MATH_BLOCK_VECTOR_H
3 
4 #include "vector.h"
5 #include <vector>
6 
7 namespace Math {
8 
9 class BlockVector : public std::vector<Vector>
10 {
11 public:
12  typedef std::vector<Vector> BaseT;
13 
14  BlockVector();
15  BlockVector(int numBlocks);
16  BlockVector(int numBlocks,int vecSize);
17  BlockVector(int numBlocks,int vecSize,Real initVal);
18  BlockVector(int numBlocks,const Vector& initVal);
19 
20  int numBlocks() const { return (int)BaseT::size(); }
21 
22  void resize(int numBlocks);
23  void resize(int numBlocks,int vecSize);
24  void resize(int numBlocks,int vecSize,Real initVal);
25  void resizeSimilar(const BlockVector&);
26 
27  inline void operator += (const BlockVector& a) { inc(a); }
28  inline void operator -= (const BlockVector& a) { dec(a); }
29  inline void operator *= (Real c) { inplaceMul(c); }
30  inline void operator /= (Real c) { inplaceDiv(c); }
31 
32  void copy(const BlockVector&);
33  void swap(BlockVector&);
34  void add(const BlockVector&,const BlockVector&);
35  void sub(const BlockVector&,const BlockVector&);
36  void mul(const BlockVector&,Real c);
37  void div(const BlockVector&,Real c);
38  void inc(const BlockVector&);
39  void dec(const BlockVector&);
40  void madd(const BlockVector&,Real c);
41 
42  void setZero();
43  void set(Real c);
44  void set(const BlockVector&);
45  void setNegative(const BlockVector&);
46 
47  void inplaceNegative();
48  void inplaceMul(Real c);
49  void inplaceDiv(Real c);
50 
51  Real dot(const BlockVector&) const;
52  Real normSquared() const;
53  inline Real norm() const { return Sqrt(normSquared()); }
54 
55  bool hasDims(const BlockVector&) const;
56  bool hasDims(int numBlocks,int vecSize) const;
57 };
58 
59 } //namespace Math
60 
61 
62 #endif
Definition: BlockVector.h:9
Contains all definitions in the Math package.
Definition: WorkspaceBound.h:12