/*  
 *  - - - - - - - - - - - - -
 *   g a l _ r k f c k s 4 5 
 *  - - - - - - - - - - - - -
 *  
 *  This routine is part of the General Astrodynamics Library  
 *
 *  Description:
 *
 *     This routine takes a Runge-Kutte-Fehlberg-Cash-Karp 4(5) step
 *  
 *  Status: 
 *  
 *     Math special function.  
 *  
 *  Given:  
 *
 *     y               d[]          dependent variable vector
 *     dydx            d[]          derivative of dependent variable vector
 *     n                i           Number of equations to integrate
 *     x                d           Independent variable value
 *     h                d           Stepsize
 *     *derivs         func         User defined function for calculating the right hand side derivatives
 *     *derivsp         i           Pointer to parameters structure for derivs routine
 *
 *  Returned:  
 *  
 *     yout            d[]          Ending y values
 *     yerr            d[]          Errors
 *     gal_rkfs45       i           Status
 *                                    0 = Success
 *                                    1 = Failed to allocate memory
 *  
 *  Notes:
 *
 *  1) The parameters (Cash-Karp version) from Numerical Recipes for RKF45
 *     These values are taken from the c code and not from the table on page 717
 *     which has different values (which don't work, but look like they almost do). The
 *     Cash-Karp values seem to make the routine a bit faster compared to the Fehlberg values.
 *
 *  References:
 *
 *     Numerical Receipes in C
 *     The Art of Scientific Computing
 *     Second Edition
 *     by William H. Press, Saul A. Teukolsky, William T. Vettering & Brian P. Flannery
 *     Pages 710 - 722
 *
 *  This revision:  
 * 
 *     2008 May 18 
 *  
 *  Copyright (C) 2008 Paul C. L. Willmott. See notes at end. 
 *  
 *-----------------------------------------------------------------------  
 */  

#ifndef _GAL_RKFCKS45_H_  
#define _GAL_RKFCKS45_H_ 1  
  
#undef  __BEGIN_DECLS  
#undef  __END_DECLS  
#ifdef  __cplusplus  
#define __BEGIN_DECLS extern "C" {  
#define __END_DECLS }  
#else  
#define __BEGIN_DECLS /* empty */  
#define __END_DECLS   /* empty */  
#endif
  
__BEGIN_DECLS  

int gal_rkfcks45
  (
    double y[],
    double dydx[],
    int n,
    double x,
    double h,
    double yout[],
    double yerr[],
    void ( *derivs ) ( double, double [], double [], int * ),
    int *derivsp
  ) ;
 
#endif /* !_GAL_RKFCKS45_H_ */ 

/*
 *  gal - General Astrodynamics Library  
 *  Copyright (C) 2008 Paul C. L. Willmott  
 *  
 *  This program is free software; you can redistribute it and/or modify  
 *  it under the terms of the GNU General Public License as published by  
 *  the Free Software Foundation; either version 2 of the License, or  
 *  (at your option) any later version.  
 *  
 *  This program is distributed in the hope that it will be useful,  
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of  
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 *  GNU General Public License for more details.  
 *  
 *  You should have received a copy of the GNU General Public License along  
 *  with this program; if not, write to the Free Software Foundation, Inc.,  
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.  
 *    
 *  Contact:  
 *    
 *  Paul Willmott  
 *  vp9mu@amsat.org  
 */  
  
