Systems of Ordinary Differential Equations  Old Test Results
by Dennis Darland Mail To: pal at dennisdarland dot com
dennisdarland.com
Comments welcome
Old TestResults
 Comprehensive Tests. (1/29/2013)
The radius of convergence seems to be calculated accurately (which is all I use for now) but not the order as well especially for real singularities.
I have not been able to figure out why, although I have spent quite a bit of time on it.
Also the increment for a desired accuracy is not always calculated correctly. A maximum h may be set to help with this.

Tests of erf (Maple only)
erf released (4/4/2013)

Tests of Si (Maple only)
Si released (4/4/2013)

Comprehensive Tests. (4/24/2013)
The radius of convergence seems to be calculated accurately (which is all I use for now) but not the order as well especially for real singularities.
I figured out what is wrong, and don't know why radius works as well as it does. Order definitely gives poor results. See Notes. April 21, 2013
Also the increment for a desired accuracy is not always calculated correctly. A maximum h may be set to help with this.

Tests using the ratio test to locate singularities (from Henrici Vol 1). (5/15/2013)
This test was run on (and uploaded from) an old desktop that is very uncomfortable for me to sit at. I did not want to tie up the laptop I usually use.
Thus I have not studied the results yet, though I did some testing in individual cases, Also excluded Maple and Maxima from the test, as these are not installed on the desktop.
 Preparing for testing of location and order of singularities.
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
The results look promising. But order has trouble in three term test. Perhaps using more terms could help. I will make a release of this version.

Tests which place ratio test and three term and six term analyses adjacent to each other. (5/26/2013) display interval set to 0.01 in ode.over
Also contains fix for memory allocation for c and c++. Also I worked on logic which selects initial increment (glob_h), it still needs a lot of improvement, but that couldn't be done until the rest was correct.

Tests which place ratio test and three term and six term analyses adjacent to each other. (5/26/2013) display interval set to 0.1 in ode .over instead of 0.01 as in immediately prior test (still seemed to get about the same accuracy) Note: if maximum h is set smaller in individual ode file this has no effect.
 Retesting equations of location and order of singularities.
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
Added equation for order for ratio test I found in Chang and Corliss' 1980 paper. (It applies only to meromorphic functions)..
I went over the three term test and tried to make sure is matched as given in Chang and Corliss' paper. I had gotten different forms trying to solve in Maple, but none have worked well.
Results for radius look promising. Order has trouble in ratio and three term tests. Perhaps using more terms could help..
 Retesting equations of location and order of singularities.
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
I Derived my own form for three term test  See Notes for 5/30/2013
 June 11, 2013  Corrected Optimized computing derivative of radius and order of singularity w.r.t last Taylor term used.
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
Still using my own form for three term test  See Notes for 5/30/2013. This time I also reduced the number of terms used and increased the maximum increment.
 June 11, 2013  Added estimated error of radius and order using corrected optimized computing derivative of radius and order of singularity w.r.t last Taylor term used..
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
Still using my own form for three term test  See Notes for 5/30/2013. This time I also reduced the number of terms used and increased the maximum increment.
 June 24, 2013  Added estimated error of radius and order using corrected optimized computing derivative of radius and order of singularity w.r.the three Taylor terms used (for three therm test)..
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
Still using my own form for three term test  See Notes for 5/30/2013. This time I also reduced the number of terms used and increased the maximum increment.

Comprehensive Tests which place ratio test and (new) three term and six term analyses adjacent to each other. (7/3/2013)
Adjacent output in results file of info on radius and order for actual (if given in ode file), ratio test, three term test, and six term test.
Still using my own form for three term test  See Notes for 5/30/2013. This time I also reduced the number of terms used and increased the maximum increment.
 December 28, 2013  Tests with just c. Improvements to coding for singularities for ratio, three term and six term tests. Good results there for radii but not order. Also corrections to time display functions especially for c, c++ and Maxima. I am limiting big test runs to c to save time. Ruby, c+, and Maxima seem OK with limited testing. I no longer have Maple available..
 December 28, 2013  Later same Tests with just c++.
 December 28, 2013  Later same Tests with just Ruby.
 December 28, 2013  Later same Tests with just Maxima.
Maxima is very slow (at any rate for number crunching) , I have seen others comment on this on their email list.
The total time of this test does not indicate how bad it is. Many of the tests with Maxima timed out and did not finish.
This happened to none for c or c++, and only a few for Ruby.
In fact the multiple equation tests did not enen reach the starting line with Maxima!
BTW there are extraneous equal signs in the table for maxima.
I have decided I have made enough progress to make a new release, and don't want to make more changes.
 Notice: If you look in the "results" file by clicking on its link at the right of the table the top of it won't make sense (it's information I may yet use to improve it).
JUST SCROLL DOWN IN IT
 December 30, 2013  Tests with just c. Improvements code generating code for singularities for ratio, three term and six term tests. Found a recent error introduced recently for order, but it still has problems. Improved selection of which radius to use to adjust increment  ignore ratio test there. Also some other minor improvements..
 December 30, 2013  Later same Tests with just c++.
 December 30, 2013  Later same Tests with just Ruby.
 December 31, 2013  Later same Tests with just Maxima.
Maxima is very slow (at any rate for number crunching) , I have seen others comment on this on their email list.
I increased the timeout limit from 3 minutes to 10 minutes (for each set of equations)  (there are over 100 sets in order to test almost all emit code functions).
The total time of this test does not indicate how bad it is. Some of the tests still timed out.
This happened to none for c or c++, and only a few for Ruby. (and the timeout of those was only 3 minutes)
Two of the tests were estimated individually to take over a day each using maxima. (if there were no timeout)
Those two tests completed in 4 and 5 seconds each with the language c, both with 12 place accuracy.
 January 2, 2014 Maxima results with modedeclare New Maxima source for maxima list
New Maxima output for maxima list
New c source for maxima list
New c output for maxima list
 January 2, 2014  These are tests where I have added some modedeclare's for maxima  it reduced execution time for one example from 1 day + 1 hour to 3.5 hours.
I also improved the program in other ways. It has been pointed out that there are possibly other placed where they could help more  and some other things.
It is easier for me to view these on a different computer (on the web) that the one I run the programs (which is now running a maxima test.
The easiest thing to do is copy them to the web  and that lets anyone else interested see my results.
Later same Tests with just c.
Tests with just c++.
Tests with just Ruby.
 January 3, 2014  The maxima results: Tests with just Maxima.
 January 4, 2014  Extensive tests after many imortant changes which I will try to enumerate on soon:
Later same Tests with just c.
Tests with just c++.
Tests with just Ruby.
Tests with just Maxims.
 January 5, 2014  Extensive tests after many important changes. See
 Bugs Fixed.
Tests with just c.
Tests with just c++.
Tests with just Ruby.
Tests with just Maxima.
 January 8, 2014  Extensive tests after many important changes. See Bugs Fixed.
Tests with just c.
Tests with just c++.
Tests with just Ruby.
 Old test results are at They are mainly obsolete
 January 8, 2014  Second set today of extensive tests after many important changes. See
 Bugs Fixed. and other Items Accomplished.
Tests with just c.
Tests with just c++.
Tests with just Ruby.
Tests with just Maxims (1/9/2014).
 January 9, 2014
Tests To Verify Singularity Logic More info now in Table.
 January 11, 2014  Tests trying to adjust increment and max_terms if Taylor Series for Good Estimates of Singularities.
Tables improved for that purpose.
 Tests (using c) which still exhibit problems determining distance to singularities..
 See Bugs Fixed. and other Items Accomplished.
 Tests with just c.
 Tests with just c++.
 Tests with just Ruby.
 Tests with just Maxima.
 January 19, 2014  Tests with increment automatically set and thorough testing of singularity detection.
The singularity detection seems to work well so far as I can tell with the sole exception of when the solution is logarithmic.
So far I have just run the tests for c
 January 19, 2014  Tests with increment automatically set and thorough testing of singularity detection.
The singularity detection seems to work well so far as I can tell with the sole exception of when the solution is logarithmic.
Tests of the version released as 0045 are:
Rev0045 of Omnisode tests for c
Rev0045 of Omnisode tests for c++
Rev0045 of Omnisode tests for ruby
January 20, 2014  Added maxima tests for Rev0045 of Omnisode.
January 20, 2014  I noticed sing4_back.ode encountered division my zero for maxims.
 January 29, 2014  Tests with estimate of error (not relying on actual solution) based on intermediate calculations
Tests for c with estimate of error
 January 30, 2014  Tests with estimate of error (not relying on actual solution) based on intermediate calculations
Fixed some errors in ode files  mostly about given location of singularities.
Also adjusted estimate of error to account for complexity of problem and number of terms used.
Also adjusted calculation of increment to by used for the same things.
Tests for c with estimate of error
 January 30, 2014 (Later)
More tests (include better comments in table) with additional cases with smaller increment in cases where results were poor.
This seems to show the logic is correct in those cases except for selection of increment.
Also I noticed using a smaller increment sometimes resulted in singularities not being detected, although the solution itself was more accurate.
The remaining exceptions (where smaller h does not help) are both tests involving multiple equations (mtest2 and mtest6).
I have not identified the problems with these.
More tests for c with estimate of error
 January 31, 2014  Tests with increment automatically set and thorough testing of singularity detection.
The singularity detection seems to work well so far as I can tell..
Also I try to estimate the error without using the actual solution (which is also compared when known).
Tests of the version released as 0046 are:
Rev0046 of Omnisode tests for c
Rev0046 of Omnisode tests for c++
Rev0046 of Omnisode tests for ruby
Rev0046 of Omnisode tests for maxima
 February 11, 2014  Tests of rev0049 of omnisode  new userinterface  tomni.rb (shell scripts eliminated)
Works with linux, cygwin and windows.
Works with c, c++, ruby, maxima and maple
 Linux:
 c
 c++
 ruby
 maxima
 cygwin:
 c
 c++
 ruby
 maxima
 maple
 windows
 ruby
 maple
 February 12, 2014
A test with functions available in Maple  erf and Si
erf and Si  requires maple
 February 14, 2014
More testing on problems with issues  they do better it appears with smaller h  but do not cover whole range of original problem.
Estimated time for whole range make testing impractical.
 maple used on problems that had issues (see comments) and which were also tried with smaller h
 maple used on problems that still had issues (see comments) with smaller h with yet smaller h
 August 13, 2014  Tests with SUSE Linux 13.1 with new Laptop (One I had been using had some hardware issues due to heat.)
I made one small fix in preodein.rb  otherwise using rev0050  also uncommented 2 lines in any.odes file.
I will release new version after a little more testing.
 c++
 c
 maxima
 ruby
 August 2328, 2014  Tests with SUSE Linux 13.1 with new Laptop (One I had been using had some hardware issues due to heat.)
What became rev0055 of omnisode.
See Notes below for changes included.
 c++
 c
 ruby
 August 29, 2014  Tests with Maple on not quite so new computer (although faster one) with Windows 8.1
maple 18
 September 9, 2014
Comparisons for First Painleve transcendent y''(t) = 6*y(t)*y(t) + t, y(0) = 1, y'(0) = 0
 y(1.1)=87.774060162627567911Maple dsolve solution (numeric/taylorseries)
 y(1.1)=87.7740601626279 (h = 0.01)Omnisode solutions using different increments using C as the target language.
 y(1.1)=87.77405966362403 (h = 0.1)
 y(1.1)=8.77739E+01Single Precision ATOMFT input gives ATOMFT output
 y(1.1)=8.77740601591047D+01Double Precision ATOMFT input gives ATOMFT output
 y(1.1)=8.77739E+01Single Precision ATOMFT input gives ATOMFT output  equal spacing
 y(1.1)=87.77028865886018Maxima (RungeKutta) Input gives Maxima output
 Chang's example 3_1  Multiple Equations
x''(t) = 5.8 * x(t) * (x(t)*x(t) + y(t) * y(t)) ** (1.5)
y''(t) = 5.8 * y(t) * (x(t)*x(t) + y(t) * y(t)) ** (1.5)
x(1) = 1
x'(1)= 0
y(1) = 0
y'(1)=4.3
 Maple dsolve solution (numeric/taylorseries)
x(10)=0.18495565694134253252
y(10)=37.590158457676449717
 Omnisode solutions using different increments using C as the target language.
x(10)=0.186150004919902
y(10)=37.58079302942745
The large file (>150 Meg) has been deleted.
 Single Precision ATOMFT input gives ATOMFT output
Program ABENDS
According to comments should give:
x(10)=1.84953E01
y(10)=3.75902E+01