3 * This source code is part of
7 * GROningen MAchine for Chemical Simulations
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
32 * Gallium Rubidium Oxygen Manganese Argon Carbon Silicon
35 #ifndef _GMX_LAPACK_H_
36 #define _GMX_LAPACK_H_
41 * @brief Header definitions for the standard LAPACK library.
43 * This is the subset of LAPACK routines used for the
44 * linear algebra operations in Gromacs. Most of the execution time
45 * will be spent in the BLAS routines, which you hopefully have an
46 * optimized version of. Gromacs includes reference implementations
47 * of both BLAS and LAPACK so it compiles everywhere, but you should
48 * really try to find a vendor or otherwise optimized version at least
49 * of BLAS for better performance.
51 * Do NOT use this code for other purposes - we only provide this as a
52 * simple fallback/reference implementation when no optimized BLAS
53 * is present. If you need an implementation for your own code
54 * there are several much faster versions out there.
56 * All routines are compatible with the LAPACK/BLAS reference implementations,
57 * meaning they assume fortran-style matrix row/column organization.
59 * There is plenty of documentation for these routines available
60 * at http://www.netlib.org/lapack , so there is no point in repeating
73 #include "types/simple.h"
75 /* Suppress Cygwin compiler warnings from using newlib version of
82 #define F77_FUNC(name,NAME) name ## _
87 /* Double precision */
90 F77_FUNC(dbdsdc
,DBDSDC
)(const char *uplo
, const char *compq
, int *n
, double *d
, double *e
, double *u
,
91 int *ldu
, double *vt
, int *ldvt
, double *q
, int *iq
, double *work
,
92 int *iwork
, int *info
);
95 F77_FUNC(dgetf2
,DGETF2
)(int *m
, int *n
, double *a
, int *lda
, int *ipiv
, int *info
);
98 F77_FUNC(dlamrg
,DLAMRG
)(int *n1
, int *n2
, double *a
, int *dtrd1
, int *dtrd2
, int *index
);
101 F77_FUNC(dlarnv
,DLARNV
)(int *idist
, int *iseed
, int *n
, double *x
);
104 F77_FUNC(dlasd0
,DLASD0
)(int *n
, int *sqre
, double *d
, double *e
, double *u
,
105 int *ldu
, double *vt
, int *ldvt
, int *smlsiz
, int *iwork
,
106 double *work
, int *info
);
109 F77_FUNC(dlasda
,DLASDA
)(int *icompq
, int *smlsiz
, int *n
, int *sqre
, double *d
, double *e
,
110 double *u
, int *ldu
, double *vt
, int *k
, double *difl
, double *difr
,
111 double *z
, double *poles
, int *givptr
, int *givcol
, int *ldgcol
,
112 int *perm
, double *givnum
, double *c
, double *s
,
113 double *work
, int *iwork
, int *info
);
116 F77_FUNC(dlasq6
,DLASQ6
)(int *i0
, int *n0
, double *z
, int *pp
, double *dmin
, double *dmin1
,
117 double *dmin2
, double *dn
, double *dnm1
, double *dnm2
);
120 F77_FUNC(dorgl2
,DORGL2
)(int *m
, int *n
, int *k
, double *a
, int *lda
,
121 double *tau
, double *work
, int *info
);
124 F77_FUNC(dbdsqr
,DBDSQR
)(const char *uplo
, int *n
, int *ncvt
, int *nru
, int *ncc
, double *d
,
125 double *e
, double *vt
, int *ldvt
, double *u
, int *ldu
,
126 double *c
, int *ldc
, double *work
, int *info
);
129 F77_FUNC(dgetrf
,DGETRF
)(int *m
, int *n
, double *a
, int *lda
, int *ipiv
, int *info
);
132 F77_FUNC(dgetri
,DGETRI
)(int *n
, double *a
, int *lda
, int *ipiv
, double *work
,
133 int *lwork
, int *info
);
136 F77_FUNC(dgetrs
,DGETRS
)(const char *trans
, int *n
, int *nrhs
, double *a
, int *lda
, int *ipiv
,
137 double *b
, int *ldb
, int *info
);
140 F77_FUNC(dtrtri
,DTRTRI
)(const char *uplo
, const char *diag
, int *n
, double *a
, int *lda
, int *info
);
143 F77_FUNC(dtrti2
,DTRTI2
)(const char *uplo
, const char *diag
, int *n
, double *a
, int *lda
, int *info
);
146 F77_FUNC(dlange
,DLANGE
)(const char *norm
, int *m
, int *n
, double *a
, int *lda
, double *work
);
149 F77_FUNC(dlarrbx
,DLARRBX
)(int *n
, double *d
, double *l
, double *ld
, double *lld
, int *ifirst
,
150 int *ilast
, double *rtol1
, double *rtol2
, int *offset
, double *w
,
151 double *wgap
, double *werr
, double *work
, int *iwork
, int *info
);
154 F77_FUNC(dlasd1
,DLASD1
)(int *nl
, int *nr
, int *sqre
, double *d
, double *alpha
, double *beta
,
155 double *u
, int *ldu
, double *vt
, int *ldvt
, int *idxq
, int *iwork
,
156 double *work
, int *info
);
159 F77_FUNC(dlasdq
,DLASDQ
)(const char *uplo
, int *sqre
, int *n
, int *ncvt
, int *nru
, int *ncc
,
160 double *d
, double *e
, double *vt
, int *ldvt
, double *u
, int *ldu
,
161 double *c
, int *ldc
, double *work
, int *info
);
164 F77_FUNC(dlasr
,DLASR
)(const char *side
, const char *pivot
, const char *direct
, int *m
, int *n
, double *c
,
165 double *s
, double *a
, int *lda
);
168 F77_FUNC(dorglq
,DORGLQ
)(int *m
, int *n
, int *k
, double *a
, int *lda
,
169 double *tau
, double *work
, int *lwork
, int *info
);
172 F77_FUNC(dormtr
,DORMTR
)(const char *side
, const char *uplo
, const char *trans
, int *m
, int *n
, double *a
,
173 int *lda
, double *tau
, double *c
, int *ldc
,
174 double *work
, int *lwork
, int *info
);
177 F77_FUNC(dgebd2
,DGEBD2
)(int *m
, int *n
, double *a
, int *lda
, double *d
, double *e
,
178 double *tauq
, double *taup
, double *work
, int *info
);
181 F77_FUNC(dlabrd
,DLABRD
)(int *m
, int *n
, int *nb
, double *a
, int *lda
, double *d
,
182 double *e
, double *tauq
, double *taup
, double *x
,
183 int *ldx
, double *y
, int *ldy
);
186 F77_FUNC(dlanst
,DLANST
)(const char *norm
, int *n
, double *d
, double *e
);
189 F77_FUNC(dlansy
,DLANSY
)(const char *norm
, const char *uplo
, int *n
, double *a
, int *lda
, double *work
);
192 F77_FUNC(dlarrex
,DLARREX
)(const char *range
, int *n
, double *vl
, double *vu
, int *il
, int *iu
,
193 double *d
, double *e
, double *tol
, int *nsplit
,
194 int *isplit
, int *m
, double *w
, int *iblock
, int *indexw
,
195 double *gersch
, double *work
, int *iwork
, int *info
);
198 F77_FUNC(dlasd2
,DLASD2
)(int *nl
, int *nr
, int *sqre
, int *k
, double *d
, double *z
,
199 double *alpha
, double *beta
, double *u
, int *ldu
, double *vt
,
200 int *ldvt
, double *dsigma
, double *u2
, int *ldu2
, double *vt2
,
201 int *ldvt2
, int *idxp
, int *idx
, int *idxc
,
202 int *idxq
, int *coltyp
, int *info
);
205 F77_FUNC(dlasdt
,DLASDT
)(int *n
, int *lvl
, int *nd
, int *inode
, int *ndiml
,
206 int *ndimr
, int *msub
);
209 F77_FUNC(dlasrt
,DLASRT
)(const char *id
, int *n
, double *d
, int *info
);
212 F77_FUNC(dlasrt2
,DLASRT2
)(const char *id
, int *n
, double *d
, int *key
, int *info
);
215 F77_FUNC(ilasrt2
,ILASRT2
)(const char *id
, int *n
, int *d
, int *key
, int *info
);
218 F77_FUNC(dorgqr
,DORGQR
)(int *m
, int *n
, int *k
, double *a
, int *lda
, double *tau
,
219 double *work
, int *lwork
, int *info
);
222 F77_FUNC(dstebz
,DSTEBZ
)(const char *range
, const char *order
, int *n
, double *vl
, double *vu
,
223 int *il
, int *iu
, double *abstol
, double *d
, double *e
,
224 int *m
, int *nsplit
, double *w
, int *iblock
, int *isplit
,
225 double *work
, int *iwork
, int *info
);
228 F77_FUNC(dsteqr
,DSTEQR
)(const char *compz
, int *n
, double *d__
, double *e
,
229 double *z__
, int *ldz
, double *work
, int *info
);
232 F77_FUNC(dgebrd
,DGEBRD
)(int *m
, int *n
, double *a
, int *lda
, double *d
, double *e
,
233 double *tauq
, double *taup
, double *work
, int *lwork
, int *info
);
236 F77_FUNC(dlacpy
,DLACPY
)(const char *uplo
, int *m
, int *n
, double *a
, int *lda
, double *b
, int *ldb
);
239 F77_FUNC(dlapy2
,DLAPY2
)(double * x
, double * y
);
243 F77_FUNC(dlarrfx
,DLARRFX
)(int *n
, double *d
, double *l
, double *ld
, double *lld
, int *ifirst
,
244 int *ilast
, double *w
, double *sigma
, double *dplus
, double *lplus
,
245 double *work
, int *info
);
248 F77_FUNC(dlasd3
,DLASD3
)(int *nl
, int *nr
, int *sqre
, int *k
, double *d
, double *q
, int *ldq
,
249 double *dsigma
, double *u
, int *ldu
, double *u2
, int *ldu2
,
250 double *vt
, int *ldvt
, double *vt2
, int *ldvt2
, int *idxc
,
251 int *ctot
, double *z
, int *info
);
254 F77_FUNC(dlaset
,DLASET
)(const char *uplo
, int *m
, int *n
, double *alpha
,
255 double *beta
, double *a
, int *lda
);
258 F77_FUNC(dlassq
,DLASSQ
)(int *n
, double *x
, int *incx
, double *scale
, double *sumsq
);
261 F77_FUNC(dorm2l
,DORM2L
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, double *a
, int *lda
,
262 double *tau
, double *c
, int *ldc
, double *work
, int *info
);
265 F77_FUNC(dstegr
,DSTEGR
)(const char *jobz
, const char *range
, int *n
, double *d
, double *e
, double *vl
,
266 double *vu
, int *il
, int *iu
, double *abstol
, int *m
, double *w
,
267 double *z
, int *ldz
, int *isuppz
, double *work
,
268 int *lwork
, int *iwork
, int *liwork
, int *info
);
271 F77_FUNC(ssteqr
,SSTEQR
)(const char *compz
, int *n
, float *d__
, float *e
,
272 float *z__
, int *ldz
, float *work
, int *info
);
275 F77_FUNC(dgelq2
,DGELQ2
)(int *m
, int *n
, double *a
, int *lda
, double *tau
, double *work
, int *info
);
278 F77_FUNC(dlae2
,DLAE2
)(double *a
, double *b
, double *c
, double *rt1
, double *rt2
);
281 F77_FUNC(dlaev2
,DLAEV2
)(double *a
, double *b
, double *c
, double *rt1
, double *rt2
,
282 double *cs1
, double *cs2
);
285 F77_FUNC(dlar1vx
,DLAR1VX
)(int *n
, int *b1
, int *bn
, double *sigma
, double *d
, double *l
, double *ld
,
286 double *lld
, double *eval
, double *gersch
, double *z
, double *ztz
, double *mingma
,
287 int *r
, int *isuppz
, double *work
);
290 F77_FUNC(dlarrvx
,DLARRVX
)(int *n
, double *d
, double *l
, int *isplit
, int *m
, double *w
,
291 int *iblock
, int *indexw
, double *gersch
, double *tol
, double *z
, int *ldz
,
292 int *isuppz
, double *work
, int *iwork
, int *info
);
295 F77_FUNC(dlasd4
,DLASD4
)(int *n
, int *i
, double *d
, double *z
, double *delta
,
296 double *rho
, double *sigma
, double *work
, int *info
);
299 F77_FUNC(dlasq1
,DLASQ1
)(int *n
, double *d
, double *e
, double *work
, int *info
);
303 F77_FUNC(dlasv2
,DLASV2
)(double *f
, double *g
, double *h
, double *ssmin
, double *ssmax
,
304 double *snr
, double *csr
, double *snl
, double *csl
);
307 F77_FUNC(dorm2r
,DORM2R
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, double *a
,
308 int *lda
, double *tau
, double *c
, int *ldc
, double *work
, int *info
);
311 F77_FUNC(dstein
,DSTEIN
)(int *n
, double *d
, double *e
, int *m
, double *w
, int *iblock
, int *isplit
,
312 double *z
, int *ldz
, double *work
, int *iwork
, int *ifail
, int *info
);
315 F77_FUNC(dgelqf
,DGELQF
)(int *m
, int *n
, double *a
, int *lda
, double *tau
,
316 double *work
, int *lwork
, int *info
);
319 F77_FUNC(dlaebz
,DLAEBZ
)(int *ijob
, int *nitmax
, int *n
, int *mmax
, int *minp
, int *nbmin
,
320 double *abstol
, double *reltol
, double *pivmin
, double *d
, double *e
,
321 double *e2
, int *nval
, double *ab
, double *c
, int *mout
, int *nab
,
322 double *work
, int *iwork
, int *info
);
325 F77_FUNC(dlarf
,DLARF
)(const char *side
, int *m
, int *n
, double *v
, int *incv
, double *tau
,
326 double *c
, int *ldc
, double *work
);
329 F77_FUNC(dlartg
,DLARTG
)(double *f
, double *g
, double *cs
, double *sn
, double *r
);
332 F77_FUNC(dlasd5
,DLASD5
)(int *i
, double *d
, double *z
, double *delta
,
333 double *rho
, double *dsigma
, double *work
);
336 F77_FUNC(dlasq2
,DLASQ2
)(int *n
, double *z
, int *info
);
339 F77_FUNC(dlasq3
,DLASQ3
)(int *i0
, int *n0
, double *z
, int *pp
, double *dmin
,
340 double *sigma
, double *desig
, double *qmax
, int *nfail
,
341 int *iter
, int *ndiv
, int *ieee
);
344 F77_FUNC(dlaswp
,DLASWP
)(int *n
, double *a
, int *lda
, int *k1
, int *k2
, int *ipiv
, int *incx
);
347 F77_FUNC(dormbr
,DORMBR
)(const char *vect
, const char *side
, const char *trans
, int *m
, int *n
, int *k
,
348 double *a
, int *lda
, double *tau
, double *c
, int *ldc
, double *work
,
349 int *lwork
, int *info
);
352 F77_FUNC(dsterf
,DSTERF
)(int *n
, double *d
, double *e
, int *info
);
355 F77_FUNC(dgeqr2
,DGEQR2
)(int *m
, int *n
, double *a
, int *lda
, double *tau
,
356 double *work
, int *info
);
359 F77_FUNC(dlaed6
,DLAED6
)(int *kniter
, int *orgati
, double *rho
, double *d
,
360 double *z
, double *finit
, double *tau
, int *info
);
363 F77_FUNC(dlarfb
,DLARFB
)(const char *side
, const char *trans
, const char *direct
, const char *storev
, int *m
, int *n
,
364 int *k
, double *v
, int *ldv
, double *t
, int *ldt
, double *c
,
365 int *ldc
, double *work
, int *ldwork
);
368 F77_FUNC(dlaruv
,DLARUV
)(int *iseed
, int *n
, double *x
);
371 F77_FUNC(dlasd6
,DLASD6
)(int *icompq
, int *nl
, int *nr
, int *sqre
, double *d
, double *vf
,
372 double *vl
, double *alpha
, double *beta
, int *idxq
, int *perm
,
373 int *givptr
, int *givcol
, int *ldgcol
, double *givnum
, int *ldgnum
,
374 double *poles
, double *difl
, double *difr
, double *z
, int *k
,
375 double *c
, double *s
, double *work
, int *iwork
, int *info
);
378 F77_FUNC(dlatrd
,DLATRD
)(const char *uplo
, int *n
, int *nb
, double *a
, int *lda
, double *e
,
379 double * tau
, double *w
, int *ldw
);
382 F77_FUNC(dorml2
,DORML2
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, double *a
,
383 int *lda
, double *tau
, double *c
, int *ldc
, double *work
, int *info
);
386 F77_FUNC(dstevr
,DSTEVR
)(const char *jobz
, const char *range
, int *n
, double *d
, double *e
, double *vl
,
387 double *vu
, int *il
, int *iu
, double *abstol
, int *m
, double *w
,
388 double *z
, int *ldz
, int *isuppz
, double *work
,
389 int *lwork
, int *iwork
, int *liwork
, int *info
);
392 F77_FUNC(dsytrd
,DSYTRD
)(const char *uplo
, int *n
, double * a
, int *lda
, double *d
,
393 double *e
, double *tau
, double *work
, int *lwork
, int *info
);
396 F77_FUNC(dsyevr
,DSYEVR
)(const char *jobz
, const char *range
, const char *uplo
, int *n
,
397 double *a
, int *lda
, double *vl
, double *vu
, int *
398 il
, int *iu
, double *abstol
, int *m
, double *w
,
399 double *z__
, int *ldz
, int *isuppz
, double *work
,
400 int *lwork
, int *iwork
, int *liwork
, int *info
);
403 F77_FUNC(dormql
,DORMQL
)(const char *side
, const char *trans
, int *m
, int *n
,
404 int *k
, double *a
, int *lda
, double *tau
, double *
405 c
, int *ldc
, double *work
, int *lwork
, int *info
);
408 F77_FUNC(dormqr
,DORMQR
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, double *a
,
409 int *lda
, double *tau
, double *c
, int *ldc
,
410 double *work
, int *lwork
, int *info
);
413 F77_FUNC(dorgbr
,DORGBR
)(const char *vect
, int *m
, int *n
, int *k
, double *a
, int *lda
,
414 double *tau
, double *work
, int *lwork
, int *info
);
417 F77_FUNC(dlasq5
,DLASQ5
)(int *i0
, int *n0
, double *z
, int *pp
, double *tau
, double *dmin
,
418 double *dmin1
, double *dmin2
, double *dn
, double *dnm1
,
419 double *dnm2
, int *ieee
);
422 F77_FUNC(dlasd8
,DLASD8
)(int *icompq
, int *k
, double *d
, double *z
, double *vf
, double *vl
,
423 double *difl
, double *difr
, int *lddifr
, double *dsigma
,
424 double *work
, int *info
);
427 F77_FUNC(dlascl
,DLASCL
)(const char *type
, int *kl
, int *ku
, double *cfrom
, double *cto
, int *m
,
428 int *n
, double *a
, int *lda
, int *info
);
431 F77_FUNC(dlarft
,DLARFT
)(const char *direct
, const char *storev
, int *n
, int *k
, double *v
,
432 int *ldv
, double *tau
, double *t
, int *ldt
);
435 F77_FUNC(dlagts
,DLAGTS
)(int *job
, int *n
, double *a
, double *b
, double *c
, double *d
,
436 int *in
, double *y
, double *tol
, int *info
);
439 F77_FUNC(dgesdd
,DGESDD
)(const char *jobz
, int *m
, int *n
, double *a
, int *lda
, double *s
, double *u
,
440 int *ldu
, double *vt
, int *ldvt
, double *work
, int *lwork
,
441 int *iwork
, int *info
);
444 F77_FUNC(dsytd2
,DSYTD2
)(const char *uplo
, int *n
, double *a
, int *lda
, double *d
,
445 double *e
, double *tau
, int *info
);
448 F77_FUNC(dormlq
,DORMLQ
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, double *a
, int *lda
,
449 double *tau
, double *c
, int *ldc
, double *work
, int *lwork
, int *info
);
452 F77_FUNC(dorg2r
,DORG2R
)(int *m
, int *n
, int *k
, double *a
, int *lda
, double *tau
,
453 double *work
, int *info
);
456 F77_FUNC(dlasq4
,DLASQ4
)(int *i0
, int *n0
, double *z
, int *pp
, int *n0in
, double *dmin
,
457 double *dmin1
, double *dmin2
, double *dn
, double *dn1
,
458 double *dn2
, double *tau
, int *ttype
);
461 F77_FUNC(dlasd7
,DLASD7
)(int *icompq
, int *nl
, int *nr
, int *sqre
, int *k
, double *d
, double *z
,
462 double *zw
, double *vf
, double *vfw
, double *vl
, double *vlw
,
463 double *alpha
, double *beta
, double *dsigma
, int *idx
, int *idxp
,
464 int *idxq
, int *perm
, int *givptr
, int *givcol
, int *ldgcol
,
465 double *givnum
, int *ldgnum
, double *c
, double *s
, int *info
);
468 F77_FUNC(dlas2
,DLAS2
)(double *f
, double *g
, double *h
, double *ssmin
, double *ssmax
);
471 F77_FUNC(dlarfg
,DLARFG
)(int *n
, double *alpha
, double *x
, int *incx
, double *tau
);
474 F77_FUNC(dlagtf
,DLAGTF
)(int *n
, double *a
, double *lambda
, double *b
, double *c
,
475 double *tol
, double *d
, int *in
, int *info
);
478 F77_FUNC(dgeqrf
,DGEQRF
)(int *m
, int *n
, double *a
, int *lda
, double *tau
,
479 double *work
, int *lwork
, int *info
);
483 /* Single precision */
486 F77_FUNC(sbdsdc
,SBDSDC
)(const char *uplo
, const char *compq
, int *n
, float *d
, float *e
, float *u
,
487 int *ldu
, float *vt
, int *ldvt
, float *q
, int *iq
, float *work
,
488 int *iwork
, int *info
);
491 F77_FUNC(sgetf2
,SGETF2
)(int *m
, int *n
, float *a
, int *lda
, int *ipiv
, int *info
);
494 F77_FUNC(slamrg
,SLAMRG
)(int *n1
, int *n2
, float *a
, int *dtrd1
, int *dtrd2
, int *index
);
497 F77_FUNC(slarnv
,SLARNV
)(int *idist
, int *iseed
, int *n
, float *x
);
500 F77_FUNC(slasd0
,SLASD0
)(int *n
, int *sqre
, float *d
, float *e
, float *u
,
501 int *ldu
, float *vt
, int *ldvt
, int *smlsiz
, int *iwork
,
502 float *work
, int *info
);
505 F77_FUNC(slasda
,SLASDA
)(int *icompq
, int *smlsiz
, int *n
, int *sqre
, float *d
, float *e
,
506 float *u
, int *ldu
, float *vt
, int *k
, float *difl
, float *difr
,
507 float *z
, float *poles
, int *givptr
, int *givcol
, int *ldgcol
,
508 int *perm
, float *givnum
, float *c
, float *s
,
509 float *work
, int *iwork
, int *info
);
512 F77_FUNC(slasq6
,SLASQ6
)(int *i0
, int *n0
, float *z
, int *pp
, float *dmin
, float *dmin1
,
513 float *dmin2
, float *dn
, float *dnm1
, float *dnm2
);
516 F77_FUNC(sorgl2
,SORGL2
)(int *m
, int *n
, int *k
, float *a
, int *lda
,
517 float *tau
, float *work
, int *info
);
520 F77_FUNC(sbdsqr
,SBDSQR
)(const char *uplo
, int *n
, int *ncvt
, int *nru
, int *ncc
, float *d
,
521 float *e
, float *vt
, int *ldvt
, float *u
, int *ldu
,
522 float *c
, int *ldc
, float *work
, int *info
);
525 F77_FUNC(sgetrf
,SGETRF
)(int *m
, int *n
, float *a
, int *lda
, int *ipiv
, int *info
);
528 F77_FUNC(sgetri
,SGETRI
)(int *n
, float *a
, int *lda
, int *ipiv
, float *work
,
529 int *lwork
, int *info
);
532 F77_FUNC(sgetrs
,SGETRS
)(const char *trans
, int *n
, int *nrhs
, float *a
, int *lda
, int *ipiv
,
533 float *b
, int *ldb
, int *info
);
536 F77_FUNC(strtri
,STRTRI
)(const char *uplo
, const char *diag
, int *n
, float *a
, int *lda
, int *info
);
539 F77_FUNC(strti2
,STRTI2
)(const char *uplo
, const char *diag
, int *n
, float *a
, int *lda
, int *info
);
542 F77_FUNC(slange
,SLANGE
)(const char *norm
, int *m
, int *n
, float *a
, int *lda
, float *work
);
545 F77_FUNC(slarrbx
,SLARRBX
)(int *n
, float *d
, float *l
, float *ld
, float *lld
, int *ifirst
,
546 int *ilast
, float *rtol1
, float *rtol2
, int *offset
, float *w
,
547 float *wgap
, float *werr
, float *work
, int *iwork
, int *info
);
550 F77_FUNC(slasd1
,SLASD1
)(int *nl
, int *nr
, int *sqre
, float *d
, float *alpha
, float *beta
,
551 float *u
, int *ldu
, float *vt
, int *ldvt
, int *idxq
, int *iwork
,
552 float *work
, int *info
);
555 F77_FUNC(slasdq
,SLASDQ
)(const char *uplo
, int *sqre
, int *n
, int *ncvt
, int *nru
, int *ncc
,
556 float *d
, float *e
, float *vt
, int *ldvt
, float *u
, int *ldu
,
557 float *c
, int *ldc
, float *work
, int *info
);
560 F77_FUNC(slasr
,SLASR
)(const char *side
, const char *pivot
, const char *direct
, int *m
, int *n
, float *c
,
561 float *s
, float *a
, int *lda
);
564 F77_FUNC(sorglq
,SORGLQ
)(int *m
, int *n
, int *k
, float *a
, int *lda
,
565 float *tau
, float *work
, int *lwork
, int *info
);
568 F77_FUNC(sormtr
,SORMTR
)(const char *side
, const char *uplo
, const char *trans
, int *m
, int *n
, float *a
,
569 int *lda
, float *tau
, float *c
, int *ldc
,
570 float *work
, int *lwork
, int *info
);
573 F77_FUNC(sgebd2
,SGEBD2
)(int *m
, int *n
, float *a
, int *lda
, float *d
, float *e
,
574 float *tauq
, float *taup
, float *work
, int *info
);
577 F77_FUNC(slabrd
,SLABRD
)(int *m
, int *n
, int *nb
, float *a
, int *lda
, float *d
,
578 float *e
, float *tauq
, float *taup
, float *x
,
579 int *ldx
, float *y
, int *ldy
);
582 F77_FUNC(slanst
,SLANST
)(const char *norm
, int *n
, float *d
, float *e
);
585 F77_FUNC(slansy
,SLANSY
)(const char *norm
, const char *uplo
, int *n
, float *a
, int *lda
, float *work
);
588 F77_FUNC(slarrex
,SLARREX
)(const char *range
, int *n
, float *vl
, float *vu
, int *il
, int *iu
,
589 float *d
, float *e
, float *tol
, int *nsplit
,
590 int *isplit
, int *m
, float *w
, int *iblock
, int *indexw
,
591 float *gersch
, float *work
, int *iwork
, int *info
);
594 F77_FUNC(slasd2
,SLASD2
)(int *nl
, int *nr
, int *sqre
, int *k
, float *d
, float *z
,
595 float *alpha
, float *beta
, float *u
, int *ldu
, float *vt
,
596 int *ldvt
, float *dsigma
, float *u2
, int *ldu2
, float *vt2
,
597 int *ldvt2
, int *idxp
, int *idx
, int *idxc
,
598 int *idxq
, int *coltyp
, int *info
);
601 F77_FUNC(slasdt
,SLASDT
)(int *n
, int *lvl
, int *nd
, int *inode
, int *ndiml
,
602 int *ndimr
, int *msub
);
605 F77_FUNC(slasrt
,SLASRT
)(const char *id
, int *n
, float *d
, int *info
);
608 F77_FUNC(slasrt2
,SLASRT2
)(const char *id
, int *n
, float *d
, int *key
, int *info
);
611 F77_FUNC(sorgqr
,SORGQR
)(int *m
, int *n
, int *k
, float *a
, int *lda
, float *tau
,
612 float *work
, int *lwork
, int *info
);
615 F77_FUNC(sstebz
,SSTEBZ
)(const char *range
, const char *order
, int *n
, float *vl
, float *vu
,
616 int *il
, int *iu
, float *abstol
, float *d
, float *e
,
617 int *m
, int *nsplit
, float *w
, int *iblock
, int *isplit
,
618 float *work
, int *iwork
, int *info
);
621 F77_FUNC(sgebrd
,SGEBRD
)(int *m
, int *n
, float *a
, int *lda
, float *d
, float *e
,
622 float *tauq
, float *taup
, float *work
, int *lwork
, int *info
);
625 F77_FUNC(slacpy
,SLACPY
)(const char *uplo
, int *m
, int *n
, float *a
, int *lda
, float *b
, int *ldb
);
628 F77_FUNC(slapy2
,SLAPY2
)(float * x
, float * y
);
631 F77_FUNC(slarrfx
,SLARRFX
)(int *n
, float *d
, float *l
, float *ld
, float *lld
, int *ifirst
,
632 int *ilast
, float *w
, float *sigma
, float *dplus
, float *lplus
,
633 float *work
, int *info
);
636 F77_FUNC(slasd3
,SLASD3
)(int *nl
, int *nr
, int *sqre
, int *k
, float *d
, float *q
, int *ldq
,
637 float *dsigma
, float *u
, int *ldu
, float *u2
, int *ldu2
,
638 float *vt
, int *ldvt
, float *vt2
, int *ldvt2
, int *idxc
,
639 int *ctot
, float *z
, int *info
);
642 F77_FUNC(slaset
,SLASET
)(const char *uplo
, int *m
, int *n
, float *alpha
,
643 float *beta
, float *a
, int *lda
);
646 F77_FUNC(slassq
,SLASSQ
)(int *n
, float *x
, int *incx
, float *scale
, float *sumsq
);
649 F77_FUNC(sorm2l
,SORM2L
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, float *a
, int *lda
,
650 float *tau
, float *c
, int *ldc
, float *work
, int *info
);
653 F77_FUNC(sstegr
,SSTEGR
)(const char *jobz
, const char *range
, int *n
, float *d
, float *e
, float *vl
,
654 float *vu
, int *il
, int *iu
, float *abstol
, int *m
, float *w
,
655 float *z
, int *ldz
, int *isuppz
, float *work
,
656 int *lwork
, int *iwork
, int *liwork
, int *info
);
659 F77_FUNC(sgelq2
,SGELQ2
)(int *m
, int *n
, float *a
, int *lda
, float *tau
, float *work
, int *info
);
662 F77_FUNC(slae2
,SLAE2
)(float *a
, float *b
, float *c
, float *rt1
, float *rt2
);
665 F77_FUNC(slaev2
,SLAEV2
)(float *a
, float *b
, float *c
, float *rt1
, float *rt2
,
666 float *cs1
, float *cs2
);
669 F77_FUNC(slar1vx
,SLAR1VX
)(int *n
, int *b1
, int *bn
, float *sigma
, float *d
, float *l
, float *ld
,
670 float *lld
, float *eval
, float *gersch
, float *z
, float *ztz
, float *mingma
,
671 int *r
, int *isuppz
, float *work
);
674 F77_FUNC(slarrvx
,SLARRVX
)(int *n
, float *d
, float *l
, int *isplit
, int *m
, float *w
,
675 int *iblock
, int *indexw
, float *gersch
, float *tol
, float *z
, int *ldz
,
676 int *isuppz
, float *work
, int *iwork
, int *info
);
679 F77_FUNC(slasd4
,SLASD4
)(int *n
, int *i
, float *d
, float *z
, float *delta
,
680 float *rho
, float *sigma
, float *work
, int *info
);
683 F77_FUNC(slasq1
,SLASQ1
)(int *n
, float *d
, float *e
, float *work
, int *info
);
687 F77_FUNC(slasv2
,SLASV2
)(float *f
, float *g
, float *h
, float *ssmin
, float *ssmax
,
688 float *snr
, float *csr
, float *snl
, float *csl
);
691 F77_FUNC(sorm2r
,SORM2R
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, float *a
,
692 int *lda
, float *tau
, float *c
, int *ldc
, float *work
, int *info
);
695 F77_FUNC(sstein
,SSTEIN
)(int *n
, float *d
, float *e
, int *m
, float *w
, int *iblock
, int *isplit
,
696 float *z
, int *ldz
, float *work
, int *iwork
, int *ifail
, int *info
);
699 F77_FUNC(sgelqf
,SGELQF
)(int *m
, int *n
, float *a
, int *lda
, float *tau
,
700 float *work
, int *lwork
, int *info
);
703 F77_FUNC(slaebz
,SLAEBZ
)(int *ijob
, int *nitmax
, int *n
, int *mmax
, int *minp
, int *nbmin
,
704 float *abstol
, float *reltol
, float *pivmin
, float *d
, float *e
,
705 float *e2
, int *nval
, float *ab
, float *c
, int *mout
, int *nab
,
706 float *work
, int *iwork
, int *info
);
709 F77_FUNC(slarf
,SLARF
)(const char *side
, int *m
, int *n
, float *v
, int *incv
, float *tau
,
710 float *c
, int *ldc
, float *work
);
713 F77_FUNC(slartg
,SLARTG
)(float *f
, float *g
, float *cs
, float *sn
, float *r
);
716 F77_FUNC(slasd5
,SLASD5
)(int *i
, float *d
, float *z
, float *delta
,
717 float *rho
, float *dsigma
, float *work
);
720 F77_FUNC(slasq2
,SLASQ2
)(int *n
, float *z
, int *info
);
723 F77_FUNC(slasq3
,SLASQ3
)(int *i0
, int *n0
, float *z
, int *pp
, float *dmin
,
724 float *sigma
, float *desig
, float *qmax
, int *nfail
,
725 int *iter
, int *ndiv
, int *ieee
);
728 F77_FUNC(slaswp
,SLASWP
)(int *n
, float *a
, int *lda
, int *k1
, int *k2
, int *ipiv
, int *incx
);
731 F77_FUNC(sormbr
,SORMBR
)(const char *vect
, const char *side
, const char *trans
, int *m
, int *n
, int *k
,
732 float *a
, int *lda
, float *tau
, float *c
, int *ldc
, float *work
,
733 int *lwork
, int *info
);
736 F77_FUNC(ssterf
,SSTERF
)(int *n
, float *d
, float *e
, int *info
);
739 F77_FUNC(sgeqr2
,SGEQR2
)(int *m
, int *n
, float *a
, int *lda
, float *tau
,
740 float *work
, int *info
);
743 F77_FUNC(slaed6
,SLAED6
)(int *kniter
, int *orgati
, float *rho
, float *d
,
744 float *z
, float *finit
, float *tau
, int *info
);
747 F77_FUNC(slarfb
,SLARFB
)(const char *side
, const char *trans
, const char *direct
, const char *storev
, int *m
, int *n
,
748 int *k
, float *v
, int *ldv
, float *t
, int *ldt
, float *c
,
749 int *ldc
, float *work
, int *ldwork
);
752 F77_FUNC(slaruv
,SLARUV
)(int *iseed
, int *n
, float *x
);
755 F77_FUNC(slasd6
,SLASD6
)(int *icompq
, int *nl
, int *nr
, int *sqre
, float *d
, float *vf
,
756 float *vl
, float *alpha
, float *beta
, int *idxq
, int *perm
,
757 int *givptr
, int *givcol
, int *ldgcol
, float *givnum
, int *ldgnum
,
758 float *poles
, float *difl
, float *difr
, float *z
, int *k
,
759 float *c
, float *s
, float *work
, int *iwork
, int *info
);
762 F77_FUNC(slatrd
,SLATRD
)(const char *uplo
, int *n
, int *nb
, float *a
, int *lda
, float *e
,
763 float * tau
, float *w
, int *ldw
);
766 F77_FUNC(sorml2
,SORML2
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, float *a
,
767 int *lda
, float *tau
, float *c
, int *ldc
, float *work
, int *info
);
770 F77_FUNC(sstevr
,SSTEVR
)(const char *jobz
, const char *range
, int *n
, float *d
, float *e
, float *vl
,
771 float *vu
, int *il
, int *iu
, float *abstol
, int *m
, float *w
,
772 float *z
, int *ldz
, int *isuppz
, float *work
,
773 int *lwork
, int *iwork
, int *liwork
, int *info
);
776 F77_FUNC(ssytrd
,SSYTRD
)(const char *uplo
, int *n
, float * a
, int *lda
, float *d
,
777 float *e
, float *tau
, float *work
, int *lwork
, int *info
);
780 F77_FUNC(ssyevr
,SSYEVR
)(const char *jobz
, const char *range
, const char *uplo
, int *n
,
781 float *a
, int *lda
, float *vl
, float *vu
, int *
782 il
, int *iu
, float *abstol
, int *m
, float *w
,
783 float *z__
, int *ldz
, int *isuppz
, float *work
,
784 int *lwork
, int *iwork
, int *liwork
, int *info
);
787 F77_FUNC(sormql
,SORMQL
)(const char *side
, const char *trans
, int *m
, int *n
,
788 int *k
, float *a
, int *lda
, float *tau
, float *
789 c
, int *ldc
, float *work
, int *lwork
, int *info
);
792 F77_FUNC(sormqr
,SORMQR
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, float *a
,
793 int *lda
, float *tau
, float *c
, int *ldc
,
794 float *work
, int *lwork
, int *info
);
797 F77_FUNC(sorgbr
,SORGBR
)(const char *vect
, int *m
, int *n
, int *k
, float *a
, int *lda
,
798 float *tau
, float *work
, int *lwork
, int *info
);
801 F77_FUNC(slasq5
,SLASQ5
)(int *i0
, int *n0
, float *z
, int *pp
, float *tau
, float *dmin
,
802 float *dmin1
, float *dmin2
, float *dn
, float *dnm1
,
803 float *dnm2
, int *ieee
);
806 F77_FUNC(slasd8
,SLASD8
)(int *icompq
, int *k
, float *d
, float *z
, float *vf
, float *vl
,
807 float *difl
, float *difr
, int *lddifr
, float *dsigma
,
808 float *work
, int *info
);
811 F77_FUNC(slascl
,SLASCL
)(const char *type
, int *kl
, int *ku
, float *cfrom
, float *cto
, int *m
,
812 int *n
, float *a
, int *lda
, int *info
);
815 F77_FUNC(slarft
,SLARFT
)(const char *direct
, const char *storev
, int *n
, int *k
, float *v
,
816 int *ldv
, float *tau
, float *t
, int *ldt
);
819 F77_FUNC(slagts
,SLAGTS
)(int *job
, int *n
, float *a
, float *b
, float *c
, float *d
,
820 int *in
, float *y
, float *tol
, int *info
);
823 F77_FUNC(sgesdd
,SGESDD
)(const char *jobz
, int *m
, int *n
, float *a
, int *lda
, float *s
, float *u
,
824 int *ldu
, float *vt
, int *ldvt
, float *work
, int *lwork
,
825 int *iwork
, int *info
);
828 F77_FUNC(ssytd2
,SSYTD2
)(const char *uplo
, int *n
, float *a
, int *lda
, float *d
,
829 float *e
, float *tau
, int *info
);
832 F77_FUNC(sormlq
,SORMLQ
)(const char *side
, const char *trans
, int *m
, int *n
, int *k
, float *a
, int *lda
,
833 float *tau
, float *c
, int *ldc
, float *work
, int *lwork
, int *info
);
836 F77_FUNC(sorg2r
,SORG2R
)(int *m
, int *n
, int *k
, float *a
, int *lda
, float *tau
,
837 float *work
, int *info
);
840 F77_FUNC(slasq4
,SLASQ4
)(int *i0
, int *n0
, float *z
, int *pp
, int *n0in
, float *dmin
,
841 float *dmin1
, float *dmin2
, float *dn
, float *dn1
,
842 float *dn2
, float *tau
, int *ttype
);
845 F77_FUNC(slasd7
,SLASD7
)(int *icompq
, int *nl
, int *nr
, int *sqre
, int *k
, float *d
, float *z
,
846 float *zw
, float *vf
, float *vfw
, float *vl
, float *vlw
,
847 float *alpha
, float *beta
, float *dsigma
, int *idx
, int *idxp
,
848 int *idxq
, int *perm
, int *givptr
, int *givcol
, int *ldgcol
,
849 float *givnum
, int *ldgnum
, float *c
, float *s
, int *info
);
852 F77_FUNC(slas2
,SLAS2
)(float *f
, float *g
, float *h
, float *ssmin
, float *ssmax
);
855 F77_FUNC(slarfg
,SLARFG
)(int *n
, float *alpha
, float *x
, int *incx
, float *tau
);
858 F77_FUNC(slagtf
,SLAGTF
)(int *n
, float *a
, float *lambda
, float *b
, float *c
,
859 float *tol
, float *d
, int *in
, int *info
);
862 F77_FUNC(sgeqrf
,SGEQRF
)(int *m
, int *n
, float *a
, int *lda
, float *tau
,
863 float *work
, int *lwork
, int *info
);
872 #endif /* _LAPACK_H_ */