# tvmet 1.7.2

tvmet is a Vector and Matrix template library uses Meta Templates and Expression Templates to evaluate results at compile time.

tvmet is a Vector and Matrix template library that uses Meta Templates and Expression Templates (ET) to evaluate results at compile time, thus making it fast for low-end systems.

Temporaries are avoided because of this. The produced code is similar to hand-coded code, but the quality of the code still depends on the compiler and its version. The dimensions for vectors and matrices are static and bounded at compile time using template arguments.

· Matrices and Vectors with fixed sizes (of course), the data is stored in a static array.

· compile time dimension check for Vectors and Matrices to preserve the mathematical meaning.

· vector, matrix, matrix-matrix and matrix-vector fast operations:

· complete set of standard arithmetic operations for Vectors and Matrices (blitz++ supports this only for TinyVector).

· complete set of standard compare operations for Vectors and Matrices as well as ternary functions like a ? b : c (see eval for use).

· binary and unary operations.

· meta template use for Matrix-Matrix-Product $M,M$, Matrix-Transpose $M^T$ and Matrix-Vector-Product $M,x$ functions and operators.

· meta template for special functions like $M^T, x$, $M^T,M$, $M,M^T$ and $(M,M)^T$ functions, see ... special Meta-Template Functions.

· simple Matrix rows and column access as a Vector.

· chaining of matrix and vector expressions is possible and working.

· Vector inner and outer product (dot and cross product).

· special handling for the aliasing problem - see ... about aliasing.

· STL iterator interface. This opens the door to all sorts of great STL applications.

· type promotion (for handling Matrices and Vectors of differing types).

· works on self defined types such as the std::complex type.

· makes no use of exceptions. Therefore you can use it for embedded systems or in Linux kernel space.

· nice expression level printing for debugging purposes (print the expanded expression tree).

· good documentation with examples.

· regression tests for nearly all operations and functions.

· support for several compilers (see Compiler Support).

· written as a pure class and template library, no binary libraries and versioning are needed - designed to avoid code blot due to the use of templates.

· ISO/IEC 14882:1998 compliant.

· CppUnit (recommended)

Temporaries are avoided because of this. The produced code is similar to hand-coded code, but the quality of the code still depends on the compiler and its version. The dimensions for vectors and matrices are static and bounded at compile time using template arguments.

**Here are some key features of "tvmet":**· Matrices and Vectors with fixed sizes (of course), the data is stored in a static array.

· compile time dimension check for Vectors and Matrices to preserve the mathematical meaning.

· vector, matrix, matrix-matrix and matrix-vector fast operations:

· complete set of standard arithmetic operations for Vectors and Matrices (blitz++ supports this only for TinyVector).

· complete set of standard compare operations for Vectors and Matrices as well as ternary functions like a ? b : c (see eval for use).

· binary and unary operations.

· meta template use for Matrix-Matrix-Product $M,M$, Matrix-Transpose $M^T$ and Matrix-Vector-Product $M,x$ functions and operators.

· meta template for special functions like $M^T, x$, $M^T,M$, $M,M^T$ and $(M,M)^T$ functions, see ... special Meta-Template Functions.

· simple Matrix rows and column access as a Vector.

· chaining of matrix and vector expressions is possible and working.

· Vector inner and outer product (dot and cross product).

· special handling for the aliasing problem - see ... about aliasing.

· STL iterator interface. This opens the door to all sorts of great STL applications.

· type promotion (for handling Matrices and Vectors of differing types).

· works on self defined types such as the std::complex type.

· makes no use of exceptions. Therefore you can use it for embedded systems or in Linux kernel space.

· nice expression level printing for debugging purposes (print the expanded expression tree).

· good documentation with examples.

· regression tests for nearly all operations and functions.

· support for several compilers (see Compiler Support).

· written as a pure class and template library, no binary libraries and versioning are needed - designed to avoid code blot due to the use of templates.

· ISO/IEC 14882:1998 compliant.

**Requirements:**· CppUnit (recommended)

### Main features:

- Matrices and Vectors with fixed sizes (of course), the data is stored in a static array.
- compile time dimension check for Vectors and Matrices to preserve the mathematical meaning.
- vector, matrix, matrix-matrix and matrix-vector fast operations:
- complete set of standard arithmetic operations for Vectors and Matrices (blitz supports this only for TinyVector).
- complete set of standard compare operations for Vectors and Matrices as well as ternary functions like a ? b : c (see eval for use).
- binary and unary operations.
- meta template use for Matrix-Matrix-Product $M,M$, Matrix-Transpose $M^T$ and Matrix-Vector-Product $M,x$ functions and operators.
- meta template for special functions like $M^T, x$, $M^T,M$, $M,M^T$ and $(M,M)^T$ functions, see ... special Meta-Template Functions.
- simple Matrix rows and column access as a Vector.
- chaining of matrix and vector expressions is possible and working.
- Vector inner and outer product (dot and cross product).
- special handling for the aliasing problem - see ... about aliasing.
- STL iterator interface. This opens the door to all sorts of great STL applications.
- type promotion (for handling Matrices and Vectors of differing types).
- works on self defined types such as the std::complex type.
- makes no use of exceptions. Therefore you can use it for embedded systems or in Linux kernel space.
- nice expression level printing for debugging purposes (print the expanded expression tree).
- good documentation with examples.
- regression tests for nearly all operations and functions.
- support for several compilers (see Compiler Support).
- written as a pure class and template library, no binary libraries and versioning are needed - designed to avoid code blot due to the use of templates.
- ISO/IEC 14882:1998 compliant.

- last updated on:
- June 26th, 2007, 17:05 GMT
- price:
- FREE!
- developed by:
**Olaf Petzold**- license type:
- LGPL (GNU Lesser General Public License)
- category:
- ROOT \ Science and Engineering \ Mathematics

#### Add your review!

SUBMIT