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.