From: sjw <simon.j.wright@mac.com>
Subject: Re: Interfacing Ada with C
Date: Thu, 5 Aug 2010 06:57:32 -0700 (PDT)
Date: 2010-08-05T06:57:32-07:00 [thread overview]
Message-ID: <d9ae9b6d-bf85-4e03-8fa6-d0e11d1735a6@x21g2000yqa.googlegroups.com> (raw)
In-Reply-To: nospam-9BA736.09235105082010@news.aioe.org
On Aug 5, 2:23 pm, "John B. Matthews" <nos...@nospam.invalid> wrote:
> In article
> <b7f5edce-124d-4b91-82f2-e9793d39a...@x25g2000yqj.googlegroups.com>,
> Ada novice <po...@gmx.us> wrote:
>
>
>
> > 2. a real orthogonal matrix. Such a matrix gives all eigenvalues of
> > unit modulus. I tested the case from
> >http://en.wikipedia.org/wiki/Orthogonal_matrix.
> > In Matlab,
>
> > eig([0, -0.8, -0.6; 0.8, -0.36, 0.48; 0.6, 0.48, -0.64])
>
> > gives the eigenvalues as 0 + 1i, 0 - 1i and -1.
>
> > Using your Ada code gives:
>
> > -1.78814E-08 1.00000E+00
> > -8.72890E-09 -1.00000E+00
> > -1.00000E+00 0.00000E+00
>
> > Does the Blas code work with Fortran double-precision? In the above,
> > Matlab with double (15 digits precision). I don't see you using the
> > type Long_Float in the Ada code. I don't know how many digits are
> > being passed from the Fortran result to Ada. Maybe this is causing the
> > discrepancy between the expected results (all eigenvalues of modulus
> > one) and the output in Ada.
>
> Using these declarations in test_extensions.adb:
>
> subtype My_Float is Long_Float;
>
> Input : constant Complex_Matrix
> := (((0.0, 0.0), (-0.8, 0.0), -0.6, 0.0)),
> ((0.8, 0.0), (-0.36, 0.0), (0.48, 0.0)),
> ((0.6, 0.0), (0.48, 0.0), (-0.64, 0.0)));
>
> I get this result:
>
> ./test_extensions
> 0.00000000000000E+00 1.00000000000000E+00
> -2.77555756156289E-17 -1.00000000000000E+00
> -1.00000000000000E+00 0.00000000000000E+00
The reason for the 'subtype My_Float is Float;' is to make it easy to
change the type in use, for experimentation. You can certainly use
Fortran double precision, equivalent to the GNAT Ada Long_Float.
Although LAPACK/BLAS (at 3.2.2 anyway) allow you to build with
extended precision (80-bit floats, GNAT Long_Long_Float if on x86
hardware) GNAT's implementation of Generic * Arrays assumes the worst
case, ie BLAS/LAPACK only available in single & double precision; and
if the type in use (My_Float in my test case) doesn't match Fortran
single or double precision it converts to double precision, makes the
call, then converts back. I think this deserves a warning at the least
if the precision of the result doesn't match the precision of the base
type.
The Extensions code makes the same transformations as GNAT's.
next prev parent reply other threads:[~2010-08-05 13:57 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-07-24 11:57 Interfacing Ada with C Ada novice
2010-07-24 12:08 ` Robert A Duff
2010-07-24 12:32 ` Ada novice
2010-07-24 14:52 ` Marco
2010-07-24 16:38 ` Simon Wright
2010-07-24 17:58 ` Ada novice
2010-07-25 8:29 ` Simon Wright
2010-07-25 12:21 ` Ada novice
2010-07-25 13:50 ` Dmitry A. Kazakov
2010-07-25 14:12 ` Ada novice
2010-07-25 14:17 ` Ada novice
2010-07-25 14:26 ` Simon Wright
2010-07-25 16:18 ` Ada novice
2010-07-25 17:06 ` Dmitry A. Kazakov
2010-07-25 17:42 ` Ada novice
[not found] ` <a5ba4513-ce2b-45d1-a5f4-ff1a7945b0b0@q12g2000yqj.googlegroups.com>
2010-07-25 18:26 ` Dmitry A. Kazakov
2010-07-25 18:52 ` Ada novice
2010-07-25 18:58 ` Dmitry A. Kazakov
2010-07-25 19:13 ` Ada novice
2010-07-25 19:19 ` Dmitry A. Kazakov
2010-07-25 19:28 ` Ada novice
2010-07-25 20:04 ` Dmitry A. Kazakov
2010-07-26 13:40 ` Ada novice
2010-07-26 14:52 ` Dmitry A. Kazakov
2010-07-26 17:14 ` Ada novice
[not found] ` <a2da2804-c19b-44cf-9855-834c602c4520@y11g2000yqm.googlegroups.com>
2010-07-26 17:32 ` Dmitry A. Kazakov
2010-07-26 17:50 ` Ada novice
2010-07-27 12:24 ` Peter Hermann
2010-07-27 19:01 ` Ada novice
2010-07-28 9:56 ` team-ada (was e: " Peter Hermann
2010-07-27 5:50 ` Ada novice
2010-07-27 7:27 ` Dmitry A. Kazakov
2010-07-27 7:43 ` Georg Bauhaus
2010-07-27 18:37 ` Ada novice
2010-07-27 18:40 ` Ada novice
2010-07-25 17:24 ` Simon Wright
2010-07-25 17:47 ` Simon Wright
2010-07-25 17:58 ` Ada novice
2010-07-25 23:21 ` Simon Wright
2010-07-26 1:24 ` John B. Matthews
2010-07-26 14:01 ` Ada novice
2010-07-26 15:46 ` sjw
[not found] ` <da987804-3948-4871-ab52-4a8e95f06d44@k39g2000yqb.googlegroups.com>
2010-07-26 19:46 ` Simon Wright
2010-07-26 20:39 ` Dmitry A. Kazakov
2010-07-27 5:46 ` Ada novice
2010-07-27 5:43 ` Ada novice
2010-07-27 17:33 ` Simon Wright
2010-07-27 18:34 ` Ada novice
2010-07-28 22:26 ` Simon Wright
2010-07-29 9:19 ` Ada novice
2010-07-29 19:14 ` Simon Wright
2010-07-29 20:25 ` Ada novice
2010-07-30 1:46 ` John B. Matthews
2010-07-30 9:09 ` sjw
2010-07-30 12:41 ` Ada novice
2010-07-30 15:13 ` John B. Matthews
2010-07-30 17:25 ` Ada novice
2010-07-30 19:41 ` John B. Matthews
2010-07-30 21:08 ` Ada novice
2010-07-30 22:19 ` Simon Wright
2010-07-31 12:19 ` Ada novice
2010-07-31 13:25 ` Simon Wright
2010-07-31 19:39 ` Ada novice
2010-07-31 21:02 ` Simon Wright
2010-08-01 9:36 ` Ada novice
2010-08-01 16:14 ` Simon Wright
2010-08-01 16:27 ` Ada novice
2010-08-01 17:33 ` Simon Wright
[not found] ` <997036dd-ca13-4cdf-8f88-9b47a9f83b2d@s9g2000yqd.googlegroups.com>
2010-07-31 13:08 ` Simon Wright
2010-07-31 13:17 ` Simon Wright
2010-07-30 15:10 ` John B. Matthews
2010-08-01 10:47 ` John B. Matthews
2010-08-01 17:08 ` Simon Wright
2010-08-02 1:08 ` John B. Matthews
2010-08-02 16:36 ` Simon Wright
2010-08-02 16:55 ` Ada novice
2010-08-05 9:14 ` Ada novice
2010-08-05 13:23 ` John B. Matthews
2010-08-05 13:57 ` sjw [this message]
2010-08-05 17:24 ` Ada novice
2010-08-05 17:59 ` Jeffrey Carter
2010-08-05 20:25 ` Simon Wright
2010-08-06 1:15 ` John B. Matthews
2010-08-06 9:11 ` Ada novice
2010-08-06 9:17 ` Ada novice
2010-08-06 8:04 ` Jacob Sparre Andersen
2010-08-06 8:42 ` Dmitry A. Kazakov
2010-08-06 9:26 ` Ada novice
2010-08-06 9:51 ` Dmitry A. Kazakov
2010-08-06 12:04 ` Ada novice
2010-08-06 16:49 ` Simon Wright
2010-08-06 17:27 ` Dmitry A. Kazakov
2010-08-06 18:15 ` Ada novice
2010-08-06 20:26 ` Simon Wright
2010-08-07 0:46 ` John B. Matthews
2010-08-07 7:59 ` Dmitry A. Kazakov
2010-08-07 9:09 ` Georg Bauhaus
2010-08-07 12:33 ` John B. Matthews
2010-08-06 9:49 ` Peter Hermann
2010-08-06 12:03 ` Ada novice
2010-08-07 4:07 ` Randy Brukardt
2010-08-07 8:10 ` Ada novice
2010-08-06 16:41 ` Simon Wright
2010-08-06 8:39 ` sjw
2010-07-24 16:44 ` Dmitry A. Kazakov
2010-07-24 18:04 ` Ada novice
2010-07-24 19:16 ` Dmitry A. Kazakov
2010-07-25 0:22 ` tmoran
-- strict thread matches above, loose matches on Subject: below --
2003-04-14 21:39 Paul Anderson
2003-04-14 23:05 ` tmoran
2003-04-16 2:56 ` Steve
2003-04-16 4:25 ` Steve
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox