Press W H Teukolsky S A Vetterling W T Flannery B P - Numerical Recipes The Art of Scientific Computing - 2007