# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: address@hidden # target_branch: http://bzr.savannah.gnu.org/r/gsl/trunk/ # testament_sha1: 67e590a7828d424c9d6072833ce5f2805ae17186 # timestamp: 2012-01-14 17:09:23 +0200 # base_revision_id: address@hidden # nxlkxqc5due7nrk9 # # Begin patch === modified file 'ode-initval2/ChangeLog' --- ode-initval2/ChangeLog 2011-06-28 16:45:45 +0000 +++ ode-initval2/ChangeLog 2012-01-14 15:05:08 +0000 @@ -1,3 +1,10 @@ +2012-01-14 Tuomo Keskitalo + + * evolve.c: Modified initial derivative evaluation in evolve_apply + to reuse previously calculated values. This saves calls to the + user function. Thanks for Illes Farkas for pointing out redundant + function calls! + 2011-06-28 Brian Gough * rk4imp.c (rk4imp_apply): use M_SQRT3 instead of sqrt(3) in array === modified file 'ode-initval2/evolve.c' --- ode-initval2/evolve.c 2011-04-29 18:47:48 +0000 +++ ode-initval2/evolve.c 2012-01-14 15:05:08 +0000 @@ -138,16 +138,24 @@ DBL_MEMCPY (e->y0, y, e->dimension); - /* Calculate initial dydt once if the method can benefit. */ - + /* Calculate initial dydt once or reuse previous value if the method + can benefit. */ + if (step->type->can_use_dydt_in) { - int status = GSL_ODEIV_FN_EVAL (dydt, t0, y, e->dydt_in); + if (e->count == 0) + { + int status = GSL_ODEIV_FN_EVAL (dydt, t0, y, e->dydt_in); - if (status) - { - return status; - } + if (status) + { + return status; + } + } + else + { + DBL_MEMCPY (e->dydt_in, e->dydt_out, e->dimension); + } } try_step: # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWTRKzMwAAnlfgHAwcHf//3+v zSC////6UAVtreHTrLcetOoNexjhKJGmpqm8plPaFPyeppNpPIJpPUaG01NMho9T0R+pqCUUyptT 9Go9NR6U9CNA0DQAAGgAaAGQQTUzU9VP0k8mU2SeiPRqPUNAAaAAANKEZAZGg0DQ00xA0aZNGgNB poDBJIE00mCaZExNTaKejET1BpoyA0D1A9I0RoiR4/UxrDxt+o53LPdnjgSSKLhT+ikvK/wdAVSp lW9nsQeXbDbCCyV+Z2tmIKoDrClEzLRB1dfryLW7aOvKgFVFye3ml7WzqRYLYpJZKMnscMVs81yW Z+41kM1o35FrHuzXaqd87r4KID7SvuhzSRWTUGs30lAIxezI5yPdg4NyZHHNEyyih925SPxHM/GE CiGFCWLJMWVRYqGsd0fwvYcYGK4+S5gSL+SGA1an+W5BfTdsqm7GlET0VojpEf401z0Us21V0OPC oRg25sWcKn1sCTuQ5eVbhZEawODxP2tARoLvFciC6io6yo9M5WUA1C8xV4qAwYk+1hUoP2l3GSIp gHwreggmhgadb0KXuGVhQBaYKp9PnGUAPJoSNAryX8ljSBUR2GfR8wpXYDtas1pDwPY4ByislloV 2EH5Q+UTbPY+iKiykqzi5oQTxZWgRmll2gVLTh0DYa9URwBRYcS5DcgGKKygiJZmkD2aBmoq04xy cmMa4iY0igOVibaqGsnLPBzMg/3WBk8diWaDCvmtihGgjJjPftXYxSoiX3VCT3TAxzWvUjQWSZKN 4JDj8raXRpogRI028IjMUz2QHkCFwG27yf2IS4QfRPM9AyGFWUn6MgJw6ZSujfq42mN+6qhSPLTE W/eamuHFBrggqAN+y7B1CpxSnV2sktCl1ASLlUMyIyTM/R2GdMRtXRPKpQxjE1CtqftLEIKk9/WI LbdJAVV/PlxllX0dE31GjlT96bbjYotfGDj5tRsXpbbN+CRMpSoxBasbA+LBOor7GEIhp7dm3e0k cyTchvTQckf7IFPaCQpfGHIJgZla1Qiv7ERtBnNEUyqr2XxOeFoKJHg8EHHzhYYYJsDeGWUekkB3 o3dGnm7nO/NRfZUG753YJQv8KLgpuxhvzLo1vqGMBhQComArEJQvnHOWFY+8hqmkv1I9Nue+T9LX xJcjFXVGhGZpFUW+zZv50sKITrNQ55MrI5ZRiE1hgoI6c3RogcdNefBOuvwMxWUj8PuuK+phOf12 TAj0YOHXby4PvUDtdM6uXmbRFqtzZdjAd3NmeXolWswzGQysrpNldiRprEFLSsukszA0nBmGHqRn kXoVQU8w6wMPiB4icHYL7HHy4mDTA9gEH3LJLaB1CIGbxxFGF/uQ0SPhodyNgjNSE+REmakWwgWl jtv1b9k5m0Zg9S0ZF9oLI7GWZMmd24UfWb++bmCHMRzEbkUBbo2KwTjeMqkxEHqSJPCw8LJExTiq ofys/weRYFQkMzlvFZqcu8TC8VcpCupNaaJEGEC6sqRRQgMQj4ByEwftuIHlUjySf3Ad6rfCT0zJ mC5ymuWRgdKYRxeI6sfnPibPhIwYxHJbEWIJBAp5aCoZUhr+7Ue0kuF9KOx1zaSigUxjdBOOzGWn afSALqzUKYA9TEbvDSRPBTgb9zHfc5vAxQN0mm5jjnlfODoBBglJ59jokBYrPoywjADKdiVFshCi QBoeCTYU4JcDdVJyVFWkYMHOkCAFcEXtZUFzF1scaz0XFvCTMV/S1yIhKpwT9p6UxHxLbFJOqv1s ybsvGXWoW4/QbBGLDxixZPT0/IuVorle+Ilzun7RVLipIrL7GWCIi9Xguj1gYYKzlMKp/xdyRThQ kDRKzMw=