Merge branch 'master' of git@git.gromacs.org:gromacs
[gromacs/rigid-bodies.git] / include / gmx_lapack.h
blob348fe598e88c857f15a6ce00c51a6c8f7c68bc06
1 /*
2 *
3 * This source code is part of
4 *
5 * G R O M A C S
6 *
7 * GROningen MAchine for Chemical Simulations
8 *
9 * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
10 * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
11 * Copyright (c) 2001-2008, The GROMACS development team,
12 * check out http://www.gromacs.org for more information.
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
19 * If you want to redistribute modifications, please consider that
20 * scientific software is very special. Version control is crucial -
21 * bugs must be traceable. We will be happy to consider code for
22 * inclusion in the official distribution, but derived work must not
23 * be called official GROMACS. Details are found in the README & COPYING
24 * files - if they are missing, get the official version at www.gromacs.org.
26 * To help us fund GROMACS development, we humbly ask that you cite
27 * the papers on the package - you can find them in the top README file.
29 * For more info, check our website at http://www.gromacs.org
31 * And Hey:
32 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
35 #ifndef _GMX_LAPACK_H_
36 #define _GMX_LAPACK_H_
39 #ifdef HAVE_CONFIG_H
40 #include <config.h>
41 #endif
44 /** @file
46 * @brief Header definitions for the standard LAPACK library.
48 * This is the subset of LAPACK routines used for the
49 * linear algebra operations in Gromacs. Most of the execution time
50 * will be spent in the BLAS routines, which you hopefully have an
51 * optimized version of. Gromacs includes reference implementations
52 * of both BLAS and LAPACK so it compiles everywhere, but you should
53 * really try to find a vendor or otherwise optimized version at least
54 * of BLAS for better performance.
56 * Do NOT use this code for other purposes - we only provide this as a
57 * simple fallback/reference implementation when no optimized BLAS
58 * is present. If you need an implementation for your own code
59 * there are several much faster versions out there.
61 * All routines are compatible with the LAPACK/BLAS reference implementations,
62 * meaning they assume fortran-style matrix row/column organization.
64 * There is plenty of documentation for these routines available
65 * at http://www.netlib.org/lapack , so there is no point in repeating
66 * it here.
71 #ifdef __cplusplus
72 extern "C" {
73 #endif
74 #if 0
76 #endif
78 #ifndef F77_FUNC
79 #define F77_FUNC(name,NAME) name ## _
80 #endif
82 #include "types/simple.h"
85 /* Double precision */
87 void
88 F77_FUNC(dbdsdc,DBDSDC)(const char *uplo, const char *compq, int *n, double *d, double *e, double *u,
89 int *ldu, double *vt, int *ldvt, double *q, int *iq, double *work,
90 int *iwork, int *info);
92 void
93 F77_FUNC(dgetf2,DGETF2)(int *m, int *n, double *a, int *lda, int *ipiv, int *info);
95 void
96 F77_FUNC(dlamrg,DLAMRG)(int *n1, int *n2, double *a, int *dtrd1, int *dtrd2, int *index);
98 void
99 F77_FUNC(dlarnv,DLARNV)(int *idist, int *iseed, int *n, double *x);
101 void
102 F77_FUNC(dlasd0,DLASD0)(int *n, int *sqre, double *d, double *e, double *u,
103 int *ldu, double *vt, int *ldvt, int *smlsiz, int *iwork,
104 double *work, int *info);
106 void
107 F77_FUNC(dlasda,DLASDA)(int *icompq, int *smlsiz, int *n, int *sqre, double *d, double *e,
108 double *u, int *ldu, double *vt, int *k, double *difl, double *difr,
109 double *z, double *poles, int *givptr, int *givcol, int *ldgcol,
110 int *perm, double *givnum, double *c, double *s,
111 double *work, int *iwork, int *info);
113 void
114 F77_FUNC(dlasq6,DLASQ6)(int *i0, int *n0, double *z, int *pp, double *dmin, double *dmin1,
115 double *dmin2, double *dn, double *dnm1, double *dnm2);
117 void
118 F77_FUNC(dorgl2,DORGL2)(int *m, int *n, int *k, double *a, int *lda,
119 double *tau, double *work, int *info);
121 void
122 F77_FUNC(dbdsqr,DBDSQR)(const char *uplo, int *n, int *ncvt, int *nru, int *ncc, double *d,
123 double *e, double *vt, int *ldvt, double *u, int *ldu,
124 double *c, int *ldc, double *work, int *info);
126 void
127 F77_FUNC(dgetrf,DGETRF)(int *m, int *n, double *a, int *lda, int *ipiv, int *info);
129 void
130 F77_FUNC(dgetri,DGETRI)(int *n, double *a, int *lda, int *ipiv, double *work,
131 int *lwork, int *info);
133 void
134 F77_FUNC(dgetrs,DGETRS)(const char *trans, int *n, int *nrhs, double *a, int *lda, int *ipiv,
135 double *b, int *ldb, int *info);
137 void
138 F77_FUNC(dtrtri,DTRTRI)(const char *uplo, const char *diag, int *n, double *a, int *lda, int *info);
140 void
141 F77_FUNC(dtrti2,DTRTI2)(const char *uplo, const char *diag, int *n, double *a, int *lda, int *info);
143 double
144 F77_FUNC(dlange,DLANGE)(const char *norm, int *m, int *n, double *a, int *lda, double *work);
146 void
147 F77_FUNC(dlarrbx,DLARRBX)(int *n, double *d, double *l, double *ld, double *lld, int *ifirst,
148 int *ilast, double *rtol1, double *rtol2, int *offset, double *w,
149 double *wgap, double *werr, double *work, int *iwork, int *info);
151 void
152 F77_FUNC(dlasd1,DLASD1)(int *nl, int *nr, int *sqre, double *d, double *alpha, double *beta,
153 double *u, int *ldu, double *vt, int *ldvt, int *idxq, int *iwork,
154 double *work, int *info);
156 void
157 F77_FUNC(dlasdq,DLASDQ)(const char *uplo, int *sqre, int *n, int *ncvt, int *nru, int *ncc,
158 double *d, double *e, double *vt, int *ldvt, double *u, int *ldu,
159 double *c, int *ldc, double *work, int *info);
161 void
162 F77_FUNC(dlasr,DLASR)(const char *side, const char *pivot, const char *direct, int *m, int *n, double *c,
163 double *s, double *a, int *lda);
165 void
166 F77_FUNC(dorglq,DORGLQ)(int *m, int *n, int *k, double *a, int *lda,
167 double *tau, double *work, int *lwork, int *info);
169 void
170 F77_FUNC(dormtr,DORMTR)(const char *side, const char *uplo, const char *trans, int *m, int *n, double *a,
171 int *lda, double *tau, double *c, int *ldc,
172 double *work, int *lwork, int *info);
174 void
175 F77_FUNC(dgebd2,DGEBD2)(int *m, int *n, double *a, int *lda, double *d, double *e,
176 double *tauq, double *taup, double *work, int *info);
178 void
179 F77_FUNC(dlabrd,DLABRD)(int *m, int *n, int *nb, double *a, int *lda, double *d,
180 double *e, double *tauq, double *taup, double *x,
181 int *ldx, double *y, int *ldy);
183 double
184 F77_FUNC(dlanst,DLANST)(const char *norm, int *n, double *d, double *e);
186 double
187 F77_FUNC(dlansy,DLANSY)(const char *norm, const char *uplo, int *n, double *a, int *lda, double *work);
189 void
190 F77_FUNC(dlarrex,DLARREX)(const char *range, int *n, double *vl, double *vu, int *il, int *iu,
191 double *d, double *e, double *tol, int *nsplit,
192 int *isplit, int *m, double *w, int *iblock, int *indexw,
193 double *gersch, double *work, int *iwork, int *info);
195 void
196 F77_FUNC(dlasd2,DLASD2)(int *nl, int *nr, int *sqre, int *k, double *d, double *z,
197 double *alpha, double *beta, double *u, int *ldu, double *vt,
198 int *ldvt, double *dsigma, double *u2, int *ldu2, double *vt2,
199 int *ldvt2, int *idxp, int *idx, int *idxc,
200 int *idxq, int *coltyp, int *info);
202 void
203 F77_FUNC(dlasdt,DLASDT)(int *n, int *lvl, int *nd, int *inode, int *ndiml,
204 int *ndimr, int *msub);
206 void
207 F77_FUNC(dlasrt,DLASRT)(const char *id, int *n, double *d, int *info);
209 void
210 F77_FUNC(dlasrt2,DLASRT2)(const char *id, int *n, double *d, int *key, int *info);
212 void
213 F77_FUNC(ilasrt2,ILASRT2)(const char *id, int *n, int *d, int *key, int *info);
215 void
216 F77_FUNC(dorgqr,DORGQR)(int *m, int *n, int *k, double *a, int *lda, double *tau,
217 double *work, int *lwork, int *info);
219 void
220 F77_FUNC(dstebz,DSTEBZ)(const char *range, const char *order, int *n, double *vl, double *vu,
221 int *il, int *iu, double *abstol, double *d, double *e,
222 int *m, int *nsplit, double *w, int *iblock, int *isplit,
223 double *work, int *iwork, int *info);
225 void
226 F77_FUNC(dsteqr,DSTEQR)(const char *compz, int *n, double *d__, double *e,
227 double *z__, int *ldz, double *work, int *info);
229 void
230 F77_FUNC(dgebrd,DGEBRD)(int *m, int *n, double *a, int *lda, double *d, double *e,
231 double *tauq, double *taup, double *work, int *lwork, int *info);
233 void
234 F77_FUNC(dlacpy,DLACPY)(const char *uplo, int *m, int *n, double *a, int *lda, double *b, int *ldb);
236 double
237 F77_FUNC(dlapy2,DLAPY2)(double * x, double * y);
240 void
241 F77_FUNC(dlarrfx,DLARRFX)(int *n, double *d, double *l, double *ld, double *lld, int *ifirst,
242 int *ilast, double *w, double *sigma, double *dplus, double *lplus,
243 double *work, int *info);
245 void
246 F77_FUNC(dlasd3,DLASD3)(int *nl, int *nr, int *sqre, int *k, double *d, double *q, int *ldq,
247 double *dsigma, double *u, int *ldu, double *u2, int *ldu2,
248 double *vt, int *ldvt, double *vt2, int *ldvt2, int *idxc,
249 int *ctot, double *z, int *info);
251 void
252 F77_FUNC(dlaset,DLASET)(const char *uplo, int *m, int *n, double *alpha,
253 double *beta, double *a, int *lda);
255 void
256 F77_FUNC(dlassq,DLASSQ)(int *n, double *x, int *incx, double *scale, double *sumsq);
258 void
259 F77_FUNC(dorm2l,DORM2L)(const char *side, const char *trans, int *m, int *n, int *k, double *a, int *lda,
260 double *tau, double *c, int *ldc, double *work, int *info);
262 void
263 F77_FUNC(dstegr,DSTEGR)(const char *jobz, const char *range, int *n, double *d, double *e, double *vl,
264 double *vu, int *il, int *iu, double *abstol, int *m, double *w,
265 double *z, int *ldz, int *isuppz, double *work,
266 int *lwork, int *iwork, int *liwork, int *info);
268 void
269 F77_FUNC(ssteqr,SSTEQR)(const char *compz, int *n, float *d__, float *e,
270 float *z__, int *ldz, float *work, int *info);
272 void
273 F77_FUNC(dgelq2,DGELQ2)(int *m, int *n, double *a, int *lda, double *tau, double *work, int *info);
275 void
276 F77_FUNC(dlae2,DLAE2)(double *a, double *b, double *c, double *rt1, double *rt2);
278 void
279 F77_FUNC(dlaev2,DLAEV2)(double *a, double *b, double *c, double *rt1, double *rt2,
280 double *cs1, double *cs2);
282 void
283 F77_FUNC(dlar1vx,DLAR1VX)(int *n, int *b1, int *bn, double *sigma, double *d, double *l, double *ld,
284 double *lld, double *eval, double *gersch, double *z, double *ztz, double *mingma,
285 int *r, int *isuppz, double *work);
287 void
288 F77_FUNC(dlarrvx,DLARRVX)(int *n, double *d, double *l, int *isplit, int *m, double *w,
289 int *iblock, int *indexw, double *gersch, double *tol, double *z, int *ldz,
290 int *isuppz, double *work, int *iwork, int *info);
292 void
293 F77_FUNC(dlasd4,DLASD4)(int *n, int *i, double *d, double *z, double *delta,
294 double *rho, double *sigma, double *work, int *info);
296 void
297 F77_FUNC(dlasq1,DLASQ1)(int *n, double *d, double *e, double *work, int *info);
300 void
301 F77_FUNC(dlasv2,DLASV2)(double *f, double *g, double *h, double *ssmin, double *ssmax,
302 double *snr, double *csr, double *snl, double *csl);
304 void
305 F77_FUNC(dorm2r,DORM2R)(const char *side, const char *trans, int *m, int *n, int *k, double *a,
306 int *lda, double *tau, double *c, int *ldc, double *work, int *info);
308 void
309 F77_FUNC(dstein,DSTEIN)(int *n, double *d, double *e, int *m, double *w, int *iblock, int *isplit,
310 double *z, int *ldz, double *work, int *iwork, int *ifail, int *info);
312 void
313 F77_FUNC(dgelqf,DGELQF)(int *m, int *n, double *a, int *lda, double *tau,
314 double *work, int *lwork, int *info);
316 void
317 F77_FUNC(dlaebz,DLAEBZ)(int *ijob, int *nitmax, int *n, int *mmax, int *minp, int *nbmin,
318 double *abstol, double *reltol, double *pivmin, double *d, double *e,
319 double *e2, int *nval, double *ab, double *c, int *mout, int *nab,
320 double *work, int *iwork, int *info);
322 void
323 F77_FUNC(dlarf,DLARF)(const char *side, int *m, int *n, double *v, int *incv, double *tau,
324 double *c, int *ldc, double *work);
326 void
327 F77_FUNC(dlartg,DLARTG)(double *f, double *g, double *cs, double *sn, double *r);
329 void
330 F77_FUNC(dlasd5,DLASD5)(int *i, double *d, double *z, double *delta,
331 double *rho, double *dsigma, double *work);
333 void
334 F77_FUNC(dlasq2,DLASQ2)(int *n, double *z, int *info);
336 void
337 F77_FUNC(dlasq3,DLASQ3)(int *i0, int *n0, double *z, int *pp, double *dmin,
338 double *sigma, double *desig, double *qmax, int *nfail,
339 int *iter, int *ndiv, int *ieee);
341 void
342 F77_FUNC(dlaswp,DLASWP)(int *n, double *a, int *lda, int *k1, int *k2, int *ipiv, int *incx);
344 void
345 F77_FUNC(dormbr,DORMBR)(const char *vect, const char *side, const char *trans, int *m, int *n, int *k,
346 double *a, int *lda, double *tau, double *c, int *ldc, double *work,
347 int *lwork, int *info);
349 void
350 F77_FUNC(dsterf,DSTERF)(int *n, double *d, double *e, int *info);
352 void
353 F77_FUNC(dgeqr2,DGEQR2)(int *m, int *n, double *a, int *lda, double *tau,
354 double *work, int *info);
356 void
357 F77_FUNC(dlaed6,DLAED6)(int *kniter, int *orgati, double *rho, double *d,
358 double *z, double *finit, double *tau, int *info);
360 void
361 F77_FUNC(dlarfb,DLARFB)(const char *side, const char *trans, const char *direct, const char *storev, int *m, int *n,
362 int *k, double *v, int *ldv, double *t, int *ldt, double *c,
363 int *ldc, double *work, int *ldwork);
365 void
366 F77_FUNC(dlaruv,DLARUV)(int *iseed, int *n, double *x);
368 void
369 F77_FUNC(dlasd6,DLASD6)(int *icompq, int *nl, int *nr, int *sqre, double *d, double *vf,
370 double *vl, double *alpha, double *beta, int *idxq, int *perm,
371 int *givptr, int *givcol, int *ldgcol, double *givnum, int *ldgnum,
372 double *poles, double *difl, double *difr, double *z, int *k,
373 double *c, double *s, double *work, int *iwork, int *info);
375 void
376 F77_FUNC(dlatrd,DLATRD)(const char *uplo, int *n, int *nb, double *a, int *lda, double *e,
377 double * tau, double *w, int *ldw);
379 void
380 F77_FUNC(dorml2,DORML2)(const char *side, const char *trans, int *m, int *n, int *k, double *a,
381 int *lda, double *tau, double *c, int *ldc, double *work, int *info);
383 void
384 F77_FUNC(dstevr,DSTEVR)(const char *jobz, const char *range, int *n, double *d, double *e, double *vl,
385 double *vu, int *il, int *iu, double *abstol, int *m, double *w,
386 double *z, int *ldz, int *isuppz, double *work,
387 int *lwork, int *iwork, int *liwork, int *info);
389 void
390 F77_FUNC(dsytrd,DSYTRD)(const char *uplo, int *n, double * a, int *lda, double *d,
391 double *e, double *tau, double *work, int *lwork, int *info);
393 void
394 F77_FUNC(dsyevr,DSYEVR)(const char *jobz, const char *range, const char *uplo, int *n,
395 double *a, int *lda, double *vl, double *vu, int *
396 il, int *iu, double *abstol, int *m, double *w,
397 double *z__, int *ldz, int *isuppz, double *work,
398 int *lwork, int *iwork, int *liwork, int *info);
400 void
401 F77_FUNC(dormql,DORMQL)(const char *side, const char *trans, int *m, int *n,
402 int *k, double *a, int *lda, double *tau, double *
403 c, int *ldc, double *work, int *lwork, int *info);
405 void
406 F77_FUNC(dormqr,DORMQR)(const char *side, const char *trans, int *m, int *n, int *k, double *a,
407 int *lda, double *tau, double *c, int *ldc,
408 double *work, int *lwork, int *info);
410 void
411 F77_FUNC(dorgbr,DORGBR)(const char *vect, int *m, int *n, int *k, double *a, int *lda,
412 double *tau, double *work, int *lwork, int *info);
414 void
415 F77_FUNC(dlasq5,DLASQ5)(int *i0, int *n0, double *z, int *pp, double *tau, double *dmin,
416 double *dmin1, double *dmin2, double *dn, double *dnm1,
417 double *dnm2, int *ieee);
419 void
420 F77_FUNC(dlasd8,DLASD8)(int *icompq, int *k, double *d, double *z, double *vf, double *vl,
421 double *difl, double *difr, int *lddifr, double *dsigma,
422 double *work, int *info);
424 void
425 F77_FUNC(dlascl,DLASCL)(const char *type, int *kl, int *ku, double *cfrom, double *cto, int *m,
426 int *n, double *a, int *lda, int *info);
428 void
429 F77_FUNC(dlarft,DLARFT)(const char *direct, const char *storev, int *n, int *k, double *v,
430 int *ldv, double *tau, double *t, int *ldt);
432 void
433 F77_FUNC(dlagts,DLAGTS)(int *job, int *n, double *a, double *b, double *c, double *d,
434 int *in, double *y, double *tol, int *info);
436 void
437 F77_FUNC(dgesdd,DGESDD)(const char *jobz, int *m, int *n, double *a, int *lda, double *s, double *u,
438 int *ldu, double *vt, int *ldvt, double *work, int *lwork,
439 int *iwork, int *info);
441 void
442 F77_FUNC(dsytd2,DSYTD2)(const char *uplo, int *n, double *a, int *lda, double *d,
443 double *e, double *tau, int *info);
445 void
446 F77_FUNC(dormlq,DORMLQ)(const char *side, const char *trans, int *m, int *n, int *k, double *a, int *lda,
447 double *tau, double *c, int *ldc, double *work, int *lwork, int *info);
449 void
450 F77_FUNC(dorg2r,DORG2R)(int *m, int *n, int *k, double *a, int *lda, double *tau,
451 double *work, int *info);
453 void
454 F77_FUNC(dlasq4,DLASQ4)(int *i0, int *n0, double *z, int *pp, int *n0in, double *dmin,
455 double *dmin1, double *dmin2, double *dn, double *dn1,
456 double *dn2, double *tau, int *ttype);
458 void
459 F77_FUNC(dlasd7,DLASD7)(int *icompq, int *nl, int *nr, int *sqre, int *k, double *d, double *z,
460 double *zw, double *vf, double *vfw, double *vl, double *vlw,
461 double *alpha, double *beta, double *dsigma, int *idx, int *idxp,
462 int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol,
463 double *givnum, int *ldgnum, double *c, double *s, int *info);
465 void
466 F77_FUNC(dlas2,DLAS2)(double *f, double *g, double *h, double *ssmin, double *ssmax);
468 void
469 F77_FUNC(dlarfg,DLARFG)(int *n, double *alpha, double *x, int *incx, double *tau);
471 void
472 F77_FUNC(dlagtf,DLAGTF)(int *n, double *a, double *lambda, double *b, double *c,
473 double *tol, double *d, int *in, int *info);
475 void
476 F77_FUNC(dgeqrf,DGEQRF)(int *m, int *n, double *a, int *lda, double *tau,
477 double *work, int *lwork, int *info);
481 /* Single precision */
483 void
484 F77_FUNC(sbdsdc,SBDSDC)(const char *uplo, const char *compq, int *n, float *d, float *e, float *u,
485 int *ldu, float *vt, int *ldvt, float *q, int *iq, float *work,
486 int *iwork, int *info);
488 void
489 F77_FUNC(sgetf2,SGETF2)(int *m, int *n, float *a, int *lda, int *ipiv, int *info);
491 void
492 F77_FUNC(slamrg,SLAMRG)(int *n1, int *n2, float *a, int *dtrd1, int *dtrd2, int *index);
494 void
495 F77_FUNC(slarnv,SLARNV)(int *idist, int *iseed, int *n, float *x);
497 void
498 F77_FUNC(slasd0,SLASD0)(int *n, int *sqre, float *d, float *e, float *u,
499 int *ldu, float *vt, int *ldvt, int *smlsiz, int *iwork,
500 float *work, int *info);
502 void
503 F77_FUNC(slasda,SLASDA)(int *icompq, int *smlsiz, int *n, int *sqre, float *d, float *e,
504 float *u, int *ldu, float *vt, int *k, float *difl, float *difr,
505 float *z, float *poles, int *givptr, int *givcol, int *ldgcol,
506 int *perm, float *givnum, float *c, float *s,
507 float *work, int *iwork, int *info);
509 void
510 F77_FUNC(slasq6,SLASQ6)(int *i0, int *n0, float *z, int *pp, float *dmin, float *dmin1,
511 float *dmin2, float *dn, float *dnm1, float *dnm2);
513 void
514 F77_FUNC(sorgl2,SORGL2)(int *m, int *n, int *k, float *a, int *lda,
515 float *tau, float *work, int *info);
517 void
518 F77_FUNC(sbdsqr,SBDSQR)(const char *uplo, int *n, int *ncvt, int *nru, int *ncc, float *d,
519 float *e, float *vt, int *ldvt, float *u, int *ldu,
520 float *c, int *ldc, float *work, int *info);
522 void
523 F77_FUNC(sgetrf,SGETRF)(int *m, int *n, float *a, int *lda, int *ipiv, int *info);
525 void
526 F77_FUNC(sgetri,SGETRI)(int *n, float *a, int *lda, int *ipiv, float *work,
527 int *lwork, int *info);
529 void
530 F77_FUNC(sgetrs,SGETRS)(const char *trans, int *n, int *nrhs, float *a, int *lda, int *ipiv,
531 float *b, int *ldb, int *info);
533 void
534 F77_FUNC(strtri,STRTRI)(const char *uplo, const char *diag, int *n, float *a, int *lda, int *info);
536 void
537 F77_FUNC(strti2,STRTI2)(const char *uplo, const char *diag, int *n, float *a, int *lda, int *info);
539 float
540 F77_FUNC(slange,SLANGE)(const char *norm, int *m, int *n, float *a, int *lda, float *work);
542 void
543 F77_FUNC(slarrbx,SLARRBX)(int *n, float *d, float *l, float *ld, float *lld, int *ifirst,
544 int *ilast, float *rtol1, float *rtol2, int *offset, float *w,
545 float *wgap, float *werr, float *work, int *iwork, int *info);
547 void
548 F77_FUNC(slasd1,SLASD1)(int *nl, int *nr, int *sqre, float *d, float *alpha, float *beta,
549 float *u, int *ldu, float *vt, int *ldvt, int *idxq, int *iwork,
550 float *work, int *info);
552 void
553 F77_FUNC(slasdq,SLASDQ)(const char *uplo, int *sqre, int *n, int *ncvt, int *nru, int *ncc,
554 float *d, float *e, float *vt, int *ldvt, float *u, int *ldu,
555 float *c, int *ldc, float *work, int *info);
557 void
558 F77_FUNC(slasr,SLASR)(const char *side, const char *pivot, const char *direct, int *m, int *n, float *c,
559 float *s, float *a, int *lda);
561 void
562 F77_FUNC(sorglq,SORGLQ)(int *m, int *n, int *k, float *a, int *lda,
563 float *tau, float *work, int *lwork, int *info);
565 void
566 F77_FUNC(sormtr,SORMTR)(const char *side, const char *uplo, const char *trans, int *m, int *n, float *a,
567 int *lda, float *tau, float *c, int *ldc,
568 float *work, int *lwork, int *info);
570 void
571 F77_FUNC(sgebd2,SGEBD2)(int *m, int *n, float *a, int *lda, float *d, float *e,
572 float *tauq, float *taup, float *work, int *info);
574 void
575 F77_FUNC(slabrd,SLABRD)(int *m, int *n, int *nb, float *a, int *lda, float *d,
576 float *e, float *tauq, float *taup, float *x,
577 int *ldx, float *y, int *ldy);
579 float
580 F77_FUNC(slanst,SLANST)(const char *norm, int *n, float *d, float *e);
582 float
583 F77_FUNC(slansy,SLANSY)(const char *norm, const char *uplo, int *n, float *a, int *lda, float *work);
585 void
586 F77_FUNC(slarrex,SLARREX)(const char *range, int *n, float *vl, float *vu, int *il, int *iu,
587 float *d, float *e, float *tol, int *nsplit,
588 int *isplit, int *m, float *w, int *iblock, int *indexw,
589 float *gersch, float *work, int *iwork, int *info);
591 void
592 F77_FUNC(slasd2,SLASD2)(int *nl, int *nr, int *sqre, int *k, float *d, float *z,
593 float *alpha, float *beta, float *u, int *ldu, float *vt,
594 int *ldvt, float *dsigma, float *u2, int *ldu2, float *vt2,
595 int *ldvt2, int *idxp, int *idx, int *idxc,
596 int *idxq, int *coltyp, int *info);
598 void
599 F77_FUNC(slasdt,SLASDT)(int *n, int *lvl, int *nd, int *inode, int *ndiml,
600 int *ndimr, int *msub);
602 void
603 F77_FUNC(slasrt,SLASRT)(const char *id, int *n, float *d, int *info);
605 void
606 F77_FUNC(slasrt2,SLASRT2)(const char *id, int *n, float *d, int *key, int *info);
608 void
609 F77_FUNC(sorgqr,SORGQR)(int *m, int *n, int *k, float *a, int *lda, float *tau,
610 float *work, int *lwork, int *info);
612 void
613 F77_FUNC(sstebz,SSTEBZ)(const char *range, const char *order, int *n, float *vl, float *vu,
614 int *il, int *iu, float *abstol, float *d, float *e,
615 int *m, int *nsplit, float *w, int *iblock, int *isplit,
616 float *work, int *iwork, int *info);
618 void
619 F77_FUNC(sgebrd,SGEBRD)(int *m, int *n, float *a, int *lda, float *d, float *e,
620 float *tauq, float *taup, float *work, int *lwork, int *info);
622 void
623 F77_FUNC(slacpy,SLACPY)(const char *uplo, int *m, int *n, float *a, int *lda, float *b, int *ldb);
625 float
626 F77_FUNC(slapy2,SLAPY2)(float * x, float * y);
628 void
629 F77_FUNC(slarrfx,SLARRFX)(int *n, float *d, float *l, float *ld, float *lld, int *ifirst,
630 int *ilast, float *w, float *sigma, float *dplus, float *lplus,
631 float *work, int *info);
633 void
634 F77_FUNC(slasd3,SLASD3)(int *nl, int *nr, int *sqre, int *k, float *d, float *q, int *ldq,
635 float *dsigma, float *u, int *ldu, float *u2, int *ldu2,
636 float *vt, int *ldvt, float *vt2, int *ldvt2, int *idxc,
637 int *ctot, float *z, int *info);
639 void
640 F77_FUNC(slaset,SLASET)(const char *uplo, int *m, int *n, float *alpha,
641 float *beta, float *a, int *lda);
643 void
644 F77_FUNC(slassq,SLASSQ)(int *n, float *x, int *incx, float *scale, float *sumsq);
646 void
647 F77_FUNC(sorm2l,SORM2L)(const char *side, const char *trans, int *m, int *n, int *k, float *a, int *lda,
648 float *tau, float *c, int *ldc, float *work, int *info);
650 void
651 F77_FUNC(sstegr,SSTEGR)(const char *jobz, const char *range, int *n, float *d, float *e, float *vl,
652 float *vu, int *il, int *iu, float *abstol, int *m, float *w,
653 float *z, int *ldz, int *isuppz, float *work,
654 int *lwork, int *iwork, int *liwork, int *info);
656 void
657 F77_FUNC(sgelq2,SGELQ2)(int *m, int *n, float *a, int *lda, float *tau, float *work, int *info);
659 void
660 F77_FUNC(slae2,SLAE2)(float *a, float *b, float *c, float *rt1, float *rt2);
662 void
663 F77_FUNC(slaev2,SLAEV2)(float *a, float *b, float *c, float *rt1, float *rt2,
664 float *cs1, float *cs2);
666 void
667 F77_FUNC(slar1vx,SLAR1VX)(int *n, int *b1, int *bn, float *sigma, float *d, float *l, float *ld,
668 float *lld, float *eval, float *gersch, float *z, float *ztz, float *mingma,
669 int *r, int *isuppz, float *work);
671 void
672 F77_FUNC(slarrvx,SLARRVX)(int *n, float *d, float *l, int *isplit, int *m, float *w,
673 int *iblock, int *indexw, float *gersch, float *tol, float *z, int *ldz,
674 int *isuppz, float *work, int *iwork, int *info);
676 void
677 F77_FUNC(slasd4,SLASD4)(int *n, int *i, float *d, float *z, float *delta,
678 float *rho, float *sigma, float *work, int *info);
680 void
681 F77_FUNC(slasq1,SLASQ1)(int *n, float *d, float *e, float *work, int *info);
684 void
685 F77_FUNC(slasv2,SLASV2)(float *f, float *g, float *h, float *ssmin, float *ssmax,
686 float *snr, float *csr, float *snl, float *csl);
688 void
689 F77_FUNC(sorm2r,SORM2R)(const char *side, const char *trans, int *m, int *n, int *k, float *a,
690 int *lda, float *tau, float *c, int *ldc, float *work, int *info);
692 void
693 F77_FUNC(sstein,SSTEIN)(int *n, float *d, float *e, int *m, float *w, int *iblock, int *isplit,
694 float *z, int *ldz, float *work, int *iwork, int *ifail, int *info);
696 void
697 F77_FUNC(sgelqf,SGELQF)(int *m, int *n, float *a, int *lda, float *tau,
698 float *work, int *lwork, int *info);
700 void
701 F77_FUNC(slaebz,SLAEBZ)(int *ijob, int *nitmax, int *n, int *mmax, int *minp, int *nbmin,
702 float *abstol, float *reltol, float *pivmin, float *d, float *e,
703 float *e2, int *nval, float *ab, float *c, int *mout, int *nab,
704 float *work, int *iwork, int *info);
706 void
707 F77_FUNC(slarf,SLARF)(const char *side, int *m, int *n, float *v, int *incv, float *tau,
708 float *c, int *ldc, float *work);
710 void
711 F77_FUNC(slartg,SLARTG)(float *f, float *g, float *cs, float *sn, float *r);
713 void
714 F77_FUNC(slasd5,SLASD5)(int *i, float *d, float *z, float *delta,
715 float *rho, float *dsigma, float *work);
717 void
718 F77_FUNC(slasq2,SLASQ2)(int *n, float *z, int *info);
720 void
721 F77_FUNC(slasq3,SLASQ3)(int *i0, int *n0, float *z, int *pp, float *dmin,
722 float *sigma, float *desig, float *qmax, int *nfail,
723 int *iter, int *ndiv, int *ieee);
725 void
726 F77_FUNC(slaswp,SLASWP)(int *n, float *a, int *lda, int *k1, int *k2, int *ipiv, int *incx);
728 void
729 F77_FUNC(sormbr,SORMBR)(const char *vect, const char *side, const char *trans, int *m, int *n, int *k,
730 float *a, int *lda, float *tau, float *c, int *ldc, float *work,
731 int *lwork, int *info);
733 void
734 F77_FUNC(ssterf,SSTERF)(int *n, float *d, float *e, int *info);
736 void
737 F77_FUNC(sgeqr2,SGEQR2)(int *m, int *n, float *a, int *lda, float *tau,
738 float *work, int *info);
740 void
741 F77_FUNC(slaed6,SLAED6)(int *kniter, int *orgati, float *rho, float *d,
742 float *z, float *finit, float *tau, int *info);
744 void
745 F77_FUNC(slarfb,SLARFB)(const char *side, const char *trans, const char *direct, const char *storev, int *m, int *n,
746 int *k, float *v, int *ldv, float *t, int *ldt, float *c,
747 int *ldc, float *work, int *ldwork);
749 void
750 F77_FUNC(slaruv,SLARUV)(int *iseed, int *n, float *x);
752 void
753 F77_FUNC(slasd6,SLASD6)(int *icompq, int *nl, int *nr, int *sqre, float *d, float *vf,
754 float *vl, float *alpha, float *beta, int *idxq, int *perm,
755 int *givptr, int *givcol, int *ldgcol, float *givnum, int *ldgnum,
756 float *poles, float *difl, float *difr, float *z, int *k,
757 float *c, float *s, float *work, int *iwork, int *info);
759 void
760 F77_FUNC(slatrd,SLATRD)(const char *uplo, int *n, int *nb, float *a, int *lda, float *e,
761 float * tau, float *w, int *ldw);
763 void
764 F77_FUNC(sorml2,SORML2)(const char *side, const char *trans, int *m, int *n, int *k, float *a,
765 int *lda, float *tau, float *c, int *ldc, float *work, int *info);
767 void
768 F77_FUNC(sstevr,SSTEVR)(const char *jobz, const char *range, int *n, float *d, float *e, float *vl,
769 float *vu, int *il, int *iu, float *abstol, int *m, float *w,
770 float *z, int *ldz, int *isuppz, float *work,
771 int *lwork, int *iwork, int *liwork, int *info);
773 void
774 F77_FUNC(ssytrd,SSYTRD)(const char *uplo, int *n, float * a, int *lda, float *d,
775 float *e, float *tau, float *work, int *lwork, int *info);
777 void
778 F77_FUNC(ssyevr,SSYEVR)(const char *jobz, const char *range, const char *uplo, int *n,
779 float *a, int *lda, float *vl, float *vu, int *
780 il, int *iu, float *abstol, int *m, float *w,
781 float *z__, int *ldz, int *isuppz, float *work,
782 int *lwork, int *iwork, int *liwork, int *info);
784 void
785 F77_FUNC(sormql,SORMQL)(const char *side, const char *trans, int *m, int *n,
786 int *k, float *a, int *lda, float *tau, float *
787 c, int *ldc, float *work, int *lwork, int *info);
789 void
790 F77_FUNC(sormqr,SORMQR)(const char *side, const char *trans, int *m, int *n, int *k, float *a,
791 int *lda, float *tau, float *c, int *ldc,
792 float *work, int *lwork, int *info);
794 void
795 F77_FUNC(sorgbr,SORGBR)(const char *vect, int *m, int *n, int *k, float *a, int *lda,
796 float *tau, float *work, int *lwork, int *info);
798 void
799 F77_FUNC(slasq5,SLASQ5)(int *i0, int *n0, float *z, int *pp, float *tau, float *dmin,
800 float *dmin1, float *dmin2, float *dn, float *dnm1,
801 float *dnm2, int *ieee);
803 void
804 F77_FUNC(slasd8,SLASD8)(int *icompq, int *k, float *d, float *z, float *vf, float *vl,
805 float *difl, float *difr, int *lddifr, float *dsigma,
806 float *work, int *info);
808 void
809 F77_FUNC(slascl,SLASCL)(const char *type, int *kl, int *ku, float *cfrom, float *cto, int *m,
810 int *n, float *a, int *lda, int *info);
812 void
813 F77_FUNC(slarft,SLARFT)(const char *direct, const char *storev, int *n, int *k, float *v,
814 int *ldv, float *tau, float *t, int *ldt);
816 void
817 F77_FUNC(slagts,SLAGTS)(int *job, int *n, float *a, float *b, float *c, float *d,
818 int *in, float *y, float *tol, int *info);
820 void
821 F77_FUNC(sgesdd,SGESDD)(const char *jobz, int *m, int *n, float *a, int *lda, float *s, float *u,
822 int *ldu, float *vt, int *ldvt, float *work, int *lwork,
823 int *iwork, int *info);
825 void
826 F77_FUNC(ssytd2,SSYTD2)(const char *uplo, int *n, float *a, int *lda, float *d,
827 float *e, float *tau, int *info);
829 void
830 F77_FUNC(sormlq,SORMLQ)(const char *side, const char *trans, int *m, int *n, int *k, float *a, int *lda,
831 float *tau, float *c, int *ldc, float *work, int *lwork, int *info);
833 void
834 F77_FUNC(sorg2r,SORG2R)(int *m, int *n, int *k, float *a, int *lda, float *tau,
835 float *work, int *info);
837 void
838 F77_FUNC(slasq4,SLASQ4)(int *i0, int *n0, float *z, int *pp, int *n0in, float *dmin,
839 float *dmin1, float *dmin2, float *dn, float *dn1,
840 float *dn2, float *tau, int *ttype);
842 void
843 F77_FUNC(slasd7,SLASD7)(int *icompq, int *nl, int *nr, int *sqre, int *k, float *d, float *z,
844 float *zw, float *vf, float *vfw, float *vl, float *vlw,
845 float *alpha, float *beta, float *dsigma, int *idx, int *idxp,
846 int *idxq, int *perm, int *givptr, int *givcol, int *ldgcol,
847 float *givnum, int *ldgnum, float *c, float *s, int *info);
849 void
850 F77_FUNC(slas2,SLAS2)(float *f, float *g, float *h, float *ssmin, float *ssmax);
852 void
853 F77_FUNC(slarfg,SLARFG)(int *n, float *alpha, float *x, int *incx, float *tau);
855 void
856 F77_FUNC(slagtf,SLAGTF)(int *n, float *a, float *lambda, float *b, float *c,
857 float *tol, float *d, int *in, int *info);
859 void
860 F77_FUNC(sgeqrf,SGEQRF)(int *m, int *n, float *a, int *lda, float *tau,
861 float *work, int *lwork, int *info);
864 #ifdef __cplusplus
866 #endif
870 #endif /* _LAPACK_H_ */