From: Nasser M. Abbasi on
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

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

> 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

> 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.