From: Simon Wright <simon@pushface.org>
Subject: Re: Interfacing Ada with C
Date: Mon, 26 Jul 2010 00:21:22 +0100
Date: 2010-07-26T00:21:22+01:00 [thread overview]
Message-ID: <m2iq43rvv1.fsf@pushface.org> (raw)
In-Reply-To: 143ef70b-7e74-426b-a621-a5fd157849be@x21g2000yqa.googlegroups.com
Ada novice <posts@gmx.us> writes:
> Many thanks for all your inputs. I'll give you an example. Say we want
> to compute the eigenvalues of this 3 X 3 matrix. The code in C (using
> the IMSL library) is as follows:
[...]
> What would the best way to interface this with Ada? The elements of my
> matrix will be formed in Ada, then the matrix will be passed to C to
> calculate the eigenvalues and then the latter passed back to Ada. The
> size of my matrix will be fixed say 3 x 3. As a novice in Ada, I would
> like to learn good programming practice and the best way is to use
> codes and learn from experts here in Ada.
I've encoded a general complex eigenvalues function, interfacing to the
LAPACK procedure zgeev, starting from a demo at
http://www.physics.oregonstate.edu/~rubin/nacphy/lapack/codes/eigen-c.html
& copying bits and pieces from within the GNAT implementation of
Ada.Numerics.Generic_Complex_Arrays.
Find it at http://public.me.com/simon.j.wright (folder numerics).
NB1 LAPACK is a Fortran code, hence the need to transpose the matrix.
NB2 the compilation gives warnings ..
$ gnatmake test_zgeev.adb
gcc -c test_zgeev.adb
test_zgeev.adb:9:06: warning: "Interfaces.Fortran.BLAS" is an internal GNAT unit
test_zgeev.adb:9:06: warning: use of this unit is non-portable and version-dependent
test_zgeev.adb:10:06: warning: "Interfaces.Fortran.LAPACK" is an internal GNAT unit
test_zgeev.adb:10:06: warning: use of this unit is non-portable and version-dependent
gnatbind -x test_zgeev.ali
gnatlink test_zgeev.ali
$
However, (a) one could always write ones own versions, (b) the results
are the same with GNAT GPL 2010 and GCC 4.5.0, (c) the output looks good
(from your inputs) ..
$ ./test_zgeev
2.00000000000000E+00 4.00000000000000E+00
2.00000000000000E+00 -4.00000000000000E+00
9.99999999999996E-01 2.07319734774360E-16
I get the strong impression that to know what the arguments of the BLAS
& LAPACK subprograms are you have to buy the book or read the code!
This all worked without any need for additional link-time arguments on
Mac OS X, but YMMV on Windows. If not, I *think* that if you with
Ada.Numerics.Long_Complex_Arrays (no need to use anything from it) that
would be enough to bring in the necessary libraries.
next prev parent reply other threads:[~2010-07-25 23:21 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 [this message]
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
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