programming numerical algorithms for astrophysical applications.