~ubuntu-branches/ubuntu/maverick/freecad/maverick

« back to all changes in this revision

Viewing changes to src/3rdParty/boost/numeric/bindings/lapack/lapack.h

  • Committer: Bazaar Package Importer
  • Author(s): Teemu Ikonen
  • Date: 2009-07-16 18:37:41 UTC
  • Revision ID: james.westby@ubuntu.com-20090716183741-oww9kcxqrk991i1n
Tags: upstream-0.8.2237
ImportĀ upstreamĀ versionĀ 0.8.2237

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * 
 
3
 * Copyright (c) Toon Knapen & Kresimir Fresl 2003
 
4
 *
 
5
 * Distributed under the Boost Software License, Version 1.0.
 
6
 * (See accompanying file LICENSE_1_0.txt or copy at
 
7
 * http://www.boost.org/LICENSE_1_0.txt)
 
8
 *
 
9
 * KF acknowledges the support of the Faculty of Civil Engineering, 
 
10
 * University of Zagreb, Croatia.
 
11
 *
 
12
 */
 
13
 
 
14
#ifndef BOOST_NUMERIC_BINDINGS_LAPACK_LAPACK_H
 
15
#define BOOST_NUMERIC_BINDINGS_LAPACK_LAPACK_H
 
16
 
 
17
#include <boost/numeric/bindings/traits/type.h>
 
18
#include <boost/numeric/bindings/lapack/lapack_names.h>
 
19
 
 
20
#ifndef BOOST_NUMERIC_BINDINGS_NO_STRUCTURE_CHECK 
 
21
#  define BOOST_NUMERIC_BINDINGS_FORTRAN
 
22
#endif 
 
23
 
 
24
extern "C" {
 
25
 
 
26
  /********************************************************************/
 
27
  /*                        linear systems                            */
 
28
  /********************************************************************/
 
29
 
 
30
  /* general */
 
31
 
 
32
  void LAPACK_SGESV (int const* n, int const* nrhs, 
 
33
                     float* a, int const* lda, int* ipiv, 
 
34
                     float* b, int const* ldb, int* info);
 
35
  void LAPACK_DGESV (int const* n, int const* nrhs, 
 
36
                     double* a, int const* lda, int* ipiv, 
 
37
                     double* b, int const* ldb, int* info);
 
38
  void LAPACK_CGESV (int const* n, int const* nrhs,
 
39
                     fcomplex_t* a, int const* lda, int* ipiv, 
 
40
                     fcomplex_t* b, int const* ldb, int* info);
 
41
  void LAPACK_ZGESV (int const* n, int const* nrhs,
 
42
                     dcomplex_t* a, int const* lda, int* ipiv, 
 
43
                     dcomplex_t* b, int const* ldb, int* info);
 
44
 
 
45
  void LAPACK_SGETRF (int const* n, int const* nrhs, 
 
46
                      float* a, int const* lda, int* ipiv, int* info);
 
47
  void LAPACK_DGETRF (int const* n, int const* nrhs, 
 
48
                      double* a, int const* lda, int* ipiv, int* info);
 
49
  void LAPACK_CGETRF (int const* n, int const* nrhs,
 
50
                      fcomplex_t* a, int const* lda,
 
51
                      int* ipiv, int* info);
 
52
  void LAPACK_ZGETRF (int const* n, int const* nrhs,
 
53
                      dcomplex_t* a, int const* lda,
 
54
                      int* ipiv, int* info);
 
55
 
 
56
  void LAPACK_SGETRS (char const* trans, int const* n, int const* nrhs, 
 
57
                      float const* a, int const* lda, int const* ipiv, 
 
58
                      float* b, int const* ldb, int* info);
 
59
  void LAPACK_DGETRS (char const* trans, int const* n, int const* nrhs, 
 
60
                      double const* a, int const* lda, int const* ipiv, 
 
61
                      double* b, int const* ldb, int* info);
 
62
  void LAPACK_CGETRS (char const* trans, int const* n, int const* nrhs,
 
63
                      fcomplex_t const* a, int const* lda, int const* ipiv, 
 
64
                      fcomplex_t* b, int const* ldb, int* info);
 
65
  void LAPACK_ZGETRS (char const* trans, int const* n, int const* nrhs,
 
66
                      dcomplex_t const* a, int const* lda, int const* ipiv, 
 
67
                      dcomplex_t* b, int const* ldb, int* info);
 
68
 
 
69
 
 
70
  /* symmetric/Hermitian positive definite */
 
71
 
 
72
  void LAPACK_SPOSV (char const* uplo, int const* n, int const* nrhs, 
 
73
                     float* a, int const* lda, 
 
74
                     float* b, int const* ldb, int* info);
 
75
  void LAPACK_DPOSV (char const* uplo, int const* n, int const* nrhs, 
 
76
                     double* a, int const* lda, 
 
77
                     double* b, int const* ldb, int* info);
 
78
  void LAPACK_CPOSV (char const* uplo, int const* n, int const* nrhs,
 
79
                     fcomplex_t* a, int const* lda,
 
80
                     fcomplex_t* b, int const* ldb, int* info);
 
81
  void LAPACK_ZPOSV (char const* uplo, int const* n, int const* nrhs,
 
82
                     dcomplex_t* a, int const* lda,
 
83
                     dcomplex_t* b, int const* ldb, int* info);
 
84
 
 
85
  void LAPACK_SPOTRF (char const* uplo, int const* n, 
 
86
                      float* a, int const* lda, int* info);
 
87
  void LAPACK_DPOTRF (char const* uplo, int const* n, 
 
88
                      double* a, int const* lda, int* info);
 
89
  void LAPACK_CPOTRF (char const* uplo, int const* n, 
 
90
                      fcomplex_t* a, int const* lda, int* info);
 
91
  void LAPACK_ZPOTRF (char const* uplo, int const* n, 
 
92
                      dcomplex_t* a, int const* lda, int* info);
 
93
 
 
94
  void LAPACK_SPOTRS (char const* uplo, int const* n, int const* nrhs, 
 
95
                      float const* a, int const* lda, 
 
96
                      float* b, int const* ldb, int* info);
 
97
  void LAPACK_DPOTRS (char const* uplo, int const* n, int const* nrhs, 
 
98
                      double const* a, int const* lda, 
 
99
                      double* b, int const* ldb, int* info);
 
100
  void LAPACK_CPOTRS (char const* uplo, int const* n, int const* nrhs,
 
101
                      fcomplex_t const* a, int const* lda,
 
102
                      fcomplex_t* b, int const* ldb, int* info);
 
103
  void LAPACK_ZPOTRS (char const* uplo, int const* n, int const* nrhs,
 
104
                      dcomplex_t const* a, int const* lda,
 
105
                      dcomplex_t* b, int const* ldb, int* info);
 
106
 
 
107
 
 
108
  /* symmetric/Hermitian positive definite in packed storage */
 
109
 
 
110
  void LAPACK_SPPSV (char const* uplo, int const* n, int const* nrhs, 
 
111
                     float* ap, float* b, int const* ldb, int* info);
 
112
  void LAPACK_DPPSV (char const* uplo, int const* n, int const* nrhs, 
 
113
                     double* ap, double* b, int const* ldb, int* info);
 
114
  void LAPACK_CPPSV (char const* uplo, int const* n, int const* nrhs,
 
115
                     fcomplex_t* ap, fcomplex_t* b, int const* ldb, int* info);
 
116
  void LAPACK_ZPPSV (char const* uplo, int const* n, int const* nrhs,
 
117
                     dcomplex_t* ap, dcomplex_t* b, int const* ldb, int* info);
 
118
 
 
119
  void LAPACK_SPPTRF (char const* uplo, int const* n, float* ap, int* info);
 
120
  void LAPACK_DPPTRF (char const* uplo, int const* n, double* ap, int* info);
 
121
  void LAPACK_CPPTRF (char const* uplo, int const* n, 
 
122
                      fcomplex_t* ap, int* info);
 
123
  void LAPACK_ZPPTRF (char const* uplo, int const* n, 
 
124
                      dcomplex_t* ap, int* info);
 
125
 
 
126
  void LAPACK_SPPTRS (char const* uplo, int const* n, int const* nrhs, 
 
127
                      float const* ap, float* b, int const* ldb, int* info);
 
128
  void LAPACK_DPPTRS (char const* uplo, int const* n, int const* nrhs, 
 
129
                      double const* ap, double* b, int const* ldb, int* info);
 
130
  void LAPACK_CPPTRS (char const* uplo, int const* n, int const* nrhs,
 
131
                      fcomplex_t const* ap, 
 
132
                      fcomplex_t* b, int const* ldb, int* info);
 
133
  void LAPACK_ZPPTRS (char const* uplo, int const* n, int const* nrhs,
 
134
                      dcomplex_t const* ap, 
 
135
                      dcomplex_t* b, int const* ldb, int* info);
 
136
 
 
137
  void LAPACK_SPPTRI (char const* uplo, int const* n, float* ap, int* info);
 
138
  void LAPACK_DPPTRI (char const* uplo, int const* n, double* ap, int* info);
 
139
  void LAPACK_CPPTRI (char const* uplo, int const* n, 
 
140
                      fcomplex_t* ap, int* info);
 
141
  void LAPACK_ZPPTRI (char const* uplo, int const* n, 
 
142
                      dcomplex_t* ap, int* info);
 
143
 
 
144
 
 
145
  /* symmetric/Hermitian indefinite and complex symmetric */
 
146
 
 
147
  void LAPACK_SSYSV (char const* uplo, int const* n, int const* nrhs, 
 
148
                     float* a, int const* lda, int* ipiv, 
 
149
                     float* b, int const* ldb, 
 
150
                     float* w, int const* lw, int* info);
 
151
  void LAPACK_DSYSV (char const* uplo, int const* n, int const* nrhs, 
 
152
                     double* a, int const* lda, int* ipiv, 
 
153
                     double* b, int const* ldb, 
 
154
                     double* w, int const* lw, int* info);
 
155
  void LAPACK_CSYSV (char const* uplo, int const* n, int const* nrhs,
 
156
                     fcomplex_t* a, int const* lda, int* ipiv, 
 
157
                     fcomplex_t* b, int const* ldb, 
 
158
                     fcomplex_t* w, int const* lw, int* info);
 
159
  void LAPACK_ZSYSV (char const* uplo, int const* n, int const* nrhs,
 
160
                     dcomplex_t* a, int const* lda, int* ipiv, 
 
161
                     dcomplex_t* b, int const* ldb, 
 
162
                     dcomplex_t* w, int const* lw, int* info);
 
163
 
 
164
  void LAPACK_CHESV (char const* uplo, int const* n, int const* nrhs,
 
165
                     fcomplex_t* a, int const* lda, int* ipiv, 
 
166
                     fcomplex_t* b, int const* ldb, 
 
167
                     fcomplex_t* w, int const* lw, int* info);
 
168
  void LAPACK_ZHESV (char const* uplo, int const* n, int const* nrhs,
 
169
                     dcomplex_t* a, int const* lda, int* ipiv, 
 
170
                     dcomplex_t* b, int const* ldb, 
 
171
                     dcomplex_t* w, int const* lw, int* info);
 
172
 
 
173
  void LAPACK_SSYTRF (char const* uplo, int const* n, 
 
174
                      float* a, int const* lda, int* ipiv, 
 
175
                      float* w, int const* lw, int* info);
 
176
  void LAPACK_DSYTRF (char const* uplo, int const* n, 
 
177
                      double* a, int const* lda, int* ipiv, 
 
178
                      double* w, int const* lw, int* info);
 
179
  void LAPACK_CSYTRF (char const* uplo, int const* n, 
 
180
                      fcomplex_t* a, int const* lda, int* ipiv, 
 
181
                      fcomplex_t* w, int const* lw, int* info);
 
182
  void LAPACK_ZSYTRF (char const* uplo, int const* n, 
 
183
                      dcomplex_t* a, int const* lda, int* ipiv, 
 
184
                      dcomplex_t* w, int const* lw, int* info);
 
185
 
 
186
  void LAPACK_CHETRF (char const* uplo, int const* n, 
 
187
                      fcomplex_t* a, int const* lda, int* ipiv, 
 
188
                      fcomplex_t* w, int const* lw, int* info);
 
189
  void LAPACK_ZHETRF (char const* uplo, int const* n, 
 
190
                      dcomplex_t* a, int const* lda, int* ipiv, 
 
191
                      dcomplex_t* w, int const* lw, int* info);
 
192
 
 
193
  void LAPACK_SSYTRS (char const* uplo, int const* n, int const* nrhs, 
 
194
                      float const* a, int const* lda, int const* ipiv, 
 
195
                      float* b, int const* ldb, int* info);
 
196
  void LAPACK_DSYTRS (char const* uplo, int const* n, int const* nrhs, 
 
197
                      double const* a, int const* lda, int const* ipiv, 
 
198
                      double* b, int const* ldb, int* info);
 
199
  void LAPACK_CSYTRS (char const* uplo, int const* n, int const* nrhs,
 
200
                      fcomplex_t const* a, int const* lda, int const* ipiv, 
 
201
                      fcomplex_t* b, int const* ldb, int* info);
 
202
  void LAPACK_ZSYTRS (char const* uplo, int const* n, int const* nrhs,
 
203
                      dcomplex_t const* a, int const* lda, int const* ipiv, 
 
204
                      dcomplex_t* b, int const* ldb, int* info);
 
205
 
 
206
  void LAPACK_CHETRS (char const* uplo, int const* n, int const* nrhs,
 
207
                      fcomplex_t const* a, int const* lda, int const* ipiv, 
 
208
                      fcomplex_t* b, int const* ldb, int* info);
 
209
  void LAPACK_ZHETRS (char const* uplo, int const* n, int const* nrhs,
 
210
                      dcomplex_t const* a, int const* lda, int const* ipiv, 
 
211
                      dcomplex_t* b, int const* ldb, int* info);
 
212
 
 
213
 
 
214
  /* symmetric/Hermitian indefinite and complex symmetric in packed storage */
 
215
 
 
216
  void LAPACK_SSPSV (char const* uplo, int const* n, int const* nrhs, 
 
217
                     float* ap, int* ipiv, 
 
218
                     float* b, int const* ldb, int* info);
 
219
  void LAPACK_DSPSV (char const* uplo, int const* n, int const* nrhs, 
 
220
                     double* ap, int* ipiv, 
 
221
                     double* b, int const* ldb, int* info);
 
222
  void LAPACK_CSPSV (char const* uplo, int const* n, int const* nrhs,
 
223
                     fcomplex_t* ap, int* ipiv, 
 
224
                     fcomplex_t* b, int const* ldb, int* info);
 
225
  void LAPACK_ZSPSV (char const* uplo, int const* n, int const* nrhs,
 
226
                     dcomplex_t* ap, int* ipiv, 
 
227
                     dcomplex_t* b, int const* ldb, int* info);
 
228
 
 
229
  void LAPACK_CHPSV (char const* uplo, int const* n, int const* nrhs,
 
230
                     fcomplex_t* ap, int* ipiv, 
 
231
                     fcomplex_t* b, int const* ldb, int* info);
 
232
  void LAPACK_ZHPSV (char const* uplo, int const* n, int const* nrhs,
 
233
                     dcomplex_t* ap, int* ipiv, 
 
234
                     dcomplex_t* b, int const* ldb, int* info);
 
235
 
 
236
  void LAPACK_SSPTRF (char const* uplo, int const* n, 
 
237
                      float* ap, int* ipiv, int* info);
 
238
  void LAPACK_DSPTRF (char const* uplo, int const* n, 
 
239
                      double* ap, int* ipiv, int* info);
 
240
  void LAPACK_CSPTRF (char const* uplo, int const* n, 
 
241
                      fcomplex_t* ap, int* ipiv, int* info);
 
242
  void LAPACK_ZSPTRF (char const* uplo, int const* n, 
 
243
                      dcomplex_t* ap, int* ipiv, int* info);
 
244
 
 
245
  void LAPACK_CHPTRF (char const* uplo, int const* n, 
 
246
                      fcomplex_t* ap, int* ipiv, int* info);
 
247
  void LAPACK_ZHPTRF (char const* uplo, int const* n, 
 
248
                      dcomplex_t* ap, int* ipiv, int* info);
 
249
 
 
250
  void LAPACK_SSPTRS (char const* uplo, int const* n, int const* nrhs, 
 
251
                      float const* ap, int const* ipiv, 
 
252
                      float* b, int const* ldb, int* info);
 
253
  void LAPACK_DSPTRS (char const* uplo, int const* n, int const* nrhs, 
 
254
                      double const* ap, int const* ipiv, 
 
255
                      double* b, int const* ldb, int* info);
 
256
  void LAPACK_CSPTRS (char const* uplo, int const* n, int const* nrhs,
 
257
                      fcomplex_t const* ap, int const* ipiv, 
 
258
                      fcomplex_t* b, int const* ldb, int* info);
 
259
  void LAPACK_ZSPTRS (char const* uplo, int const* n, int const* nrhs,
 
260
                      dcomplex_t const* ap, int const* ipiv, 
 
261
                      dcomplex_t* b, int const* ldb, int* info);
 
262
 
 
263
  void LAPACK_CHPTRS (char const* uplo, int const* n, int const* nrhs,
 
264
                      fcomplex_t const* ap, int const* ipiv, 
 
265
                      fcomplex_t* b, int const* ldb, int* info);
 
266
  void LAPACK_ZHPTRS (char const* uplo, int const* n, int const* nrhs,
 
267
                      dcomplex_t const* ap, int const* ipiv, 
 
268
                      dcomplex_t* b, int const* ldb, int* info);
 
269
 
 
270
 
 
271
  /**********************************************************************/
 
272
  /*                         eigenproblems                              */
 
273
  /**********************************************************************/
 
274
 
 
275
  void LAPACK_SGEES (const char* jobvs, const char* sort, logical_t* select, const int* n,
 
276
                     float* a, const int * lda, const int* sdim, float* wr, float* wi,
 
277
                     float* vs, const int * ldvs, float* work, const int * lwork,
 
278
                     bool* bwork, int* info);
 
279
 
 
280
  void LAPACK_DGEES (const char* jobvs, const char* sort, logical_t* select, const int* n,
 
281
                     double* a, const int * lda, const int* sdim, double* wr, double* wi,
 
282
                     double* vs, const int * ldvs, double* work, const int * lwork,
 
283
                     bool* bwork, int* info);
 
284
 
 
285
  void LAPACK_CGEES( const char* jobvs, const char* sort, logical_t* select, const int *n,
 
286
                     fcomplex_t* a, const int * lda, int * sdim, fcomplex_t* w, fcomplex_t* vs,
 
287
                     const int * ldvs, fcomplex_t* work, const int * lwork, float* rwork,
 
288
                     bool* bwork, int* info );
 
289
 
 
290
  void LAPACK_ZGEES( const char* jobvs, const char* sort, const logical_t* select, const int *n,
 
291
                     dcomplex_t* a, const int * lda, int * sdim, dcomplex_t* w, dcomplex_t* vs,
 
292
                     const int * ldvs, dcomplex_t* work, const int * lwork, double* rwork,
 
293
                     bool* bwork, int* info );
 
294
 
 
295
 
 
296
  void LAPACK_SGEEV( const char* jobvl, const char* jobvr, const int* n, float* a,
 
297
                    const int* lda, float* wr, float* wi, float* vl, const int* ldvl,
 
298
                    float* vr, const int* ldvr, float* work, const int* lwork, int* info );
 
299
 
 
300
  void LAPACK_DGEEV( const char* jobvl, const char* jobvr, const int* n, double* a,
 
301
                    const int* lda, double* wr, double* wi, double* vl, const int* ldvl,
 
302
                    double* vr, const int* ldvr, double* work, const int* lwork, int* info );
 
303
 
 
304
  void LAPACK_CGEEV( const char* jobvl, const char* jobvr, const int* n, fcomplex_t* a,
 
305
                    const int* lda, fcomplex_t* w, fcomplex_t* vl, const int* ldvl,
 
306
                    fcomplex_t* vr, const int* ldvr, fcomplex_t* work, const int* lwork,
 
307
                    float* rwork, int* info );
 
308
 
 
309
  void LAPACK_ZGEEV( const char* jobvl, const char* jobvr, const int* n, dcomplex_t* a,
 
310
                    const int* lda, dcomplex_t* w, dcomplex_t* vl, const int* ldvl,
 
311
                    dcomplex_t* vr, const int* ldvr, dcomplex_t* work, const int* lwork,
 
312
                    double* rwork, int* info );
 
313
 
 
314
 
 
315
  void LAPACK_SSYEV( const char* jobz, const char* uplo, const int *n,
 
316
                     float* a, const int * lda, float* w,
 
317
                     float* work, const int * lwork, int* info );
 
318
 
 
319
  void LAPACK_DSYEV( const char* jobz, const char* uplo, const int *n,
 
320
                     double* a, const int * lda, double* w,
 
321
                     double* work, const int * lwork, int* info );
 
322
 
 
323
  void LAPACK_CHEEV( const char* jobz, const char* uplo, const int *n,
 
324
                     fcomplex_t* a, const int * lda, float* w,
 
325
                     fcomplex_t* work, const int * lwork, float* rwork,
 
326
                     int* info );
 
327
 
 
328
  void LAPACK_ZHEEV( const char* jobz, const char* uplo, const int *n,
 
329
                     dcomplex_t* a, const int * lda, double* w,
 
330
                     dcomplex_t* work, const int * lwork, double* rwork,
 
331
                     int* info );
 
332
 
 
333
  
 
334
  void LAPACK_SSYEVD( const char* jobz, const char* uplo, const int* n,
 
335
                      float* a, const int* lda, float* w,
 
336
                      float* work, const int* lwork,
 
337
                      int* iwork, const int* liwork, int* info);
 
338
 
 
339
  void LAPACK_DSYEVD( const char* jobz, const char* uplo, const int* n,
 
340
                      double* a, const int* lda, double* w,
 
341
                      double* work, const int* lwork,
 
342
                      int* iwork, const int* liwork, int* info);
 
343
 
 
344
  void LAPACK_CHEEVD( const char* jobz, const char* uplo, const int* n,
 
345
                      fcomplex_t* a, const int* lda, float* w,
 
346
                      fcomplex_t* work, const int* lwork, float* rwork, const int* lrwork,
 
347
                      int* iwork, const int* liwork, int* info);
 
348
 
 
349
  void LAPACK_ZHEEVD( const char* jobz, const char* uplo, const int* n,
 
350
                      dcomplex_t* a, const int* lda, double* w,
 
351
                      dcomplex_t* work, const int* lwork, double* rwork, const int* lrwork,
 
352
                      int* iwork, const int* liwork, int* info);
 
353
 
 
354
 
 
355
  void LAPACK_SSYEVX( const char* jobz, const char* range, const char* uplo, const int* n,
 
356
                      float* a, const int* lda, const float* vl, const float* vu, const int* il, const int* iu,
 
357
                      const float* abstol, int* m, float* w, float* z, const int* ldz,
 
358
                      float* work, const int* lwork,
 
359
                      int* iwork, int* ifail, int* info);
 
360
 
 
361
  void LAPACK_DSYEVX( const char* jobz, const char* range, const char* uplo, const int* n,
 
362
                      double* a, const int* lda, const double* vl, const double* vu, const int* il, const int* iu,
 
363
                      const double* abstol, int* m, double* w, double* z, const int* ldz,
 
364
                      double* work, const int* lwork,
 
365
                      int* iwork, int* ifail, int* info);
 
366
 
 
367
  void LAPACK_CHEEVX( const char* jobz, const char* range, const char* uplo, const int* n,
 
368
                      fcomplex_t* a, const int* lda, const float* vl, const float* vu, const int* il, const int* iu,
 
369
                      const float* abstol, int* m, float* w, fcomplex_t* z, const int* ldz,
 
370
                      fcomplex_t* work, const int* lwork, float* rwork,
 
371
                      int* iwork, int* ifail, int* info);
 
372
 
 
373
  void LAPACK_ZHEEVX( const char* jobz, const char* range, const char* uplo, const int* n,
 
374
                      dcomplex_t* a, const int* lda, const double* vl, const double* vu, const int* il, const int* iu,
 
375
                      const double* abstol, int* m, double* w, dcomplex_t* z, const int* ldz,
 
376
                      dcomplex_t* work, const int* lwork, double* rwork,
 
377
                      int* iwork, int* ifail, int* info);
 
378
 
 
379
 
 
380
  void LAPACK_CTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
 
381
                     fcomplex_t* t, const int * ldt, fcomplex_t* vl, const int* ldvl,
 
382
                     fcomplex_t* vr, const int * ldvr, const int * nm, int* m, fcomplex_t* work,
 
383
                     float* rwork, int* info );
 
384
 
 
385
  void LAPACK_ZTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
 
386
                     dcomplex_t* t, const int * ldt, dcomplex_t* vl, const int* ldvl,
 
387
                     dcomplex_t* vr, const int * ldvr, const int * nm, int* m, dcomplex_t* work,
 
388
                     double* rwork, int* info );
 
389
 
 
390
  void LAPACK_STREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
 
391
                     float* t, const int * ldt, float* vl, const int* ldvl,
 
392
                     float* vr, const int * ldvr, const int * nm, int* m, float* work,
 
393
                     int* info );
 
394
 
 
395
  void LAPACK_DTREVC( const char* side, const char* howmny, const logical_t* select, const int *n,
 
396
                     double* t, const int * ldt, double* vl, const int* ldvl,
 
397
                     double* vr, const int * ldvr, const int * nm, int* m, double* work,
 
398
                     int* info );
 
399
 
 
400
 
 
401
  void LAPACK_STREXC( const char* compq, const int *n,
 
402
                     float* t, const int * ldt, float* q, const int* ldq,
 
403
                     int* ifst, const int * ilst, float* work, int* info );
 
404
 
 
405
  void LAPACK_DTREXC( const char* compq, const int *n,
 
406
                     double* t, const int * ldt, double* q, const int* ldq,
 
407
                     int* ifst, const int * ilst, double* work, int* info );
 
408
 
 
409
  void LAPACK_CTREXC( const char* compq, const int *n,
 
410
                     fcomplex_t* t, const int * ldt, fcomplex_t* q, const int* ldq,
 
411
                     int* ifst, const int * ilst, int* info );
 
412
 
 
413
  void LAPACK_ZTREXC( const char* compq, const int *n,
 
414
                     dcomplex_t* t, const int * ldt, dcomplex_t* q, const int* ldq,
 
415
                     int* ifst, const int * ilst, int* info );
 
416
 
 
417
  /* Hessenberg matrices */
 
418
 
 
419
  void LAPACK_SHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, float* H, 
 
420
                      const int* LDH, float* WR, float* WI, float* Z, int const* LDZ,
 
421
                      float* WORK, const int* LWORK, int* INFO ) ;
 
422
 
 
423
  void LAPACK_CHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, fcomplex_t* H, 
 
424
                      const int* LDH, fcomplex_t* W, fcomplex_t* Z, int const* LDZ,
 
425
                      fcomplex_t* WORK, const int* LWORK, int* INFO ) ;
 
426
 
 
427
  void LAPACK_DHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, double* H, 
 
428
                      const int* LDH, double* WR, double* WI, double* Z, int const* LDZ,
 
429
                      double* WORK, const int* LWORK, int* INFO ) ;
 
430
 
 
431
  void LAPACK_ZHSEQR( const char* JOB, const char* COMPZ, const int* N, const int* ILO, const int* IHI, dcomplex_t* H, 
 
432
                      const int* LDH, dcomplex_t* W, dcomplex_t* Z, int const* LDZ,
 
433
                      dcomplex_t* WORK, const int* LWORK, int* INFO ) ;
 
434
 
 
435
  /* Hermitian tridiagonal matrices */
 
436
  
 
437
  void LAPACK_SSTEQR( char const* compz, int const* n, float* d, float* E, float* z, int const* ldz, float* work, int* info ) ;
 
438
  void LAPACK_DSTEQR( char const* compz, int const* n, double* d, double* E, double* z, int const* ldz, double* work, int* info ) ;
 
439
 
 
440
  /* Hermitian banded matrices */
 
441
  
 
442
  void LAPACK_SSBEV( char const* jobz, char const* uplo, int const* n,
 
443
                     int const* kd, float* ab, int const* ldab, float* w,
 
444
                     float* z, int const* ldz, float* work, int* info );
 
445
 
 
446
  void LAPACK_DSBEV( char const* jobz, char const* uplo, int const* n,
 
447
                     int const* kd, double* ab, int const* ldab, double* w,
 
448
                     double* z, int const* ldz, double* work, int* info );
 
449
 
 
450
  void LAPACK_CHBEV( char const* jobz, char const* uplo, int const* n,
 
451
                     int const* kd, fcomplex_t* ab, int const* ldab, float* w,
 
452
                     fcomplex_t* z, int const* ldz, fcomplex_t* work,
 
453
                     float* rwork, int* info );
 
454
 
 
455
  void LAPACK_ZHBEV( char const* jobz, char const* uplo, int const* n,
 
456
                     int const* kd, dcomplex_t* ab, int const* ldab, double* w,
 
457
                     dcomplex_t* z, int const* ldz, dcomplex_t* work,
 
458
                     double* rwork, int* info );
 
459
 
 
460
 
 
461
  void LAPACK_SSBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
 
462
                      int const* kd, float* ab, int const* ldab, float* q, int const* ldq,
 
463
                      const float* vl, const float* vu, const int* il, const int* iu,
 
464
                      const float* abstol, int* m,
 
465
                      float* w, float* z, int const* ldz, float* work,
 
466
                      int* iwork, int* ifail, int* info );
 
467
 
 
468
  void LAPACK_DSBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
 
469
                      int const* kd, double* ab, int const* ldab, double* q, int const* ldq,
 
470
                      const double* vl, const double* vu, const int* il, const int* iu,
 
471
                      const double* abstol, int* m,
 
472
                      double* w, double* z, int const* ldz, double* work,
 
473
                      int* iwork, int* ifail, int* info );
 
474
 
 
475
  void LAPACK_CHBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
 
476
                      int const* kd, fcomplex_t* ab, int const* ldab, fcomplex_t* q, int const* ldq,
 
477
                      const float* vl, const float* vu, const int* il, const int* iu,
 
478
                      const float* abstol, int* m,
 
479
                      float* w, fcomplex_t* z, int const* ldz, fcomplex_t* work, float* rwork,
 
480
                      int* iwork, int* ifail, int* info );
 
481
 
 
482
  void LAPACK_ZHBEVX( char const* jobz, char const* range, char const* uplo, int const* n,
 
483
                      int const* kd, dcomplex_t* ab, int const* ldab, dcomplex_t* q, int const* ldq,
 
484
                      const double* vl, const double* vu, const int* il, const int* iu,
 
485
                      const double* abstol, int* m,
 
486
                      double* w, dcomplex_t* z, int const* ldz, dcomplex_t* work, double* rwork,
 
487
                      int* iwork, int* ifail, int* info );
 
488
 
 
489
 
 
490
  /*********************************************************************/
 
491
  /*       Auxiliary routines for eigenvalue problems                  */
 
492
  /*********************************************************************/
 
493
 
 
494
  void LAPACK_SSYTRD( char const* uplo, int const* n, float* a, int const* lda, float* d,
 
495
                      float* e, float* tau, float* work, int const* lwork, int* INFO ) ;
 
496
 
 
497
  void LAPACK_DSYTRD( char const* uplo, int const* n, double* a, int const* lda, double* d,
 
498
                      double* e, double* tau, double* work, int const* lwork, int* INFO ) ;
 
499
 
 
500
  /*********************************************************************/
 
501
  /*                             SVD                                   */
 
502
  /*********************************************************************/
 
503
 
 
504
  void LAPACK_SGESVD (char const* jobu, char const* jobvt, 
 
505
                      int const* m, int const* n, float* a, int const* lda, 
 
506
                      float* s, float* u, int const* ldu, 
 
507
                      float* vt, int const* ldvt,
 
508
                      float* work, int const* lwork, int* info); 
 
509
  void LAPACK_DGESVD (char const* jobu, char const* jobvt, 
 
510
                      int const* m, int const* n, double* a, int const* lda, 
 
511
                      double* s, double* u, int const* ldu, 
 
512
                      double* vt, int const* ldvt,
 
513
                      double* work, int const* lwork, int* info); 
 
514
  void LAPACK_CGESVD (char const* jobu, char const* jobvt, 
 
515
                      int const* m, int const* n, 
 
516
                      fcomplex_t* a, int const* lda, 
 
517
                      float* s, fcomplex_t* u, int const* ldu, 
 
518
                      fcomplex_t* vt, int const* ldvt,
 
519
                      fcomplex_t* work, int const* lwork, 
 
520
                      float* rwork, int* info); 
 
521
  void LAPACK_ZGESVD (char const* jobu, char const* jobvt, 
 
522
                      int const* m, int const* n, 
 
523
                      dcomplex_t* a, int const* lda, 
 
524
                      double* s, dcomplex_t* u, int const* ldu, 
 
525
                      dcomplex_t* vt, int const* ldvt,
 
526
                      dcomplex_t* work, int const* lwork, 
 
527
                      double* rwork, int* info); 
 
528
 
 
529
  void LAPACK_SGESDD (char const* jobz, int const* m, int const* n, 
 
530
                      float* a, int const* lda, 
 
531
                      float* s, float* u, int const* ldu, 
 
532
                      float* vt, int const* ldvt,
 
533
                      float* work, int const* lwork, int* iwork, int* info); 
 
534
  void LAPACK_DGESDD (char const* jobz, int const* m, int const* n, 
 
535
                      double* a, int const* lda, 
 
536
                      double* s, double* u, int const* ldu, 
 
537
                      double* vt, int const* ldvt,
 
538
                      double* work, int const* lwork, int* iwork, int* info); 
 
539
  void LAPACK_CGESDD (char const* jobz, int const* m, int const* n, 
 
540
                      fcomplex_t* a, int const* lda, 
 
541
                      float* s, fcomplex_t* u, int const* ldu, 
 
542
                      fcomplex_t* vt, int const* ldvt,
 
543
                      fcomplex_t* work, int const* lwork, 
 
544
                      float* rwork, int* iwork, int* info); 
 
545
  void LAPACK_ZGESDD (char const* jobz, int const* m, int const* n, 
 
546
                      dcomplex_t* a, int const* lda, 
 
547
                      double* s, dcomplex_t* u, int const* ldu, 
 
548
                      dcomplex_t* vt, int const* ldvt,
 
549
                      dcomplex_t* work, int const* lwork, 
 
550
                      double* rwork, int* iwork, int* info); 
 
551
 
 
552
 
 
553
  /*********************************************************************/
 
554
  /*                    QR factorization                               */
 
555
  /*********************************************************************/
 
556
 
 
557
  void LAPACK_SGEQRF( const int* m, const int* n, float* a, const int* lda,
 
558
                      float* tau, float* work, const int* lwork, int* info );
 
559
  void LAPACK_DGEQRF( const int* m, const int* n, double* a, const int* lda,
 
560
                      double* tau, double* work, const int* lwork, int* info );
 
561
  void LAPACK_CGEQRF( const int* m, const int* n, fcomplex_t* a, const int* lda,
 
562
                      fcomplex_t* tau, fcomplex_t* work, const int* lwork, int* info );
 
563
  void LAPACK_ZGEQRF( const int* m, const int* n, dcomplex_t* a, const int* lda,
 
564
                      dcomplex_t* tau, dcomplex_t* work, const int* lwork, int* info );
 
565
 
 
566
 
 
567
 
 
568
  void LAPACK_SORMQR( const char* side, const char* trans, const int* m,
 
569
                      const int* n, const int* k, const float* a,
 
570
                      const int* lda, const float* tau,
 
571
                      float* c, const int* ldc, float* work,
 
572
                      const int* lwork, int* info );
 
573
  void LAPACK_DORMQR( const char* side, const char* trans, const int* m,
 
574
                      const int* n, const int* k, const double* a,
 
575
                      const int* lda, const double* tau,
 
576
                      double* c, const int* ldc, double* work,
 
577
                      const int* lwork, int* info );
 
578
  void LAPACK_CUNMQR( const char* side, const char* trans, const int* m,
 
579
                      const int* n, const int* k, const fcomplex_t* a,
 
580
                      const int* lda, const fcomplex_t* tau,
 
581
                      fcomplex_t* c, const int* ldc, fcomplex_t* work,
 
582
                      const int* lwork, int* info );
 
583
  void LAPACK_ZUNMQR( const char* side, const char* trans, const int* m,
 
584
                      const int* n, const int* k, const dcomplex_t* a,
 
585
                      const int* lda, const dcomplex_t* tau,
 
586
                      dcomplex_t* c, const int* ldc, dcomplex_t* work,
 
587
                      const int* lwork, int* info );
 
588
 
 
589
  void LAPACK_SORGQR( const int* m, const int* n, const int* k,
 
590
                      float* a, const int* lda, float* tau,
 
591
                      float* work, const int* lwork, const int* info);
 
592
  void LAPACK_DORGQR( const int* m, const int* n, const int* k,
 
593
                      double* a, const int* lda, double* tau,
 
594
                      double* work, const int* lwork, const int* info);
 
595
  void LAPACK_CUNGQR( const int* m, const int* n, const int* k,
 
596
                      fcomplex_t* a, const int* lda, fcomplex_t* tau,
 
597
                      fcomplex_t* work, const int* lwork, const int* info);
 
598
  void LAPACK_ZUNGQR( const int* m, const int* n, const int* k,
 
599
                      dcomplex_t* a, const int* lda, dcomplex_t* tau,
 
600
                      dcomplex_t* work, const int* lwork, const int* info);
 
601
 
 
602
 
 
603
 
 
604
  /********************************************************************/
 
605
  /*                          auxiliary                               */
 
606
  /********************************************************************/
 
607
 
 
608
  int LAPACK_ILAENV (int const* ispec, const char* name, const char* opt,
 
609
                     int const* n1, int const* n2, int const* n3, 
 
610
                     int const* n4, int, int); 
 
611
 
 
612
}
 
613
 
 
614
#endif