The boost library and Computational Finance, Part I: Roadmap

This is joint work with Dr. Bojan Nikolic. This blog is a summary of what boost 1.38 has to offer. The chances are that what you plan to do (in C++) and spend sleepness hours on has already been done by the boost developers.

Here it comes, brace yourself :)

www.boost.org

// 1. Algorithms

Foreach (avoiding boiler-plate iterators)

BGL (Graph library and graph algorithms)

// 2. Data Types and Data Structures

Any (generic heterogeneous data types)

Tuple (modeling multiple values in one class)

// 3. Data Containers

Array (compile-time one-dimensional arrays)

Bimap (bidirectional maps, many-to-many)

Dynamic bitsets (sets of dynamic bits)

Multi-Array (n-dimensional arrays)

Multi-Index (containers with one or more indices)

Property Map (key/value pairs)

Variant (discriminated union container)

Pointer Container (heap polymorphic objects)

// 4. I/O and Networking

Asio (portable networking, sockets)

Serialization (persistence and marshalling)

// 5. Utilities

Smart Ptr (five smart pointer template classes)

// 6. Mathematics and Numerics

Accumulators (statstical and time series)

Integer (type-safe integers)

Interval (operations on mathematical intervals)

Math (GCD, LCM, complex trigonometric functions)

Statistical distributions (~25 univariates)

Numeric Conversion (policy-based)

Random (a complete system for RNG)

Rational (rational number class)

uBlas (matrix/vector; basic linear algebra routines)

// 7. Higher-Order Programming

Bind (framework for function pointers and functors)

Function (function wrappers/deferred callbacks)

Functional (templates for function object wrappers)

Lambda (small unnamed functions)

Signals (the Observer pattern using signals, slots)

Spirit (LL parser defined as EBNF grammars)

// 8. String and Text Processing

Conversion (polymorphic and lexical casts)

Format (formatting according to a format-string)

Regex (regular expression library)

String Algo (string algorithms library)

Tokenizer (break a string into a series of tokens)

Xpressive (regular expressions and functionality)

// 9. Multithreading and Concurrent/Parallel Programming

Interprocess (shared memory, mutexes, memory maps)

MPI (Message Passing Interface, distributed memory)

Thread (potable C++ multi-threading)

// 10. Template and MetaTemplate Progamming

Function Types (classify, decompose and synthesize)

Fusion (library for working with tuples)

// 11. Miscellaneous

Date Time (generic date-time libraries)

Exception (transporting arbitrary data)

Flyweight (large quantities of redundant objects)

Tribool (3-state Boolean type library)

Units (dimensional analysis)

// 12. Correctness and Testing

Concept Check (tools for generic programming)

Test (simple program testing, unit testing)