PEXSI
 All Classes Namespaces Files Functions Variables Typedefs Pages
blas.hpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2012 The Regents of the University of California,
3  through Lawrence Berkeley National Laboratory.
4 
5  Authors: Jack Poulson and Lin Lin
6 
7  This file is part of PEXSI. All rights reserved.
8 
9  Redistribution and use in source and binary forms, with or without
10  modification, are permitted provided that the following conditions are met:
11 
12  (1) Redistributions of source code must retain the above copyright notice, this
13  list of conditions and the following disclaimer.
14  (2) Redistributions in binary form must reproduce the above copyright notice,
15  this list of conditions and the following disclaimer in the documentation
16  and/or other materials provided with the distribution.
17  (3) Neither the name of the University of California, Lawrence Berkeley
18  National Laboratory, U.S. Dept. of Energy nor the names of its contributors may
19  be used to endorse or promote products derived from this software without
20  specific prior written permission.
21 
22  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
23  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
24  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
26  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
27  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
29  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 
33  You are under no obligation whatsoever to provide any bug fixes, patches, or
34  upgrades to the features, functionality or performance of the source code
35  ("Enhancements") to anyone; however, if you choose to make your Enhancements
36  available either publicly, or directly to Lawrence Berkeley National
37  Laboratory, without imposing a separate written license agreement for such
38  Enhancements, then you hereby grant the following license: a non-exclusive,
39  royalty-free perpetual license to install, use, modify, prepare derivative
40  works, incorporate into other computer software, distribute, and sublicense
41  such enhancements or derivative works thereof, in binary and source code form.
42 */
46 #ifndef _PEXSI_BLAS_HPP_
47 #define _PEXSI_BLAS_HPP_
48 #include "pexsi/environment.hpp"
49 
50 namespace PEXSI {
51 
55 namespace blas {
56 
57  typedef int Int;
58  typedef std::complex<float> scomplex;
59  typedef std::complex<double> dcomplex;
60 
61 
62  // *********************************************************************
63  // Level 1 BLAS //
64  // *********************************************************************
65  void Axpy
66  ( Int n, float alpha, const float* x, Int incx, float* y, Int incy );
67  void Axpy
68  ( Int n, double alpha, const double* x, Int incx, double* y, Int incy );
69  void Axpy
70  ( Int n, scomplex alpha, const scomplex* x, Int incx, scomplex* y, Int incy );
71  void Axpy
72  ( Int n, dcomplex alpha, const dcomplex* x, Int incx, dcomplex* y, Int incy );
73  template<typename T>
74  void Axpy( Int n, T alpha, const T* x, Int incx, T* y, Int incy );
75 
76  void Copy( Int n, const int* x, Int incx, int* y, Int incy );
77  void Copy( Int n, const float* x, Int incx, float* y, Int incy );
78  void Copy( Int n, const double* x, Int incx, double* y, Int incy );
79  void Copy( Int n, const scomplex* x, Int incx, scomplex* y, Int incy );
80  void Copy( Int n, const dcomplex* x, Int incx, dcomplex* y, Int incy );
81  template<typename T>
82  void Copy( Int n, const T* x, Int incx, T* y, Int incy );
83 
84  float Dot( Int n, const float* x, Int incx, const float* y, Int incy );
85  double Dot( Int n, const double* x, Int incx, const double* y, Int incy );
86  scomplex Dot( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
87  dcomplex Dot( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
88  template<typename T>
89  T Dot( Int n, const T* x, Int incx, const T* y, Int incy );
90 
91  float Dotc
92  ( Int n, const float* x, Int incx, const float* y, Int incy );
93  double Dotc
94  ( Int n, const double* x, Int incx, const double* y, Int incy );
95  scomplex Dotc
96  ( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
97  dcomplex Dotc
98  ( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
99  template<typename T>
100  T Dotc( Int n, const T* x, Int incx, const T* y, Int incy );
101 
102  float Dotu
103  ( Int n, const float* x, Int incx, const float* y, Int incy );
104  double Dotu
105  ( Int n, const double* x, Int incx, const double* y, Int incy );
106  scomplex Dotu
107  ( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
108  dcomplex Dotu
109  ( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
110  template<typename T>
111  T Dotu( Int n, const T* x, Int incx, const T* y, Int incy );
112 
113  float Nrm2( Int n, const float* x, Int incx );
114  double Nrm2( Int n, const double* x, Int incx );
115  float Nrm2( Int n, const scomplex* x, Int incx );
116  double Nrm2( Int n, const dcomplex* x, Int incx );
117  template<typename F> F Nrm2( Int n, const F* x, Int incx );
118 
119  void Scal( Int n, float alpha, float* x, Int incx );
120  void Scal( Int n, double alpha, double* x, Int incx );
121  void Scal( Int n, scomplex alpha, scomplex* x, Int incx );
122  void Scal( Int n, dcomplex alpha, dcomplex* x, Int incx );
123  template<typename F> void Scal( Int n, F alpha, F* x, Int incx );
124 
125  // *********************************************************************
126  // Level 2 BLAS
127  // *********************************************************************
128  void Gemv
129  ( char trans, Int m, Int n,
130  float alpha, const float* A, Int lda, const float* x, Int incx,
131  float beta, float* y, Int incy );
132  void Gemv
133  ( char trans, Int m, Int n,
134  double alpha, const double* A, Int lda, const double* x, Int incx,
135  double beta, double* y, Int incy );
136  void Gemv
137  ( char trans, Int m, Int n,
138  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
139  scomplex beta, scomplex* y, Int incy );
140  void Gemv
141  ( char trans, Int m, Int n,
142  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
143  dcomplex beta, dcomplex* y, Int incy );
144  template<typename T>
145  void Gemv
146  ( char trans, Int m, Int n,
147  T alpha, const T* A, Int lda, const T* x, Int incx,
148  T beta, T* y, Int incy );
149 
150  void Ger
151  ( Int m, Int n,
152  float alpha, const float* x, Int incx, const float* y, Int incy,
153  float* A, Int lda );
154  void Ger
155  ( Int m, Int n,
156  double alpha, const double* x, Int incx, const double* y, Int incy,
157  double* A, Int lda );
158  void Ger
159  ( Int m, Int n,
160  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
161  scomplex* A, Int lda );
162  void Ger
163  ( Int m, Int n,
164  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
165  dcomplex* A, Int lda );
166  template<typename T>
167  void Ger
168  ( char trans, Int m, Int n,
169  T alpha, const T* x, Int incx, const T* y, Int incy,
170  T beta, T* A, Int lda );
171 
172  void Gerc
173  ( Int m, Int n,
174  float alpha, const float* x, Int incx, const float* y, Int incy,
175  float* A, Int lda );
176  void Gerc
177  ( Int m, Int n,
178  double alpha, const double* x, Int incx, const double* y, Int incy,
179  double* A, Int lda );
180  void Gerc
181  ( Int m, Int n,
182  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
183  scomplex* A, Int lda );
184  void Gerc
185  ( Int m, Int n,
186  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
187  dcomplex* A, Int lda );
188  template<typename T>
189  void Gerc
190  ( char trans, Int m, Int n,
191  T alpha, const T* x, Int incx, const T* y, Int incy,
192  T beta, T* A, Int lda );
193 
194  void Geru
195  ( Int m, Int n,
196  float alpha, const float* x, Int incx, const float* y, Int incy,
197  float* A, Int lda );
198  void Geru
199  ( Int m, Int n,
200  double alpha, const double* x, Int incx, const double* y, Int incy,
201  double* A, Int lda );
202  void Geru
203  ( Int m, Int n,
204  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
205  scomplex* A, Int lda );
206  void Geru
207  ( Int m, Int n,
208  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
209  dcomplex* A, Int lda );
210  template<typename T>
211  void Geru
212  ( char trans, Int m, Int n,
213  T alpha, const T* x, Int incx, const T* y, Int incy,
214  T beta, T* A, Int lda );
215 
216  void Hemv
217  ( char uplo, Int m,
218  float alpha, const float* A, Int lda, const float* x, Int incx,
219  float beta, float* y, Int incy );
220  void Hemv
221  ( char uplo, Int m,
222  double alpha, const double* A, Int lda, const double* x, Int incx,
223  double beta, double* y, Int incy );
224  void Hemv
225  ( char uplo, Int m,
226  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
227  scomplex beta, scomplex* y, Int incy );
228  void Hemv
229  ( char uplo, Int m,
230  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
231  dcomplex beta, dcomplex* y, Int incy );
232  template<typename T>
233  void Hemv
234  ( char uplo, Int m,
235  T alpha, const T* A, Int lda, const T* x, Int incx,
236  T beta, T* y, Int incy );
237 
238  void Her
239  ( char uplo, Int m,
240  float alpha, const float* x, Int incx, float* A, Int lda );
241  void Her
242  ( char uplo, Int m,
243  double alpha, const double* x, Int incx, double* A, Int lda );
244  void Her
245  ( char uplo, Int m,
246  scomplex alpha, const scomplex* x, Int incx, scomplex* A, Int lda );
247  void Her
248  ( char uplo, Int m,
249  dcomplex alpha, const dcomplex* x, Int incx, dcomplex* A, Int lda );
250  template<typename T>
251  void Hemv( char uplo, Int m, T alpha, const T* x, Int incx, T* A, Int lda );
252 
253  void Her2
254  ( char uplo, Int m,
255  float alpha, const float* x, Int incx, const float* y, Int incy,
256  float* A, Int lda );
257  void Her2
258  ( char uplo, Int m,
259  double alpha, const double* x, Int incx, const double* y, Int incy,
260  double* A, Int lda );
261  void Her2
262  ( char uplo, Int m,
263  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
264  scomplex* A, Int lda );
265  void Her2
266  ( char uplo, Int m,
267  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
268  dcomplex* A, Int lda );
269  template<typename T>
270  void Her2
271  ( char uplo, Int m,
272  T alpha, const T* x, Int incx, const T* y, Int incy,
273  T* A, Int lda );
274 
275  void Symv
276  ( char uplo, Int m,
277  float alpha, const float* A, Int lda, const float* x, Int incx,
278  float beta, float* y, Int incy );
279  void Symv
280  ( char uplo, Int m,
281  double alpha, const double* A, Int lda, const double* x, Int incx,
282  double beta, double* y, Int incy );
283  void Symv
284  ( char uplo, Int m,
285  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
286  scomplex beta, scomplex* y, Int incy );
287  void Symv
288  ( char uplo, Int m,
289  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
290  dcomplex beta, dcomplex* y, Int incy );
291  template<typename T>
292  void Symv
293  ( char uplo, Int m,
294  T alpha, const T* A, Int lda, const T* x, Int incx,
295  T beta, T* y, Int incy );
296 
297  void Syr
298  ( char uplo, Int m,
299  float alpha, const float* x, Int incx, float* A, Int lda );
300  void Syr
301  ( char uplo, Int m,
302  double alpha, const double* x, Int incx, double* A, Int lda );
303  void Syr
304  ( char uplo, Int m,
305  scomplex alpha, const scomplex* x, Int incx, scomplex* A, Int lda );
306  void Syr
307  ( char uplo, Int m,
308  dcomplex alpha, const dcomplex* x, Int incx, dcomplex* A, Int lda );
309  template<typename T>
310  void Syr( char uplo, Int m, T alpha, const T* x, Int incx, T* A, Int lda );
311 
312  void Syr2
313  ( char uplo, Int m,
314  float alpha, const float* x, Int incx, const float* y, Int incy,
315  float* A, Int lda );
316  void Syr2
317  ( char uplo, Int m,
318  double alpha, const double* x, Int incx, const double* y, Int incy,
319  double* A, Int lda );
320  void Syr2
321  ( char uplo, Int m,
322  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
323  scomplex* A, Int lda );
324  void Syr2
325  ( char uplo, Int m,
326  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
327  dcomplex* A, Int lda );
328  template<typename T>
329  void Syr2
330  ( char uplo, Int m,
331  T alpha, const T* x, Int incx, const T* y, Int incy,
332  T* A, Int lda );
333 
334  void Trmv
335  ( char uplo, char trans, char diag, Int m,
336  const float* A, Int lda, float* x, Int incx );
337  void Trmv
338  ( char uplo, char trans, char diag, Int m,
339  const double* A, Int lda, double* x, Int incx );
340  void Trmv
341  ( char uplo, char trans, char diag, Int m,
342  const scomplex* A, Int lda, scomplex* x, Int incx );
343  void Trmv
344  ( char uplo, char trans, char diag, Int m,
345  const dcomplex* A, Int lda, dcomplex* x, Int incx );
346  template<typename T>
347  void Trmv
348  ( char uplo, char trans, char diag, Int m,
349  const T* A, Int lda, T* x, Int incx );
350 
351  void Trsv
352  ( char uplo, char trans, char diag, Int m,
353  const float* A, Int lda, float* x, Int incx );
354  void Trsv
355  ( char uplo, char trans, char diag, Int m,
356  const double* A, Int lda, double* x, Int incx );
357  void Trsv
358  ( char uplo, char trans, char diag, Int m,
359  const scomplex* A, Int lda, scomplex* x, Int incx );
360  void Trsv
361  ( char uplo, char trans, char diag, Int m,
362  const dcomplex* A, Int lda, dcomplex* x, Int incx );
363  template<typename T>
364  void Trsv
365  ( char uplo, char trans, char diag, Int m,
366  const T* A, Int lda, T* x, Int incx );
367 
368  // *********************************************************************
369  // Level 3 BLAS
370  // *********************************************************************
371  void Gemm
372  ( char transA, char transB, Int m, Int n, Int k,
373  float alpha, const float* A, Int lda, const float* B, Int ldb,
374  float beta, float* C, Int ldc );
375  void Gemm
376  ( char transA, char transB, Int m, Int n, Int k,
377  double alpha, const double* A, Int lda, const double* B, Int ldb,
378  double beta, double* C, Int ldc );
379  void Gemm
380  ( char transA, char transB, Int m, Int n, Int k,
381  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
382  scomplex beta, scomplex* C, Int ldc );
383  void Gemm
384  ( char transA, char transB, Int m, Int n, Int k,
385  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
386  dcomplex beta, dcomplex* C, Int ldc );
387  template<typename T>
388  void Gemm
389  ( char transA, char transB, Int m, Int n, Int k,
390  T alpha, const T* A, Int lda, const T* B, Int ldb,
391  T beta, T* C, Int ldc );
392 
393  void Hemm
394  ( char side, char uplo, Int m, Int n,
395  float alpha, const float* A, Int lda, const float* B, Int ldb,
396  float beta, float* C, Int ldc );
397  void Hemm
398  ( char side, char uplo, Int m, Int n,
399  double alpha, const double* A, Int lda, const double* B, Int ldb,
400  double beta, double* C, Int ldc );
401  void Hemm
402  ( char side, char uplo, Int m, Int n,
403  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
404  scomplex beta, scomplex* C, Int ldc );
405  void Hemm
406  ( char side, char uplo, Int m, Int n,
407  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
408  dcomplex beta, dcomplex* C, Int ldc );
409  template<typename T>
410  void Hemm
411  ( char side, char uplo, Int m, Int n,
412  T alpha, const T* A, Int lda, const T* B, Int ldb,
413  T beta, T* C, Int ldc );
414 
415  void Her2k
416  ( char uplo, char trans, Int n, Int k,
417  float alpha, const float* A, Int lda, const float* B, Int ldb,
418  float beta, float* C, Int ldc );
419  void Her2k
420  ( char uplo, char trans, Int n, Int k,
421  double alpha, const double* A, Int lda, const double* B, Int ldb,
422  double beta, double* C, Int ldc );
423  void Her2k
424  ( char uplo, char trans, Int n, Int k,
425  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
426  scomplex beta, scomplex* C, Int ldc );
427  void Her2k
428  ( char uplo, char trans, Int n, Int k,
429  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
430  dcomplex beta, dcomplex* C, Int ldc );
431  template<typename T>
432  void Her2k
433  ( char uplo, char trans, Int n, Int k,
434  T alpha, const T* A, Int lda, const T* B, Int ldb,
435  T beta, T* C, Int ldc );
436 
437  void Herk
438  ( char uplo, char trans, Int n, Int k,
439  float alpha, const float* A, Int lda, float beta, float* C, Int ldc );
440  void Herk
441  ( char uplo, char trans, Int n, Int k,
442  double alpha, const double* A, Int lda, double beta, double* C, Int ldc );
443  void Herk
444  ( char uplo, char trans, Int n, Int k,
445  scomplex alpha, const scomplex* A, Int lda,
446  scomplex beta, scomplex* C, Int ldc );
447  void Herk
448  ( char uplo, char trans, Int n, Int k,
449  dcomplex alpha, const dcomplex* A, Int lda,
450  dcomplex beta, dcomplex* C, Int ldc );
451  template<typename T>
452  void Herk
453  ( char uplo, char trans, Int n, Int k,
454  T alpha, const T* A, Int lda,
455  T beta, T* C, Int ldc );
456 
457  void Symm
458  ( char side, char uplo, Int m, Int n,
459  float alpha, const float* A, Int lda, const float* B, Int ldb,
460  float beta, float* C, Int ldc );
461  void Symm
462  ( char side, char uplo, Int m, Int n,
463  double alpha, const double* A, Int lda, const double* B, Int ldb,
464  double beta, double* C, Int ldc );
465  void Symm
466  ( char side, char uplo, Int m, Int n,
467  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
468  scomplex beta, scomplex* C, Int ldc );
469  void Symm
470  ( char side, char uplo, Int m, Int n,
471  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
472  dcomplex beta, dcomplex* C, Int ldc );
473  template<typename T>
474  void Symm
475  ( char side, char uplo, Int m, Int n,
476  T alpha, const T* A, Int lda, const T* B, Int ldb,
477  T beta, T* C, Int ldc );
478 
479  void Syr2k
480  ( char uplo, char trans, Int n, Int k,
481  float alpha, const float* A, Int lda, const float* B, Int ldb,
482  float beta, float* C, Int ldc );
483  void Syr2k
484  ( char uplo, char trans, Int n, Int k,
485  double alpha, const double* A, Int lda, const double* B, Int ldb,
486  double beta, double* C, Int ldc );
487  void Syr2k
488  ( char uplo, char trans, Int n, Int k,
489  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
490  scomplex beta, scomplex* C, Int ldc );
491  void Syr2k
492  ( char uplo, char trans, Int n, Int k,
493  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
494  dcomplex beta, dcomplex* C, Int ldc );
495  template<typename T>
496  void Syr2k
497  ( char uplo, char trans, Int n, Int k,
498  T alpha, const T* A, Int lda, const T* B, Int ldb,
499  T beta, T* C, Int ldc );
500 
501  void Syrk
502  ( char uplo, char trans, Int n, Int k,
503  float alpha, const float* A, Int lda,
504  float beta, float* C, Int ldc );
505  void Syrk
506  ( char uplo, char trans, Int n, Int k,
507  double alpha, const double* A, Int lda,
508  double beta, double* C, Int ldc );
509  void Syrk
510  ( char uplo, char trans, Int n, Int k,
511  scomplex alpha, const scomplex* A, Int lda,
512  scomplex beta, scomplex* C, Int ldc );
513  void Syrk
514  ( char uplo, char trans, Int n, Int k,
515  dcomplex alpha, const dcomplex* A, Int lda,
516  dcomplex beta, dcomplex* C, Int ldc );
517  template<typename T>
518  void Syrk
519  ( char uplo, char trans, Int n, Int k,
520  T alpha, const T* A, Int lda,
521  T beta, T* C, Int ldc );
522 
523  void Trmm
524  ( char side, char uplo, char trans, char unit, Int m, Int n,
525  float alpha, const float* A, Int lda, float* B, Int ldb );
526  void Trmm
527  ( char side, char uplo, char trans, char unit, Int m, Int n,
528  double alpha, const double* A, Int lda, double* B, Int ldb );
529  void Trmm
530  ( char side, char uplo, char trans, char unit, Int m, Int n,
531  scomplex alpha, const scomplex* A, Int lda, scomplex* B, Int ldb );
532  void Trmm
533  ( char side, char uplo, char trans, char unit, Int m, Int n,
534  dcomplex alpha, const dcomplex* A, Int lda, dcomplex* B, Int ldb );
535  template<typename T>
536  void Trmm
537  ( char side, char uplo, char trans, char unit, Int m, Int n,
538  T alpha, const T* A, Int lda, T* B, Int ldb );
539 
540  void Trsm
541  ( char side, char uplo, char trans, char unit, Int m, Int n,
542  float alpha, const float* A, Int lda, float* B, Int ldb );
543  void Trsm
544  ( char side, char uplo, char trans, char unit, Int m, Int n,
545  double alpha, const double* A, Int lda, double* B, Int ldb );
546  void Trsm
547  ( char side, char uplo, char trans, char unit, Int m, Int n,
548  scomplex alpha, const scomplex* A, Int lda, scomplex* B, Int ldb );
549  void Trsm
550  ( char side, char uplo, char trans, char unit, Int m, Int n,
551  dcomplex alpha, const dcomplex* A, Int lda, dcomplex* B, Int ldb );
552  template<typename T>
553  void Trsm
554  ( char side, char uplo, char trans, char unit, Int m, Int n,
555  T alpha, const T* A, Int lda, T* B, Int ldb );
556 
557 } // namespace blas
558 } // namespace PEXSI
559 
560 #endif //_PEXSI_BLAS_HPP_
Environmental variables.