Blitz++ User's Guide

Blitz++ User's Guide

Todd Veldhuizen
<tveldhui@acm.org>

Version 1.2, February 2001



Table of Contents

Chapter 1: Introduction

>1.1: About this document
>1.2: Platform notes
>1.2.1: KAI C++
>1.2.2: Intel C++
>1.2.3: gcc
>1.2.4: Metrowerks
>1.2.5: DECcxx
>1.2.6: 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: Porting Blitz++
>1.5: Compiling with Blitz++
>1.5.1: Header files
>1.5.2: Linking to the Blitz++ library
>1.5.3: An example Makefile
>1.5.4: Explicit instantiation
>1.6: Licensing terms
>1.7: Mailing lists and support
>1.7.1: How to get help
>1.7.2: How to subscribe to a mailing list
>1.7.3: blitz-bugs
>1.7.4: blitz-dev
>1.7.5: blitz-support

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: Creating an array from an expression
>2.3.3: Constructors which take extent parameters
>2.3.4: Constructors with Range arguments
>2.3.5: Referencing another array
>2.3.6: Constructing an array from an expression
>2.3.7: Creating an array from pre-existing data
>2.3.8: Interlacing arrays
>2.3.9: A note about reference counting
>2.4: Indexing, subarrays, and slicing
>2.4.1: Indexing
>2.4.2: Subarrays
>2.4.3: RectDomain and StridedDomain
>2.4.4: Slicing
>2.4.5: More about Range objects
>2.4.6: A note about assignment
>2.4.7: 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: Inputting and Outputting Arrays
>2.8.1: Output formatting
>2.8.2: Inputting arrays
>2.9: Array storage orders
>2.9.1: Fortran and C-style arrays
>2.9.2: Creating custom storage orders
>2.9.3: Storage orders example

Chapter 3: Array Expressions

>3.1: Expression evaluation order
>3.2: Expression operands
>3.3: Array operands
>3.4: Expression operators
>3.5: Assignment operators
>3.6: Index placeholders
>3.7: Type promotion
>3.8: Single-argument math functions
>3.9: Two-argument math functions
>3.10: Declaring your own math functions on arrays
>3.11: Tensor notation
>3.12: Array reductions
>3.13: Complete reductions
>3.14: Partial Reductions
>3.15: where statements

Chapter 4: Stencils

>4.1: Motivation: a nicer notation for stencils
>4.2: Declaring stencil objects
>4.3: Automatic determination of stencil extent
>4.4: Stencil operators
>4.4.1: Central differences
>4.4.2: Forward differences
>4.4.3: Backward differences
>4.4.4: Laplacian operators
>4.4.5: Gradient operators
>4.4.6: Jacobian operators
>4.4.7: Grad-squared operators
>4.4.8: Curl operators
>4.4.9: Divergence operators
>4.4.10: Mixed partial derivatives
>4.5: Declaring your own stencil operators
>4.6: Applying a stencil

Chapter 5: Multicomponent, complex, and user type arrays

>5.1: Multicomponent and complex arrays
>5.1.1: Extracting components
>5.1.2: Special support for complex arrays
>5.1.3: Zipping together expressions
>5.2: Creating arrays of a user type

Chapter 6: Indirection

>6.1: Indirection
>6.2: Indirection using lists of array positions
>6.3: Cartesian-product indirection
>6.4: Indirection with lists of strips

Chapter 7: TinyVector

>7.1: Template parameters and types
>7.2: Constructors
>7.3: Member functions
>7.4: Assignment operators
>7.5: Expressions
>7.6: Global functions
>7.7: Arrays of TinyVector
>7.8: Input/output

Chapter 8: Parallel Computing

>8.1: Blitz++ and thread safety

Chapter 9: Random Number Generators

>9.1: Overview
>9.2: Note: Parallel random number generators
>9.3: Seeding a random number generator
>9.4: Detailed description of RNGs
>9.5: Template parameters
>9.6: Member functions
>9.7: Detailed listing of RNGs
>9.7.1: random/uniform.h
>9.7.2: random/normal.h
>9.7.3: random/exponential.h
>9.7.4: random/beta.h
>9.7.5: random/chisquare.h
>9.7.6: random/gamma.h
>9.7.7: random/F.h
>9.7.8: random/discrete-uniform.h

Chapter 10: Numeric properties

>10.1: Introduction
>10.2: Function descriptions

Chapter 11: Frequently Asked Questions

>11.1: Questions about installation
>11.2: Questions about Blitz++ functionality