Mercurial > octave-nkf
annotate libcruft/misc/blaswrap.c @ 12538:6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
author | Jarno Rajahalme <jarno.rajahalme@nsn.com> |
---|---|
date | Thu, 24 Mar 2011 16:46:34 -0400 |
parents | |
children | 72c96de7a403 |
rev | line source |
---|---|
12538
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
1 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
2 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
3 Copyright (C) 2011 Jarno Rajahalme |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
4 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
5 This file is part of Octave. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
6 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
10 option) any later version. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
11 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
15 for more details. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
16 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
20 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
21 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
22 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
23 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
24 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
25 Wrapper for Apple libBLAS.dylib and libLAPACK.dylib |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
26 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
27 At least on the versions of OSX 10.6 so far (up and including 10.6.6) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
28 these libraries are incompatible with 64 bit builds, as some functions |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
29 in libBLAS.dylib are not conforming to F2C calling conventions, as |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
30 they should. This breaks them in 64-bit builds on the x86_64 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
31 architecture. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
32 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
33 Newer gfortran compoilers no longer default to the F2C calling |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
34 convention. These wrappers map the F2C conformant functions in |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
35 libBLAS and libLAPACK to the native gfortran calling convention, so |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
36 that the libraries can be used with software built for x86_64 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
37 architecture. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
38 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
39 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
40 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
41 #ifdef HAVE_CONFIG_H |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
42 #include <config.h> /* USE_BLASWRAP ? */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
43 #endif |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
44 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
45 #ifdef USE_BLASWRAP |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
46 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
47 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
48 * vecLib is an Apple framework (collection of libraries) containing |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
49 * libBLAS and libLAPACK. The fortran stubs in these libraries are |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
50 * (mostly, but not completely) in the F2C calling convention. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
51 * We access the libraries via the vecLib framework to make sure we |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
52 * get the Apple versions, rather than some other blas/lapack with the |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
53 * same name. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
54 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
55 #ifndef VECLIB_FILE |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
56 #define VECLIB_FILE "/System/Library/Frameworks/vecLib.framework/Versions/A/vecLib" |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
57 #endif |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
58 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
59 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
60 * Since this is a wrapper for fortran functions, we do not have prototypes for them. |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
61 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
62 #pragma GCC diagnostic ignored "-Wmissing-prototypes" |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
63 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
64 #include <dlfcn.h> |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
65 #include <stdlib.h> |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
66 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
67 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
68 * Apple LAPACK follows F2C calling convention, |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
69 * Convert to normal gfortran calling convention |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
70 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
71 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
72 static void (*f2c_blas_func[])(void); /* forward declaration for the wrapper */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
73 static void (*f2c_lapack_func[])(void); /* forward declaration for the wrapper */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
74 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
75 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
76 * LAPACK Wrappers, only need to convert the return value from double to float |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
77 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
78 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
79 typedef double (*F2C_CALL_0)(void); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
80 typedef double (*F2C_CALL_1)(void *a1); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
81 typedef double (*F2C_CALL_2)(void *a1, void *a2); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
82 typedef double (*F2C_CALL_3)(void *a1, void *a2, void *a3); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
83 typedef double (*F2C_CALL_4)(void *a1, void *a2, void *a3, void *a4); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
84 typedef double (*F2C_CALL_5)(void *a1, void *a2, void *a3, void *a4, void *a5); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
85 typedef double (*F2C_CALL_6)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
86 typedef double (*F2C_CALL_7)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
87 typedef double (*F2C_CALL_8)(void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7, void *a8); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
88 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
89 #define F2C_LAPACK_CALL_8(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
90 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7, void *a8) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
91 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
92 return ((F2C_CALL_8)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6, a7, a8); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
93 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
94 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
95 #define F2C_LAPACK_CALL_7(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
96 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6, void *a7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
97 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
98 return ((F2C_CALL_7)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6, a7); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
99 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
100 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
101 #define F2C_LAPACK_CALL_6(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
102 float name (void *a1, void *a2, void *a3, void *a4, void *a5, void *a6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
103 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
104 return ((F2C_CALL_6)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5, a6); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
105 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
106 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
107 #define F2C_LAPACK_CALL_5(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
108 float name (void *a1, void *a2, void *a3, void *a4, void *a5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
109 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
110 return ((F2C_CALL_5)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4, a5); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
111 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
112 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
113 #define F2C_LAPACK_CALL_4(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
114 float name (void *a1, void *a2, void *a3, void *a4) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
115 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
116 return ((F2C_CALL_4)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3, a4); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
117 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
118 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
119 #define F2C_LAPACK_CALL_3(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
120 float name (void *a1, void *a2, void *a3) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
121 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
122 return ((F2C_CALL_3)f2c_lapack_func[f2c_ ## name]) (a1, a2, a3); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
123 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
124 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
125 #define F2C_LAPACK_CALL_2(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
126 float name (void *a1, void *a2) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
127 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
128 return ((F2C_CALL_2)f2c_lapack_func[f2c_ ## name]) (a1, a2); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
129 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
130 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
131 #define F2C_LAPACK_CALL_1(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
132 float name (void *a1) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
133 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
134 return ((F2C_CALL_1)f2c_lapack_func[f2c_ ## name]) (a1); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
135 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
136 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
137 #define F2C_LAPACK_CALL_0(name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
138 float name (void) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
139 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
140 return ((F2C_CALL_0)f2c_lapack_func[f2c_ ## name]) (); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
141 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
142 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
143 #define F2C_LAPACK_CALL_NONE(name) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
144 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
145 #define F2C_LAPACK_CALL(name, args) F2C_LAPACK_CALL_ ## args (name) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
146 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
147 #define ENUM_ITEM(name, args) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
148 f2c_ ## name, |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
149 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
150 #define NAME_TO_STRING_CASE(name, args) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
151 case f2c_ ## name: return #name; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
152 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
153 #define DEFINE_LAPACK_ENUM(name, list) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
154 typedef enum { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
155 list(ENUM_ITEM) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
156 } name; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
157 static const char* \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
158 f2c_ ## name ## _name (name n) { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
159 switch (n) { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
160 list(NAME_TO_STRING_CASE) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
161 default: return ""; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
162 } \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
163 } \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
164 list(F2C_LAPACK_CALL) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
165 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
166 #define DEFINE_BLAS_ENUM(name, list) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
167 typedef enum { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
168 list(ENUM_ITEM) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
169 } name; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
170 static const char* \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
171 f2c_ ## name ## _name(name n) { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
172 switch (n) { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
173 list(NAME_TO_STRING_CASE) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
174 default: return ""; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
175 } \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
176 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
177 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
178 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
179 * Lapack functions (with argument count) that need the return value |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
180 * converted from double to float |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
181 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
182 #define LAPACK_LIST(_) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
183 _(clangb_,7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
184 _(clange_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
185 _(clangt_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
186 _(clanhb_,7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
187 _(clanhe_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
188 _(clanhp_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
189 _(clanhs_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
190 _(clanht_,4) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
191 _(clansb_,7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
192 _(clansp_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
193 _(clansy_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
194 _(clantb_,8) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
195 _(clantp_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
196 _(clantr_,8) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
197 _(scsum1_,3) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
198 _(second_,0) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
199 _(slamc3_,2) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
200 _(slamch_,1) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
201 _(slangb_,7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
202 _(slange_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
203 _(slangt_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
204 _(slanhs_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
205 _(slansb_,7) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
206 _(slansp_,5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
207 _(slanst_,4) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
208 _(slansy_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
209 _(slantb_,8) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
210 _(slantp_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
211 _(slantr_,8) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
212 _(slapy2_,2) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
213 _(slapy3_,3) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
214 _(LAPACK_COUNT,NONE) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
215 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
216 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
217 * These need a bit more complex wrappers |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
218 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
219 #define BLAS_LIST(_) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
220 _(cdotu_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
221 _(zdotu_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
222 _(cdotc_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
223 _(zdotc_,6) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
224 _(BLAS_COUNT,NONE) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
225 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
226 DEFINE_BLAS_ENUM(blas, BLAS_LIST) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
227 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
228 DEFINE_LAPACK_ENUM(lapack, LAPACK_LIST) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
229 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
230 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
231 * BLAS wrappers, F2C convention passes retuned complex as an extra first |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
232 * argument |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
233 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
234 typedef struct { float r, i; } complex; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
235 typedef struct { double r, i; } doublecomplex; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
236 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
237 typedef void (*F2C_BLAS_CALL_6)(void *c, void *a1, void *a2, void *a3, void *a4, void *a5); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
238 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
239 #define F2C_BLAS_CALL(type, name) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
240 type name (void *a1, void *a2, void *a3, void *a4, void *a5) \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
241 { \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
242 type cplx; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
243 ((F2C_BLAS_CALL_6)f2c_blas_func[f2c_ ## name]) (&cplx, a1, a2, a3, a4, a5); \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
244 return cplx; \ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
245 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
246 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
247 F2C_BLAS_CALL(complex, cdotu_) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
248 F2C_BLAS_CALL(doublecomplex, zdotu_) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
249 F2C_BLAS_CALL(complex, cdotc_) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
250 F2C_BLAS_CALL(doublecomplex, zdotc_) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
251 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
252 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
253 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
254 * Function pointer arrays, indexed by the enums |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
255 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
256 static void (*f2c_blas_func[f2c_BLAS_COUNT])(void) = { 0 }; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
257 static void (*f2c_lapack_func[f2c_LAPACK_COUNT])(void) = { 0 }; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
258 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
259 /* |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
260 * Initialization: This is called before main (). |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
261 * Get the function pointers to the wrapped functions in Apple vecLib |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
262 */ |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
263 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
264 static void * apple_vecLib = 0; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
265 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
266 __attribute__((constructor)) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
267 static void initVecLibWrappers (void) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
268 { |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
269 apple_vecLib = dlopen (VECLIB_FILE, RTLD_LOCAL | RTLD_NOLOAD | RTLD_FIRST); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
270 if (0 == apple_vecLib) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
271 abort (); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
272 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
273 int i; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
274 for (i = 0; i < f2c_LAPACK_COUNT; i++) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
275 if (0 == (f2c_lapack_func[i] = dlsym(apple_vecLib, f2c_lapack_name(i)))) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
276 abort (); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
277 for (i = 0; i < f2c_BLAS_COUNT; i++) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
278 if (0 == (f2c_blas_func[i] = dlsym(apple_vecLib, f2c_blas_name(i)))) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
279 abort (); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
280 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
281 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
282 __attribute__((destructor)) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
283 static void finiVecLibWrappers (void) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
284 { |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
285 if (apple_vecLib) |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
286 dlclose (apple_vecLib); |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
287 apple_vecLib = 0; |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
288 } |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
289 |
6a225fb7d361
Test fortran with -ff2c and with a wrapper for Apple blas/lapack, when needed.
Jarno Rajahalme <jarno.rajahalme@nsn.com>
parents:
diff
changeset
|
290 #endif /* USE_BLASWRAP */ |