comp.lang.ada
 help / color / mirror / Atom feed
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.



  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