| 29932 |
ripley |
1 |
/*
|
|
|
2 |
* R : A Computer Language for Statistical Data Analysis
|
| 85049 |
ripley |
3 |
* Copyright (C) 2003-2023 The R Core Team.
|
| 29932 |
ripley |
4 |
*
|
| 71657 |
plummer |
5 |
* This header file is free software; you can redistribute it and/or modify
|
| 29932 |
ripley |
6 |
* it under the terms of the GNU Lesser General Public License as published by
|
|
|
7 |
* the Free Software Foundation; either version 2.1 of the License, or
|
|
|
8 |
* (at your option) any later version.
|
|
|
9 |
*
|
| 71657 |
plummer |
10 |
* This file is part of R. R is distributed under the terms of the
|
|
|
11 |
* GNU General Public License, either Version 2, June 1991 or Version 3,
|
|
|
12 |
* June 2007. See doc/COPYRIGHTS for details of the copyright status of R.
|
|
|
13 |
*
|
| 29932 |
ripley |
14 |
* This program is distributed in the hope that it will be useful,
|
|
|
15 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
16 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
17 |
* GNU Lesser General Public License for more details.
|
|
|
18 |
*
|
|
|
19 |
* You should have received a copy of the GNU Lesser General Public License
|
| 42308 |
ripley |
20 |
* along with this program; if not, a copy is available at
|
| 68949 |
ripley |
21 |
* https://www.R-project.org/Licenses/
|
| 29932 |
ripley |
22 |
*/
|
|
|
23 |
|
| 60961 |
ripley |
24 |
/*
|
|
|
25 |
C declarations of BLAS Fortran subroutines always available in R.
|
|
|
26 |
|
|
|
27 |
Part of the API.
|
|
|
28 |
|
| 71463 |
ripley |
29 |
R packages that use these should have PKG_LIBS in src/Makevars include
|
| 60961 |
ripley |
30 |
$(BLAS_LIBS) $(FLIBS)
|
|
|
31 |
*/
|
|
|
32 |
|
| 23063 |
bates |
33 |
#ifndef R_BLAS_H
|
|
|
34 |
#define R_BLAS_H
|
|
|
35 |
|
|
|
36 |
#include <R_ext/RS.h> /* for F77_... */
|
|
|
37 |
|
| 76600 |
ripley |
38 |
#ifdef FC_LEN_T
|
| 76585 |
ripley |
39 |
# include <stddef.h> // for size_t if needed
|
|
|
40 |
# define FCLEN ,FC_LEN_T
|
|
|
41 |
# define FCONE ,(FC_LEN_T)1
|
|
|
42 |
#else
|
|
|
43 |
# define FCLEN
|
|
|
44 |
# define FCONE
|
|
|
45 |
#endif
|
|
|
46 |
|
| 85054 |
ripley |
47 |
/* Allow for future 64-bit nrow, ncol and increments. by using int64_t .
|
|
|
48 |
configure checked that Fortran INTEGER is 32-bit and the same as C int.
|
|
|
49 |
Only LSAME (not included here) has LOGICAL in its declaration.
|
|
|
50 |
It is unclear what i[dz]amaz should return: the reference code has INTEGER,
|
|
|
51 |
but CBLAS has size_t. Apple Accelerate has __LAPACK_int, so int or long
|
|
|
52 |
for ILP64.
|
|
|
53 |
*/
|
| 85049 |
ripley |
54 |
#ifndef ILP64
|
|
|
55 |
# define BLAS_INT int
|
|
|
56 |
#endif
|
|
|
57 |
|
| 85053 |
ripley |
58 |
#ifndef BLAS_complex
|
|
|
59 |
# include <R_ext/Complex.h>
|
|
|
60 |
# define BLAS_complex Rcomplex
|
|
|
61 |
#endif
|
|
|
62 |
|
| 23063 |
bates |
63 |
#ifdef __cplusplus
|
|
|
64 |
extern "C" {
|
|
|
65 |
#endif
|
|
|
66 |
|
| 60961 |
ripley |
67 |
// never defined in R itself.
|
| 44687 |
maechler |
68 |
#ifndef BLAS_extern
|
|
|
69 |
#define BLAS_extern extern
|
|
|
70 |
#endif
|
|
|
71 |
|
| 23063 |
bates |
72 |
/* Double Precision Level 1 BLAS */
|
|
|
73 |
|
| 44687 |
maechler |
74 |
BLAS_extern double /* DASUM - sum of absolute values of a one-dimensional array */
|
| 85049 |
ripley |
75 |
F77_NAME(dasum)(const BLAS_INT *n, const double *dx, const BLAS_INT *incx);
|
| 76573 |
ripley |
76 |
BLAS_extern void /* DAXPY - replace y by da*x + y */
|
| 85049 |
ripley |
77 |
F77_NAME(daxpy)(const BLAS_INT *n, const double *da,
|
|
|
78 |
const double *dx, const BLAS_INT *incx,
|
|
|
79 |
double *dy, const BLAS_INT *incy);
|
| 44687 |
maechler |
80 |
BLAS_extern void /* DCOPY - copy x to y */
|
| 85049 |
ripley |
81 |
F77_NAME(dcopy)(const BLAS_INT *n, const double *dx, const BLAS_INT *incx,
|
|
|
82 |
double *dy, const BLAS_INT *incy);
|
| 44687 |
maechler |
83 |
BLAS_extern double /* DDOT - inner product of x and y */
|
| 85049 |
ripley |
84 |
F77_NAME(ddot)(const BLAS_INT *n, const double *dx, const BLAS_INT *incx,
|
|
|
85 |
const double *dy, const BLAS_INT *incy);
|
| 44687 |
maechler |
86 |
BLAS_extern double /* DNRM2 - 2-norm of a vector */
|
| 85049 |
ripley |
87 |
F77_NAME(dnrm2)(const BLAS_INT *n, const double *dx, const BLAS_INT *incx);
|
|
|
88 |
BLAS_extern void /* DROT - apply a Givens rotation */
|
|
|
89 |
F77_NAME(drot)(const BLAS_INT *n, double *dx, const BLAS_INT *incx,
|
|
|
90 |
double *dy, const BLAS_INT *incy, const double *c, const double *s);
|
|
|
91 |
BLAS_extern void /* DROTG - generate a Givens rotation */
|
| 23063 |
bates |
92 |
F77_NAME(drotg)(const double *a, const double *b, double *c, double *s);
|
| 85049 |
ripley |
93 |
BLAS_extern void /* DROTM - apply a modified Givens rotation */
|
|
|
94 |
F77_NAME(drotm)(const BLAS_INT *n, double *dx, const BLAS_INT *incx,
|
|
|
95 |
double *dy, const BLAS_INT *incy, const double *dparam);
|
|
|
96 |
BLAS_extern void /* DROTMG - generate a modified Givens rotation */
|
| 36367 |
ripley |
97 |
F77_NAME(drotmg)(const double *dd1, const double *dd2, const double *dx1,
|
| 36352 |
ripley |
98 |
const double *dy1, double *param);
|
| 44687 |
maechler |
99 |
BLAS_extern void /* DSCAL - scale a one-dimensional array */
|
| 85049 |
ripley |
100 |
F77_NAME(dscal)(const BLAS_INT *n, const double *alpha, double *dx, const BLAS_INT *incx);
|
| 44687 |
maechler |
101 |
BLAS_extern void /* DSWAP - interchange one-dimensional arrays */
|
| 85049 |
ripley |
102 |
F77_NAME(dswap)(const BLAS_INT *n, double *dx, const BLAS_INT *incx,
|
|
|
103 |
double *dy, const BLAS_INT *incy);
|
|
|
104 |
BLAS_extern BLAS_INT /* IDAMAX - return the index of the element with max abs value */
|
|
|
105 |
F77_NAME(idamax)(const BLAS_INT *n, const double *dx, const BLAS_INT *incx);
|
| 23063 |
bates |
106 |
|
|
|
107 |
/* Double Precision Level 2 BLAS */
|
|
|
108 |
|
|
|
109 |
/* DGBMV - perform one of the matrix-vector operations */
|
|
|
110 |
/* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, */
|
| 44687 |
maechler |
111 |
BLAS_extern void
|
| 85049 |
ripley |
112 |
F77_NAME(dgbmv)(const char *trans, const BLAS_INT *m, const BLAS_INT *n,
|
|
|
113 |
const BLAS_INT *kl,const BLAS_INT *ku,
|
|
|
114 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
115 |
const double *x, const BLAS_INT *incx,
|
|
|
116 |
const double *beta, double *y, const BLAS_INT *incy FCLEN);
|
| 23063 |
bates |
117 |
/* DGEMV - perform one of the matrix-vector operations */
|
|
|
118 |
/* y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y, */
|
| 44687 |
maechler |
119 |
BLAS_extern void
|
| 85049 |
ripley |
120 |
F77_NAME(dgemv)(const char *trans, const BLAS_INT *m, const BLAS_INT *n,
|
|
|
121 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
122 |
const double *x, const BLAS_INT *incx, const double *beta,
|
|
|
123 |
double *y, const BLAS_INT *incy FCLEN);
|
| 23063 |
bates |
124 |
/* DSBMV - perform the matrix-vector operation */
|
|
|
125 |
/* y := alpha*A*x + beta*y, */
|
| 44687 |
maechler |
126 |
BLAS_extern void
|
| 85049 |
ripley |
127 |
F77_NAME(dsbmv)(const char *uplo, const BLAS_INT *n, const BLAS_INT *k,
|
|
|
128 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
129 |
const double *x, const BLAS_INT *incx,
|
|
|
130 |
const double *beta, double *y, const BLAS_INT *incy FCLEN);
|
| 23063 |
bates |
131 |
/* DSPMV - perform the matrix-vector operation */
|
|
|
132 |
/* y := alpha*A*x + beta*y, */
|
| 44687 |
maechler |
133 |
BLAS_extern void
|
| 85049 |
ripley |
134 |
F77_NAME(dspmv)(const char *uplo, const BLAS_INT *n,
|
| 23063 |
bates |
135 |
const double *alpha, const double *ap,
|
| 85049 |
ripley |
136 |
const double *x, const BLAS_INT *incx,
|
|
|
137 |
const double *beta, double *y, const BLAS_INT *incy FCLEN);
|
| 23063 |
bates |
138 |
|
|
|
139 |
/* DSYMV - perform the matrix-vector operation */
|
|
|
140 |
/* y := alpha*A*x + beta*y, */
|
| 44687 |
maechler |
141 |
BLAS_extern void
|
| 85049 |
ripley |
142 |
F77_NAME(dsymv)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
|
|
143 |
const double *a, const BLAS_INT *lda,
|
|
|
144 |
const double *x, const BLAS_INT *incx,
|
|
|
145 |
const double *beta, double *y, const BLAS_INT *incy FCLEN);
|
| 23063 |
bates |
146 |
/* DTBMV - perform one of the matrix-vector operations */
|
|
|
147 |
/* x := A*x, or x := A'*x, */
|
| 44687 |
maechler |
148 |
BLAS_extern void
|
| 23063 |
bates |
149 |
F77_NAME(dtbmv)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
150 |
const char *diag, const BLAS_INT *n, const BLAS_INT *k,
|
|
|
151 |
const double *a, const BLAS_INT *lda,
|
|
|
152 |
double *x, const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
153 |
/* DTPMV - perform one of the matrix-vector operations */
|
|
|
154 |
/* x := A*x, or x := A'*x, */
|
| 44687 |
maechler |
155 |
BLAS_extern void
|
| 23063 |
bates |
156 |
F77_NAME(dtpmv)(const char *uplo, const char *trans, const char *diag,
|
| 85049 |
ripley |
157 |
const BLAS_INT *n, const double *ap,
|
|
|
158 |
double *x, const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
159 |
/* DTRMV - perform one of the matrix-vector operations */
|
|
|
160 |
/* x := A*x, or x := A'*x, */
|
| 44687 |
maechler |
161 |
BLAS_extern void
|
| 23063 |
bates |
162 |
F77_NAME(dtrmv)(const char *uplo, const char *trans, const char *diag,
|
| 85049 |
ripley |
163 |
const BLAS_INT *n, const double *a, const BLAS_INT *lda,
|
|
|
164 |
double *x, const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
165 |
/* DTBSV - solve one of the systems of equations */
|
|
|
166 |
/* A*x = b, or A'*x = b, */
|
| 44687 |
maechler |
167 |
BLAS_extern void
|
| 23063 |
bates |
168 |
F77_NAME(dtbsv)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
169 |
const char *diag, const BLAS_INT *n, const BLAS_INT *k,
|
|
|
170 |
const double *a, const BLAS_INT *lda,
|
|
|
171 |
double *x, const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
172 |
/* DTPSV - solve one of the systems of equations */
|
|
|
173 |
/* A*x = b, or A'*x = b, */
|
| 44687 |
maechler |
174 |
BLAS_extern void
|
| 23063 |
bates |
175 |
F77_NAME(dtpsv)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
176 |
const char *diag, const BLAS_INT *n,
|
|
|
177 |
const double *ap, double *x, const BLAS_INT *incx
|
| 76585 |
ripley |
178 |
FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
179 |
/* DTRSV - solve one of the systems of equations */
|
|
|
180 |
/* A*x = b, or A'*x = b, */
|
| 44687 |
maechler |
181 |
BLAS_extern void
|
| 23063 |
bates |
182 |
F77_NAME(dtrsv)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
183 |
const char *diag, const BLAS_INT *n,
|
|
|
184 |
const double *a, const BLAS_INT *lda,
|
|
|
185 |
double *x, const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
186 |
/* DGER - perform the rank 1 operation A := alpha*x*y' + A */
|
| 44687 |
maechler |
187 |
BLAS_extern void
|
| 85049 |
ripley |
188 |
F77_NAME(dger)(const BLAS_INT *m, const BLAS_INT *n, const double *alpha,
|
|
|
189 |
const double *x, const BLAS_INT *incx,
|
|
|
190 |
const double *y, const BLAS_INT *incy,
|
|
|
191 |
double *a, const BLAS_INT *lda);
|
| 23063 |
bates |
192 |
/* DSYR - perform the symmetric rank 1 operation A := alpha*x*x' + A */
|
| 44687 |
maechler |
193 |
BLAS_extern void
|
| 85049 |
ripley |
194 |
F77_NAME(dsyr)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
|
|
195 |
const double *x, const BLAS_INT *incx,
|
|
|
196 |
double *a, const BLAS_INT *lda FCLEN);
|
| 23063 |
bates |
197 |
/* DSPR - perform the symmetric rank 1 operation A := alpha*x*x' + A */
|
| 44687 |
maechler |
198 |
BLAS_extern void
|
| 85049 |
ripley |
199 |
F77_NAME(dspr)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
|
|
200 |
const double *x, const BLAS_INT *incx, double *ap FCLEN);
|
| 23063 |
bates |
201 |
/* DSYR2 - perform the symmetric rank 2 operation */
|
|
|
202 |
/* A := alpha*x*y' + alpha*y*x' + A, */
|
| 44687 |
maechler |
203 |
BLAS_extern void
|
| 85049 |
ripley |
204 |
F77_NAME(dsyr2)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
|
|
205 |
const double *x, const BLAS_INT *incx,
|
|
|
206 |
const double *y, const BLAS_INT *incy,
|
|
|
207 |
double *a, const BLAS_INT *lda FCLEN);
|
| 23063 |
bates |
208 |
/* DSPR2 - perform the symmetric rank 2 operation */
|
|
|
209 |
/* A := alpha*x*y' + alpha*y*x' + A, */
|
| 44687 |
maechler |
210 |
BLAS_extern void
|
| 85049 |
ripley |
211 |
F77_NAME(dspr2)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
|
|
212 |
const double *x, const BLAS_INT *incx,
|
|
|
213 |
const double *y, const BLAS_INT *incy, double *ap FCLEN);
|
| 23063 |
bates |
214 |
|
|
|
215 |
/* Double Precision Level 3 BLAS */
|
|
|
216 |
|
|
|
217 |
/* DGEMM - perform one of the matrix-matrix operations */
|
|
|
218 |
/* C := alpha*op( A )*op( B ) + beta*C */
|
| 44687 |
maechler |
219 |
BLAS_extern void
|
| 85049 |
ripley |
220 |
F77_NAME(dgemm)(const char *transa, const char *transb, const BLAS_INT *m,
|
|
|
221 |
const BLAS_INT *n, const BLAS_INT *k, const double *alpha,
|
|
|
222 |
const double *a, const BLAS_INT *lda,
|
|
|
223 |
const double *b, const BLAS_INT *ldb,
|
|
|
224 |
const double *beta, double *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
225 |
FCLEN FCLEN);
|
| 23063 |
bates |
226 |
/* DTRSM - solve one of the matrix equations */
|
|
|
227 |
/* op(A)*X = alpha*B, or X*op(A) = alpha*B */
|
| 44687 |
maechler |
228 |
BLAS_extern void
|
| 23063 |
bates |
229 |
F77_NAME(dtrsm)(const char *side, const char *uplo,
|
|
|
230 |
const char *transa, const char *diag,
|
| 85049 |
ripley |
231 |
const BLAS_INT *m, const BLAS_INT *n, const double *alpha,
|
|
|
232 |
const double *a, const BLAS_INT *lda,
|
|
|
233 |
double *b, const BLAS_INT *ldb
|
| 76585 |
ripley |
234 |
FCLEN FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
235 |
/* DTRMM - perform one of the matrix-matrix operations */
|
|
|
236 |
/* B := alpha*op( A )*B, or B := alpha*B*op( A ) */
|
| 44687 |
maechler |
237 |
BLAS_extern void
|
| 23063 |
bates |
238 |
F77_NAME(dtrmm)(const char *side, const char *uplo, const char *transa,
|
| 85049 |
ripley |
239 |
const char *diag, const BLAS_INT *m, const BLAS_INT *n,
|
|
|
240 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
241 |
double *b, const BLAS_INT *ldb
|
| 76585 |
ripley |
242 |
FCLEN FCLEN FCLEN FCLEN);
|
| 23063 |
bates |
243 |
/* DSYMM - perform one of the matrix-matrix operations */
|
|
|
244 |
/* C := alpha*A*B + beta*C, */
|
| 44687 |
maechler |
245 |
BLAS_extern void
|
| 85049 |
ripley |
246 |
F77_NAME(dsymm)(const char *side, const char *uplo, const BLAS_INT *m,
|
|
|
247 |
const BLAS_INT *n, const double *alpha,
|
|
|
248 |
const double *a, const BLAS_INT *lda,
|
|
|
249 |
const double *b, const BLAS_INT *ldb,
|
|
|
250 |
const double *beta, double *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
251 |
FCLEN FCLEN);
|
| 23063 |
bates |
252 |
/* DSYRK - perform one of the symmetric rank k operations */
|
|
|
253 |
/* C := alpha*A*A' + beta*C or C := alpha*A'*A + beta*C */
|
| 44687 |
maechler |
254 |
BLAS_extern void
|
| 23063 |
bates |
255 |
F77_NAME(dsyrk)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
256 |
const BLAS_INT *n, const BLAS_INT *k,
|
|
|
257 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
258 |
const double *beta, double *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
259 |
FCLEN FCLEN);
|
| 23063 |
bates |
260 |
/* DSYR2K - perform one of the symmetric rank 2k operations */
|
|
|
261 |
/* C := alpha*A*B' + alpha*B*A' + beta*C or */
|
|
|
262 |
/* C := alpha*A'*B + alpha*B'*A + beta*C */
|
| 44687 |
maechler |
263 |
BLAS_extern void
|
| 23063 |
bates |
264 |
F77_NAME(dsyr2k)(const char *uplo, const char *trans,
|
| 85049 |
ripley |
265 |
const BLAS_INT *n, const BLAS_INT *k,
|
|
|
266 |
const double *alpha, const double *a, const BLAS_INT *lda,
|
|
|
267 |
const double *b, const BLAS_INT *ldb,
|
|
|
268 |
const double *beta, double *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
269 |
FCLEN FCLEN);
|
| 36352 |
ripley |
270 |
/*
|
| 85073 |
ripley |
271 |
LSAME is declared in Lapack.h.
|
|
|
272 |
(https://netlib.org/lapack/explore-html/dc/d9c/_i_n_s_t_a_l_l_2lsame_8f_ada799b40a93f1fd2c6d1a86a95f21631.html
|
|
|
273 |
calls it a 'LAPACK auxiliary routine'.)
|
|
|
274 |
|
|
|
275 |
It is used in the code of other BLAS routines and hence included in
|
|
|
276 |
src/extra/blas/blas.f. However, it is not included by
|
|
|
277 |
Apple's Accelerate (nor cblas: it is in lapacke).
|
| 36352 |
ripley |
278 |
*/
|
| 35002 |
ripley |
279 |
|
| 36367 |
ripley |
280 |
/* Double complex BLAS routines added for 2.3.0 */
|
| 44669 |
maechler |
281 |
/* #ifdef HAVE_FORTRAN_DOUBLE_COMPLEX */
|
| 44687 |
maechler |
282 |
BLAS_extern double
|
| 85053 |
ripley |
283 |
F77_NAME(dcabs1)(const BLAS_complex *z);
|
| 44687 |
maechler |
284 |
BLAS_extern double
|
| 85053 |
ripley |
285 |
F77_NAME(dzasum)(const BLAS_INT *n, const BLAS_complex *zx, const BLAS_INT *incx);
|
| 44687 |
maechler |
286 |
BLAS_extern double
|
| 85053 |
ripley |
287 |
F77_NAME(dznrm2)(const BLAS_INT *n, const BLAS_complex *x, const BLAS_INT *incx);
|
| 85049 |
ripley |
288 |
BLAS_extern BLAS_INT
|
| 85053 |
ripley |
289 |
F77_NAME(izamax)(const BLAS_INT *n, const BLAS_complex *zx, const BLAS_INT *incx);
|
| 44687 |
maechler |
290 |
BLAS_extern void
|
| 85053 |
ripley |
291 |
F77_NAME(zaxpy)(const BLAS_INT *n, const BLAS_complex *za, const BLAS_complex *zx,
|
|
|
292 |
const BLAS_INT *incx, const BLAS_complex *zy, const BLAS_INT *incy);
|
| 44687 |
maechler |
293 |
BLAS_extern void
|
| 85053 |
ripley |
294 |
F77_NAME(zcopy)(const BLAS_INT *n, const BLAS_complex *zx, const BLAS_INT *incx,
|
|
|
295 |
const BLAS_complex *zy, const BLAS_INT *incy);
|
| 58613 |
ripley |
296 |
|
|
|
297 |
/* WARNING! The next two return a value that may not be
|
|
|
298 |
compatible between C and Fortran, and even if it is, this might
|
|
|
299 |
not be the right translation to C. Only use after
|
|
|
300 |
configure-testing with your compilers.
|
|
|
301 |
*/
|
| 85053 |
ripley |
302 |
BLAS_extern BLAS_complex
|
| 85049 |
ripley |
303 |
F77_NAME(zdotc)(const BLAS_INT *n,
|
| 85053 |
ripley |
304 |
const BLAS_complex *zx, const BLAS_INT *incx,
|
|
|
305 |
const BLAS_complex *zy, const BLAS_INT *incy);
|
|
|
306 |
BLAS_extern BLAS_complex
|
| 85049 |
ripley |
307 |
F77_NAME(zdotu)(const BLAS_INT *n,
|
| 85053 |
ripley |
308 |
const BLAS_complex *zx, const BLAS_INT *incx,
|
|
|
309 |
const BLAS_complex *zy, const BLAS_INT *incy);
|
| 58613 |
ripley |
310 |
|
| 44687 |
maechler |
311 |
BLAS_extern void
|
| 85049 |
ripley |
312 |
F77_NAME(zdrot)(const BLAS_INT *n,
|
| 85053 |
ripley |
313 |
const BLAS_complex *zx, const BLAS_INT *incx,
|
|
|
314 |
BLAS_complex *zy, const BLAS_INT *incy,
|
| 71463 |
ripley |
315 |
const double *c, const double *s);
|
| 44687 |
maechler |
316 |
BLAS_extern void
|
| 85049 |
ripley |
317 |
F77_NAME(zdscal)(const BLAS_INT *n, const double *da,
|
| 85053 |
ripley |
318 |
BLAS_complex *zx, const BLAS_INT *incx);
|
| 44687 |
maechler |
319 |
BLAS_extern void
|
| 85049 |
ripley |
320 |
F77_NAME(zgbmv)(const char *trans, BLAS_INT *m, BLAS_INT *n, BLAS_INT *kl,
|
| 85053 |
ripley |
321 |
BLAS_INT *ku, BLAS_complex *alpha, BLAS_complex *a, BLAS_INT *lda,
|
|
|
322 |
BLAS_complex *x, BLAS_INT *incx, BLAS_complex *beta, BLAS_complex *y,
|
| 85049 |
ripley |
323 |
BLAS_INT *incy FCLEN);
|
| 44687 |
maechler |
324 |
BLAS_extern void
|
| 85049 |
ripley |
325 |
F77_NAME(zgemm)(const char *transa, const char *transb, const BLAS_INT *m,
|
| 85053 |
ripley |
326 |
const BLAS_INT *n, const BLAS_INT *k, const BLAS_complex *alpha,
|
|
|
327 |
const BLAS_complex *a, const BLAS_INT *lda,
|
|
|
328 |
const BLAS_complex *b, const BLAS_INT *ldb,
|
|
|
329 |
const BLAS_complex *beta, BLAS_complex *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
330 |
FCLEN FCLEN);
|
| 44687 |
maechler |
331 |
BLAS_extern void
|
| 85049 |
ripley |
332 |
F77_NAME(zgemv)(const char *trans, const BLAS_INT *m, const BLAS_INT *n,
|
| 85053 |
ripley |
333 |
const BLAS_complex *alpha, const BLAS_complex *a, const BLAS_INT *lda,
|
|
|
334 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *beta,
|
|
|
335 |
BLAS_complex *y, const BLAS_INT *incy FCLEN);
|
| 44687 |
maechler |
336 |
BLAS_extern void
|
| 85053 |
ripley |
337 |
F77_NAME(zgerc)(const BLAS_INT *m, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
338 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *y,
|
|
|
339 |
const BLAS_INT *incy, BLAS_complex *a, const BLAS_INT *lda);
|
| 44687 |
maechler |
340 |
BLAS_extern void
|
| 85053 |
ripley |
341 |
F77_NAME(zgeru)(const BLAS_INT *m, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
342 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *y,
|
|
|
343 |
const BLAS_INT *incy, BLAS_complex *a, const BLAS_INT *lda);
|
| 44687 |
maechler |
344 |
BLAS_extern void
|
| 85049 |
ripley |
345 |
F77_NAME(zhbmv)(const char *uplo, const BLAS_INT *n, const BLAS_INT *k,
|
| 85053 |
ripley |
346 |
const BLAS_complex *alpha, const BLAS_complex *a, const BLAS_INT *lda,
|
|
|
347 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *beta,
|
|
|
348 |
BLAS_complex *y, const BLAS_INT *incy FCLEN);
|
| 44687 |
maechler |
349 |
BLAS_extern void
|
| 85049 |
ripley |
350 |
F77_NAME(zhemm)(const char *side, const char *uplo, const BLAS_INT *m,
|
| 85053 |
ripley |
351 |
const BLAS_INT *n, const BLAS_complex *alpha, const BLAS_complex *a,
|
|
|
352 |
const BLAS_INT *lda, const BLAS_complex *b, const BLAS_INT *ldb,
|
|
|
353 |
const BLAS_complex *beta, BLAS_complex *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
354 |
FCLEN FCLEN);
|
| 44687 |
maechler |
355 |
BLAS_extern void
|
| 85053 |
ripley |
356 |
F77_NAME(zhemv)(const char *uplo, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
357 |
const BLAS_complex *a, const BLAS_INT *lda, const BLAS_complex *x,
|
|
|
358 |
const BLAS_INT *incx, const BLAS_complex *beta,
|
|
|
359 |
BLAS_complex *y, const BLAS_INT *incy FCLEN);
|
| 44687 |
maechler |
360 |
BLAS_extern void
|
| 85049 |
ripley |
361 |
F77_NAME(zher)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
| 85053 |
ripley |
362 |
const BLAS_complex *x, const BLAS_INT *incx, BLAS_complex *a,
|
| 85049 |
ripley |
363 |
const BLAS_INT *lda FCLEN);
|
| 44687 |
maechler |
364 |
BLAS_extern void
|
| 85053 |
ripley |
365 |
F77_NAME(zher2)(const char *uplo, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
366 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *y,
|
|
|
367 |
const BLAS_INT *incy, BLAS_complex *a, const BLAS_INT *lda FCLEN);
|
| 44687 |
maechler |
368 |
BLAS_extern void
|
| 85049 |
ripley |
369 |
F77_NAME(zher2k)(const char *uplo, const char *trans, const BLAS_INT *n,
|
| 85053 |
ripley |
370 |
const BLAS_INT *k, const BLAS_complex *alpha, const BLAS_complex *a,
|
|
|
371 |
const BLAS_INT *lda, const BLAS_complex *b, const BLAS_INT *ldb,
|
|
|
372 |
const double *beta, BLAS_complex *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
373 |
FCLEN FCLEN);
|
| 44687 |
maechler |
374 |
BLAS_extern void
|
| 85049 |
ripley |
375 |
F77_NAME(zherk)(const char *uplo, const char *trans, const BLAS_INT *n,
|
| 85053 |
ripley |
376 |
const BLAS_INT *k, const double *alpha, const BLAS_complex *a,
|
|
|
377 |
const BLAS_INT *lda, const double *beta, BLAS_complex *c,
|
| 85049 |
ripley |
378 |
const BLAS_INT *ldc FCLEN FCLEN);
|
| 44687 |
maechler |
379 |
BLAS_extern void
|
| 85053 |
ripley |
380 |
F77_NAME(zhpmv)(const char *uplo, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
381 |
const BLAS_complex *ap, const BLAS_complex *x, const BLAS_INT *incx,
|
|
|
382 |
const BLAS_complex * beta, BLAS_complex *y, const BLAS_INT *incy
|
| 76585 |
ripley |
383 |
FCLEN);
|
| 44687 |
maechler |
384 |
BLAS_extern void
|
| 85049 |
ripley |
385 |
F77_NAME(zhpr)(const char *uplo, const BLAS_INT *n, const double *alpha,
|
| 85053 |
ripley |
386 |
const BLAS_complex *x, const BLAS_INT *incx, BLAS_complex *ap
|
| 76585 |
ripley |
387 |
FCLEN);
|
| 44687 |
maechler |
388 |
BLAS_extern void
|
| 85053 |
ripley |
389 |
F77_NAME(zhpr2)(const char *uplo, const BLAS_INT *n, const BLAS_complex *alpha,
|
|
|
390 |
const BLAS_complex *x, const BLAS_INT *incx, const BLAS_complex *y,
|
|
|
391 |
const BLAS_INT *incy, BLAS_complex *ap FCLEN);
|
| 44687 |
maechler |
392 |
BLAS_extern void
|
| 85053 |
ripley |
393 |
F77_NAME(zrotg)(const BLAS_complex *ca, const BLAS_complex *cb,
|
|
|
394 |
double *c, BLAS_complex *s);
|
| 44687 |
maechler |
395 |
BLAS_extern void
|
| 85053 |
ripley |
396 |
F77_NAME(zscal)(const BLAS_INT *n, const BLAS_complex *za, BLAS_complex *zx,
|
| 85049 |
ripley |
397 |
const BLAS_INT *incx);
|
| 44687 |
maechler |
398 |
BLAS_extern void
|
| 85053 |
ripley |
399 |
F77_NAME(zswap)(const BLAS_INT *n, BLAS_complex *zx, const BLAS_INT *incx,
|
|
|
400 |
BLAS_complex *zy, const BLAS_INT *incy);
|
| 44687 |
maechler |
401 |
BLAS_extern void
|
| 85049 |
ripley |
402 |
F77_NAME(zsymm)(const char *side, const char *uplo, const BLAS_INT *m,
|
| 85053 |
ripley |
403 |
const BLAS_INT *n, const BLAS_complex *alpha, const BLAS_complex *a,
|
|
|
404 |
const BLAS_INT *lda, const BLAS_complex *b, const BLAS_INT *ldb,
|
|
|
405 |
const BLAS_complex *beta, BLAS_complex *c, const BLAS_INT *ldc
|
| 76585 |
ripley |
406 |
FCLEN FCLEN);
|
| 44687 |
maechler |
407 |
BLAS_extern void
|
| 85049 |
ripley |
408 |
F77_NAME(zsyr2k)(const char *uplo, const char *trans, BLAS_INT *n, BLAS_INT *k,
|
| 85053 |
ripley |
409 |
BLAS_complex *alpha, BLAS_complex *a, BLAS_INT *lda, BLAS_complex *b,
|
|
|
410 |
BLAS_INT *ldb, BLAS_complex *beta, BLAS_complex *c, BLAS_INT *ldc
|
| 76585 |
ripley |
411 |
FCLEN FCLEN);
|
| 44687 |
maechler |
412 |
BLAS_extern void
|
| 85049 |
ripley |
413 |
F77_NAME(zsyrk)(const char *uplo, const char *trans, const BLAS_INT *n,
|
| 85053 |
ripley |
414 |
const BLAS_INT *k, const BLAS_complex *alpha, const BLAS_complex *a,
|
|
|
415 |
const BLAS_INT *lda, const BLAS_complex *beta, BLAS_complex *c,
|
| 85049 |
ripley |
416 |
const BLAS_INT *ldc FCLEN FCLEN);
|
| 44687 |
maechler |
417 |
BLAS_extern void
|
| 71463 |
ripley |
418 |
F77_NAME(ztbmv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
419 |
const BLAS_INT *n, const BLAS_INT *k, const BLAS_complex *a,
|
|
|
420 |
const BLAS_INT *lda, BLAS_complex *x, const BLAS_INT *incx
|
| 76585 |
ripley |
421 |
FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
422 |
BLAS_extern void
|
| 71463 |
ripley |
423 |
F77_NAME(ztbsv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
424 |
const BLAS_INT *n, const BLAS_INT *k, const BLAS_complex *a,
|
|
|
425 |
const BLAS_INT *lda, BLAS_complex *x, const BLAS_INT *incx
|
| 76585 |
ripley |
426 |
FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
427 |
BLAS_extern void
|
| 71463 |
ripley |
428 |
F77_NAME(ztpmv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
429 |
const BLAS_INT *n, const BLAS_complex *ap, BLAS_complex *x,
|
| 85049 |
ripley |
430 |
const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
431 |
BLAS_extern void
|
| 71463 |
ripley |
432 |
F77_NAME(ztpsv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
433 |
const BLAS_INT *n, const BLAS_complex *ap, BLAS_complex *x,
|
| 85049 |
ripley |
434 |
const BLAS_INT *incx FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
435 |
BLAS_extern void
|
| 71463 |
ripley |
436 |
F77_NAME(ztrmm)(const char *side, const char *uplo, const char *transa,
|
| 85049 |
ripley |
437 |
const char *diag, const BLAS_INT *m, const BLAS_INT *n,
|
| 85053 |
ripley |
438 |
const BLAS_complex *alpha, const BLAS_complex *a,
|
|
|
439 |
const BLAS_INT *lda, BLAS_complex *b, const BLAS_INT *ldb
|
| 76585 |
ripley |
440 |
FCLEN FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
441 |
BLAS_extern void
|
| 71463 |
ripley |
442 |
F77_NAME(ztrmv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
443 |
const BLAS_INT *n, const BLAS_complex *a, const BLAS_INT *lda,
|
|
|
444 |
BLAS_complex *x, const BLAS_INT *incx
|
| 76585 |
ripley |
445 |
FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
446 |
BLAS_extern void
|
| 71463 |
ripley |
447 |
F77_NAME(ztrsm)(const char *side, const char *uplo, const char *transa,
|
| 85053 |
ripley |
448 |
const char *diag, BLAS_INT *m, BLAS_INT *n, BLAS_complex *alpha,
|
|
|
449 |
BLAS_complex *a, BLAS_INT *lda, BLAS_complex *b, BLAS_INT *ldb
|
| 76585 |
ripley |
450 |
FCLEN FCLEN FCLEN FCLEN);
|
| 44687 |
maechler |
451 |
BLAS_extern void
|
| 71463 |
ripley |
452 |
F77_NAME(ztrsv)(const char *uplo, const char *trans, const char *diag,
|
| 85053 |
ripley |
453 |
const BLAS_INT *n, const BLAS_complex *a, const BLAS_INT *lda,
|
|
|
454 |
BLAS_complex *x, const BLAS_INT *incx
|
| 76585 |
ripley |
455 |
FCLEN FCLEN FCLEN);
|
| 44669 |
maechler |
456 |
/* #endif */
|
| 36367 |
ripley |
457 |
|
| 86265 |
maechler |
458 |
/* ZSPMV performs the matrix-vector operation
|
|
|
459 |
*
|
|
|
460 |
* y := alpha*A*x + beta*y,
|
|
|
461 |
*
|
|
|
462 |
* where alpha and beta are scalars, x and y are n element vectors
|
|
|
463 |
* and A is an n by n symmetric matrix, supplied in packed form.
|
|
|
464 |
* Added in R 4.4.0
|
|
|
465 |
*/
|
|
|
466 |
BLAS_extern void
|
|
|
467 |
F77_NAME(zspmv)(const char *uplo, const BLAS_INT *n,
|
|
|
468 |
const BLAS_complex *alpha, const BLAS_complex *ap,
|
|
|
469 |
const BLAS_complex *x, const BLAS_INT *incx,
|
|
|
470 |
const BLAS_complex *beta, BLAS_complex *y, const BLAS_INT *incy FCLEN);
|
|
|
471 |
|
| 23063 |
bates |
472 |
#ifdef __cplusplus
|
|
|
473 |
}
|
|
|
474 |
#endif
|
|
|
475 |
|
|
|
476 |
#endif /* R_BLAS_H */
|