Geometric numerical integration : structure-preserving algorithms for ordinary differential equations - Hairer, E. (Springer series in computational mathematics, 2006)