Blitz++ User's Guide

Blitz++ User's Guide

Todd Veldhuizen
<tveldhui@extreme.indiana.edu>

August 10, 1998



Chapter 1: Introduction

1.1: About this document
1.2: Platform notes
1.2.1: KAI C++
1.2.2: Visual C++
1.2.3: Intel C++
1.2.4: EGCS
1.2.5: Cray T3E/Cray T90/Cray C90/Cray J90
1.3: How to download Blitz++
1.4: Installation and porting
1.4.1: Installation
1.4.2: The Blitz++ directory tree
1.4.3: Header files
1.4.4: Porting Blitz++
1.5: Licensing terms
1.6: Mailing lists and support
1.6.1: How to subscribe to a mailing list
1.6.2: blitz-bugs
1.6.3: blitz-dev
1.6.4: blitz-support
1.6.5: blitz

Chapter 2: Arrays

2.1: Getting started
2.1.1: Template parameters
2.1.2: Array types
2.1.3: A simple example
2.1.4: Storage orders
2.2: Public types
2.3: Constructors
2.3.1: Default constructor
2.3.2: Constructors which take extent parameters
2.3.3: Constructors with Range arguments
2.3.4: Referencing another array
2.3.5: Creating an array from pre-existing data
2.3.6: Interlacing arrays
2.3.7: A note about reference counting
2.4: Indexing, subarrays, and slicing
2.4.1: Indexing
2.4.2: Subarrays
2.4.3: Slicing
2.4.4: More about Range objects
2.4.5: A note about assignment
2.4.6: An example
2.5: Debug mode
2.6: Member functions
2.6.1: A note about dimension parameters
2.6.2: Member function descriptions
2.7: Global functions
2.8: Expressions
2.8.1: Expression operands
2.8.2: Array operands
2.8.3: Expression operators
2.8.4: Assignment operators
2.8.5: Index placeholders
2.8.6: Type promotion
2.8.7: Single-argument math functions
2.8.8: Two-argument math functions
2.8.9: Tensor notation
2.8.10: Array reductions
2.8.11: Complete reductions
2.8.12: Partial Reductions
2.8.13: where statements
2.9: Stencil objects
2.9.1: Motivation: a nicer notation for stencils
2.9.2: Declaring stencil objects
2.9.3: Stencil operators
2.9.3.1: Central differences

2.9.3.2: Forward differences

2.9.3.3: Backward differences

2.9.3.4: Laplacian operators

2.9.3.5: Gradient operators

2.9.3.6: Grad-squared operators

2.9.3.7: Curl operators

2.9.3.8: Divergence operators

2.9.3.9: Mixed partial derivatives

2.9.4: Declaring your own stencil operators
2.9.5: Composing stencils
2.9.6: Applying a stencil
2.9.7: What still needs work
2.10: Multicomponent and complex arrays
2.10.1: Extracting components
2.10.2: Special support for complex arrays
2.10.3: Zipping together expressions
2.11: Indirection
2.11.1: Indirection using lists of array positions
2.11.2: Cartesian-product indirection
2.11.3: Indirection with lists of strips
2.12: Creating arrays of a user type
2.13: Output formatting
2.14: Array storage orders
2.14.1: Fortran and C-style arrays
2.14.2: Creating custom storage orders
2.14.3: Storage orders example

Chapter 3: TinyVector

Chapter 4: TinyMatrix

Chapter 5: Random Number Generators

Chapter 6: Inquiring about numeric properties

6.1: Introduction
6.2: Floating-point primer
6.3: Special values
6.4: Function descriptions

Chapter 7: Unit systems and Physical constants

Chapter 8: Profiling with TAU

Chapter 9: Performance Tuning



See the Blitz++ homepage at http://monet.uwaterloo.ca/blitz/