Data structures and numerical recipes.