From: Nasser M. Abbasi on 25 Jul 2010 15:39 On 7/25/2010 11:33 AM, Ada novice wrote: > On Jul 20, 12:34 am, "Randy Brukardt"<ra...(a)rrsoftware.com> wrote: > > This can mean that people are still not much aware of Ada as a very > good and robust language for scientific programming. It does not matter how good Ada is for scientific programming. 2 things are needed for success here: 1. Thousands of ready to use mathematical/numerical functions out of the box. 2. Easy to use graphic interface for displaying of numerical results (plots, histograms, etc...) Ada has neither of the above. When it comes to scientific programming, Ada is like a very good cook who has no kitchen and no ingredients to make a dinner. > If we look at > recent publications, how many books discuss scientific computations > from the view of Ada, how many from the view say C++? For Ada, the sad > new is that we have practically no recent publication. There were > strong interest in the 1980s...e.g. the book Scientific Ada and > Applied Ada. What happened after that? > There was strong interest in Ada in the 1980's period. This was clearly because of the mandate to use Ada on defense software projects. Most people who use Ada these days are not interested in scientific programming, but more in system and other type of low level programming. --Nasser
From: jonathan on 27 Jul 2010 18:10 I found another bug in Generic_Complex_Eigenvalues. (From the collection at http://www.csee.umbc.edu/~squire/adaclass/gnatmath95/). Wherever you find 2.0**( -23) in the code, it should be replaced with Acc_Init, where Acc_Init : constant Real := Real'Epsilon * 2.0**(-3); -- 2**(-23) for digits 6, and 2**(-53) for digits 15, assuming usual IEEE. At the moment Generic_Complex_Eigenvalues only gives you single precision (digits 6), so it fails as a generic in the floating point type Real. Also the program works poorly on matrices that are ill-conditioned, and it fails catastrophically on singular matrices. There is still a large class of problems where it may be useful, but its limitations should be loudly stated somewhere in .ads file. J.
From: jonathan on 27 Jul 2010 18:40 > Wherever you find 2.0**( -23) in the code, it should be replaced > with Acc_Init, where > > Acc_Init : constant Real := Real'Epsilon * 2.0**(-3); Actually, it appears as 2.0 **( - 23 ) in the code, (so searching for 23 works).
From: jonathan on 27 Jul 2010 20:51
> Also the program works poorly on matrices that are ill-conditioned, > and it fails catastrophically on singular matrices. There is still > a large class of problems where it may be useful, but its limitations > should be loudly stated somewhere in .ads file. > Actually, it has to fail on certain matrices .. my error .. I ran some more tests, and the program seems to be working a lot better than I thought. J. |