The Blitz++ User Guide is available online:
Note: Copyrights to the following papers are held by the publishers.
The HTML and Postscript versions provided here are preprints. Please
treat this material in a way consistent with the "fair use" provisions
of appropriate copyright law.
- Active Libraries: Rethinking
the roles of compilers and libraries, SIAM Workshop on
Object Oriented Methods for Inter-operable Scientific and
Engineering Computing, October 21-23, 1998
[PS]
[HTML]
[bibtex]
- C++ Templates as Partial Evaluation,
1999 ACM SIGPLAN Workshop on Partial
Evaluation and Semantics-Based Program
Manipulation (PEPM'99).
[PS]
[HTML]
- Arrays in Blitz++, Proceedings of the 2nd International
Scientific Computing in Object Oriented Parallel Environments
(ISCOPE'98).
Overviews the Blitz++ implementation of dense arrays.
[PS]
[DVI]
[bibtex]
© 1998 Springer
- Will C++ be faster than Fortran? Proceedings of the
1st International Scientific Computing in Object Oriented
Parallel Environments (ISCOPE'97). Gives a quick overview of
using template techniques to improve C++'s performance.
[HTML]
[PS]
[bibtex]
(ISCOPE'97) © 1997 Springer.
-
Scientific Computing: C++ vs. Fortran, Dr. Dobb's Journal
(November 1997). Focuses on optimizations for small linear
algebra objects.
[HTML]
[bibtex]
- Linear algebra with C++ template metaprograms,
Dr. Dobb's Journal (August 1996). Focuses on optimizations
for small linear algebra objects.
[HTML]
[bibtex]
- One of the major problems with linear algebra in C++ is the
pairwise evaluation of overloaded operators, which results in grossly
inefficient evaluation of matrix and vector expressions. This problem
(and others) is solved by the expression templates technique.
By transforming arithmetic expressions into C++ types,
expression templates make it possible to create templates
parameterized on expressions, and pass expressions as function
arguments. An article from C++ Report (June 1995) entitled "Expression
Templates"
[HTML]
[bibtex]
explains the method behind the magic.
- Compilers are limited in the types of optimizations
which they can perform. An alternative to relying on the compiler
to optimize numerical libraries is to create libraries which are not
collections of code, but rather collections of "recipes" (metaprograms)
for generating efficient code. This concept can be implemented in
C++ by making use of template metaprograms. Another article
from C++ Report (May 1995) entitled "Using C++ template metaprograms"
[HTML]
[bibtex]
explains how this works.
- Nathan Myers' Traits technique provides a way
of mapping types onto other types, numbers onto types, types onto code,
and so on. Trait classes provide a lot of the glue for the
experimental Blitz++ Numerical Library.
Nathan's article in the June 1995 issue of C++ Report
provides a general introduction
[HTML,11k].