PEXSI
 All Classes Namespaces Files Functions Variables Friends 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 #include "environment.hpp"
47 
48 namespace PEXSI {
49 
53 namespace blas {
54 
55  typedef int Int;
56  typedef std::complex<float> scomplex;
57  typedef std::complex<double> dcomplex;
58 
59 
60  // *********************************************************************
61  // Level 1 BLAS //
62  // *********************************************************************
63  void Axpy
64  ( Int n, float alpha, const float* x, Int incx, float* y, Int incy );
65  void Axpy
66  ( Int n, double alpha, const double* x, Int incx, double* y, Int incy );
67  void Axpy
68  ( Int n, scomplex alpha, const scomplex* x, Int incx, scomplex* y, Int incy );
69  void Axpy
70  ( Int n, dcomplex alpha, const dcomplex* x, Int incx, dcomplex* y, Int incy );
71  template<typename T>
72  void Axpy( Int n, T alpha, const T* x, Int incx, T* y, Int incy );
73 
74  void Copy( Int n, const int* x, Int incx, int* y, Int incy );
75  void Copy( Int n, const float* x, Int incx, float* y, Int incy );
76  void Copy( Int n, const double* x, Int incx, double* y, Int incy );
77  void Copy( Int n, const scomplex* x, Int incx, scomplex* y, Int incy );
78  void Copy( Int n, const dcomplex* x, Int incx, dcomplex* y, Int incy );
79  template<typename T>
80  void Copy( Int n, const T* x, Int incx, T* y, Int incy );
81 
82  float Dot( Int n, const float* x, Int incx, const float* y, Int incy );
83  double Dot( Int n, const double* x, Int incx, const double* y, Int incy );
84  scomplex Dot( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
85  dcomplex Dot( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
86  template<typename T>
87  T Dot( Int n, const T* x, Int incx, const T* y, Int incy );
88 
89  float Dotc
90  ( Int n, const float* x, Int incx, const float* y, Int incy );
91  double Dotc
92  ( Int n, const double* x, Int incx, const double* y, Int incy );
93  scomplex Dotc
94  ( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
95  dcomplex Dotc
96  ( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
97  template<typename T>
98  T Dotc( Int n, const T* x, Int incx, const T* y, Int incy );
99 
100  float Dotu
101  ( Int n, const float* x, Int incx, const float* y, Int incy );
102  double Dotu
103  ( Int n, const double* x, Int incx, const double* y, Int incy );
104  scomplex Dotu
105  ( Int n, const scomplex* x, Int incx, const scomplex* y, Int incy );
106  dcomplex Dotu
107  ( Int n, const dcomplex* x, Int incx, const dcomplex* y, Int incy );
108  template<typename T>
109  T Dotu( Int n, const T* x, Int incx, const T* y, Int incy );
110 
111  float Nrm2( Int n, const float* x, Int incx );
112  double Nrm2( Int n, const double* x, Int incx );
113  float Nrm2( Int n, const scomplex* x, Int incx );
114  double Nrm2( Int n, const dcomplex* x, Int incx );
115  template<typename F> F Nrm2( Int n, const F* x, Int incx );
116 
117  void Scal( Int n, float alpha, float* x, Int incx );
118  void Scal( Int n, double alpha, double* x, Int incx );
119  void Scal( Int n, scomplex alpha, scomplex* x, Int incx );
120  void Scal( Int n, dcomplex alpha, dcomplex* x, Int incx );
121  template<typename F> void Scal( Int n, F alpha, F* x, Int incx );
122 
123  // *********************************************************************
124  // Level 2 BLAS
125  // *********************************************************************
126  void Gemv
127  ( char trans, Int m, Int n,
128  float alpha, const float* A, Int lda, const float* x, Int incx,
129  float beta, float* y, Int incy );
130  void Gemv
131  ( char trans, Int m, Int n,
132  double alpha, const double* A, Int lda, const double* x, Int incx,
133  double beta, double* y, Int incy );
134  void Gemv
135  ( char trans, Int m, Int n,
136  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
137  scomplex beta, scomplex* y, Int incy );
138  void Gemv
139  ( char trans, Int m, Int n,
140  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
141  dcomplex beta, dcomplex* y, Int incy );
142  template<typename T>
143  void Gemv
144  ( char trans, Int m, Int n,
145  T alpha, const T* A, Int lda, const T* x, Int incx,
146  T beta, T* y, Int incy );
147 
148  void Ger
149  ( Int m, Int n,
150  float alpha, const float* x, Int incx, const float* y, Int incy,
151  float* A, Int lda );
152  void Ger
153  ( Int m, Int n,
154  double alpha, const double* x, Int incx, const double* y, Int incy,
155  double* A, Int lda );
156  void Ger
157  ( Int m, Int n,
158  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
159  scomplex* A, Int lda );
160  void Ger
161  ( Int m, Int n,
162  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
163  dcomplex* A, Int lda );
164  template<typename T>
165  void Ger
166  ( char trans, Int m, Int n,
167  T alpha, const T* x, Int incx, const T* y, Int incy,
168  T beta, T* A, Int lda );
169 
170  void Gerc
171  ( Int m, Int n,
172  float alpha, const float* x, Int incx, const float* y, Int incy,
173  float* A, Int lda );
174  void Gerc
175  ( Int m, Int n,
176  double alpha, const double* x, Int incx, const double* y, Int incy,
177  double* A, Int lda );
178  void Gerc
179  ( Int m, Int n,
180  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
181  scomplex* A, Int lda );
182  void Gerc
183  ( Int m, Int n,
184  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
185  dcomplex* A, Int lda );
186  template<typename T>
187  void Gerc
188  ( char trans, Int m, Int n,
189  T alpha, const T* x, Int incx, const T* y, Int incy,
190  T beta, T* A, Int lda );
191 
192  void Geru
193  ( Int m, Int n,
194  float alpha, const float* x, Int incx, const float* y, Int incy,
195  float* A, Int lda );
196  void Geru
197  ( Int m, Int n,
198  double alpha, const double* x, Int incx, const double* y, Int incy,
199  double* A, Int lda );
200  void Geru
201  ( Int m, Int n,
202  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
203  scomplex* A, Int lda );
204  void Geru
205  ( Int m, Int n,
206  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
207  dcomplex* A, Int lda );
208  template<typename T>
209  void Geru
210  ( char trans, Int m, Int n,
211  T alpha, const T* x, Int incx, const T* y, Int incy,
212  T beta, T* A, Int lda );
213 
214  void Hemv
215  ( char uplo, Int m,
216  float alpha, const float* A, Int lda, const float* x, Int incx,
217  float beta, float* y, Int incy );
218  void Hemv
219  ( char uplo, Int m,
220  double alpha, const double* A, Int lda, const double* x, Int incx,
221  double beta, double* y, Int incy );
222  void Hemv
223  ( char uplo, Int m,
224  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
225  scomplex beta, scomplex* y, Int incy );
226  void Hemv
227  ( char uplo, Int m,
228  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
229  dcomplex beta, dcomplex* y, Int incy );
230  template<typename T>
231  void Hemv
232  ( char uplo, Int m,
233  T alpha, const T* A, Int lda, const T* x, Int incx,
234  T beta, T* y, Int incy );
235 
236  void Her
237  ( char uplo, Int m,
238  float alpha, const float* x, Int incx, float* A, Int lda );
239  void Her
240  ( char uplo, Int m,
241  double alpha, const double* x, Int incx, double* A, Int lda );
242  void Her
243  ( char uplo, Int m,
244  scomplex alpha, const scomplex* x, Int incx, scomplex* A, Int lda );
245  void Her
246  ( char uplo, Int m,
247  dcomplex alpha, const dcomplex* x, Int incx, dcomplex* A, Int lda );
248  template<typename T>
249  void Hemv( char uplo, Int m, T alpha, const T* x, Int incx, T* A, Int lda );
250 
251  void Her2
252  ( char uplo, Int m,
253  float alpha, const float* x, Int incx, const float* y, Int incy,
254  float* A, Int lda );
255  void Her2
256  ( char uplo, Int m,
257  double alpha, const double* x, Int incx, const double* y, Int incy,
258  double* A, Int lda );
259  void Her2
260  ( char uplo, Int m,
261  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
262  scomplex* A, Int lda );
263  void Her2
264  ( char uplo, Int m,
265  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
266  dcomplex* A, Int lda );
267  template<typename T>
268  void Her2
269  ( char uplo, Int m,
270  T alpha, const T* x, Int incx, const T* y, Int incy,
271  T* A, Int lda );
272 
273  void Symv
274  ( char uplo, Int m,
275  float alpha, const float* A, Int lda, const float* x, Int incx,
276  float beta, float* y, Int incy );
277  void Symv
278  ( char uplo, Int m,
279  double alpha, const double* A, Int lda, const double* x, Int incx,
280  double beta, double* y, Int incy );
281  void Symv
282  ( char uplo, Int m,
283  scomplex alpha, const scomplex* A, Int lda, const scomplex* x, Int incx,
284  scomplex beta, scomplex* y, Int incy );
285  void Symv
286  ( char uplo, Int m,
287  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* x, Int incx,
288  dcomplex beta, dcomplex* y, Int incy );
289  template<typename T>
290  void Symv
291  ( char uplo, Int m,
292  T alpha, const T* A, Int lda, const T* x, Int incx,
293  T beta, T* y, Int incy );
294 
295  void Syr
296  ( char uplo, Int m,
297  float alpha, const float* x, Int incx, float* A, Int lda );
298  void Syr
299  ( char uplo, Int m,
300  double alpha, const double* x, Int incx, double* A, Int lda );
301  void Syr
302  ( char uplo, Int m,
303  scomplex alpha, const scomplex* x, Int incx, scomplex* A, Int lda );
304  void Syr
305  ( char uplo, Int m,
306  dcomplex alpha, const dcomplex* x, Int incx, dcomplex* A, Int lda );
307  template<typename T>
308  void Syr( char uplo, Int m, T alpha, const T* x, Int incx, T* A, Int lda );
309 
310  void Syr2
311  ( char uplo, Int m,
312  float alpha, const float* x, Int incx, const float* y, Int incy,
313  float* A, Int lda );
314  void Syr2
315  ( char uplo, Int m,
316  double alpha, const double* x, Int incx, const double* y, Int incy,
317  double* A, Int lda );
318  void Syr2
319  ( char uplo, Int m,
320  scomplex alpha, const scomplex* x, Int incx, const scomplex* y, Int incy,
321  scomplex* A, Int lda );
322  void Syr2
323  ( char uplo, Int m,
324  dcomplex alpha, const dcomplex* x, Int incx, const dcomplex* y, Int incy,
325  dcomplex* A, Int lda );
326  template<typename T>
327  void Syr2
328  ( char uplo, Int m,
329  T alpha, const T* x, Int incx, const T* y, Int incy,
330  T* A, Int lda );
331 
332  void Trmv
333  ( char uplo, char trans, char diag, Int m,
334  const float* A, Int lda, float* x, Int incx );
335  void Trmv
336  ( char uplo, char trans, char diag, Int m,
337  const double* A, Int lda, double* x, Int incx );
338  void Trmv
339  ( char uplo, char trans, char diag, Int m,
340  const scomplex* A, Int lda, scomplex* x, Int incx );
341  void Trmv
342  ( char uplo, char trans, char diag, Int m,
343  const dcomplex* A, Int lda, dcomplex* x, Int incx );
344  template<typename T>
345  void Trmv
346  ( char uplo, char trans, char diag, Int m,
347  const T* A, Int lda, T* x, Int incx );
348 
349  void Trsv
350  ( char uplo, char trans, char diag, Int m,
351  const float* A, Int lda, float* x, Int incx );
352  void Trsv
353  ( char uplo, char trans, char diag, Int m,
354  const double* A, Int lda, double* x, Int incx );
355  void Trsv
356  ( char uplo, char trans, char diag, Int m,
357  const scomplex* A, Int lda, scomplex* x, Int incx );
358  void Trsv
359  ( char uplo, char trans, char diag, Int m,
360  const dcomplex* A, Int lda, dcomplex* x, Int incx );
361  template<typename T>
362  void Trsv
363  ( char uplo, char trans, char diag, Int m,
364  const T* A, Int lda, T* x, Int incx );
365 
366  // *********************************************************************
367  // Level 3 BLAS
368  // *********************************************************************
369  void Gemm
370  ( char transA, char transB, Int m, Int n, Int k,
371  float alpha, const float* A, Int lda, const float* B, Int ldb,
372  float beta, float* C, Int ldc );
373  void Gemm
374  ( char transA, char transB, Int m, Int n, Int k,
375  double alpha, const double* A, Int lda, const double* B, Int ldb,
376  double beta, double* C, Int ldc );
377  void Gemm
378  ( char transA, char transB, Int m, Int n, Int k,
379  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
380  scomplex beta, scomplex* C, Int ldc );
381  void Gemm
382  ( char transA, char transB, Int m, Int n, Int k,
383  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
384  dcomplex beta, dcomplex* C, Int ldc );
385  template<typename T>
386  void Gemm
387  ( char transA, char transB, Int m, Int n, Int k,
388  T alpha, const T* A, Int lda, const T* B, Int ldb,
389  T beta, T* C, Int ldc );
390 
391  void Hemm
392  ( char side, char uplo, Int m, Int n,
393  float alpha, const float* A, Int lda, const float* B, Int ldb,
394  float beta, float* C, Int ldc );
395  void Hemm
396  ( char side, char uplo, Int m, Int n,
397  double alpha, const double* A, Int lda, const double* B, Int ldb,
398  double beta, double* C, Int ldc );
399  void Hemm
400  ( char side, char uplo, Int m, Int n,
401  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
402  scomplex beta, scomplex* C, Int ldc );
403  void Hemm
404  ( char side, char uplo, Int m, Int n,
405  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
406  dcomplex beta, dcomplex* C, Int ldc );
407  template<typename T>
408  void Hemm
409  ( char side, char uplo, Int m, Int n,
410  T alpha, const T* A, Int lda, const T* B, Int ldb,
411  T beta, T* C, Int ldc );
412 
413  void Her2k
414  ( char uplo, char trans, Int n, Int k,
415  float alpha, const float* A, Int lda, const float* B, Int ldb,
416  float beta, float* C, Int ldc );
417  void Her2k
418  ( char uplo, char trans, Int n, Int k,
419  double alpha, const double* A, Int lda, const double* B, Int ldb,
420  double beta, double* C, Int ldc );
421  void Her2k
422  ( char uplo, char trans, Int n, Int k,
423  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
424  scomplex beta, scomplex* C, Int ldc );
425  void Her2k
426  ( char uplo, char trans, Int n, Int k,
427  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
428  dcomplex beta, dcomplex* C, Int ldc );
429  template<typename T>
430  void Her2k
431  ( char uplo, char trans, Int n, Int k,
432  T alpha, const T* A, Int lda, const T* B, Int ldb,
433  T beta, T* C, Int ldc );
434 
435  void Herk
436  ( char uplo, char trans, Int n, Int k,
437  float alpha, const float* A, Int lda, float beta, float* C, Int ldc );
438  void Herk
439  ( char uplo, char trans, Int n, Int k,
440  double alpha, const double* A, Int lda, double beta, double* C, Int ldc );
441  void Herk
442  ( char uplo, char trans, Int n, Int k,
443  scomplex alpha, const scomplex* A, Int lda,
444  scomplex beta, scomplex* C, Int ldc );
445  void Herk
446  ( char uplo, char trans, Int n, Int k,
447  dcomplex alpha, const dcomplex* A, Int lda,
448  dcomplex beta, dcomplex* C, Int ldc );
449  template<typename T>
450  void Herk
451  ( char uplo, char trans, Int n, Int k,
452  T alpha, const T* A, Int lda,
453  T beta, T* C, Int ldc );
454 
455  void Symm
456  ( char side, char uplo, Int m, Int n,
457  float alpha, const float* A, Int lda, const float* B, Int ldb,
458  float beta, float* C, Int ldc );
459  void Symm
460  ( char side, char uplo, Int m, Int n,
461  double alpha, const double* A, Int lda, const double* B, Int ldb,
462  double beta, double* C, Int ldc );
463  void Symm
464  ( char side, char uplo, Int m, Int n,
465  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
466  scomplex beta, scomplex* C, Int ldc );
467  void Symm
468  ( char side, char uplo, Int m, Int n,
469  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
470  dcomplex beta, dcomplex* C, Int ldc );
471  template<typename T>
472  void Symm
473  ( char side, char uplo, Int m, Int n,
474  T alpha, const T* A, Int lda, const T* B, Int ldb,
475  T beta, T* C, Int ldc );
476 
477  void Syr2k
478  ( char uplo, char trans, Int n, Int k,
479  float alpha, const float* A, Int lda, const float* B, Int ldb,
480  float beta, float* C, Int ldc );
481  void Syr2k
482  ( char uplo, char trans, Int n, Int k,
483  double alpha, const double* A, Int lda, const double* B, Int ldb,
484  double beta, double* C, Int ldc );
485  void Syr2k
486  ( char uplo, char trans, Int n, Int k,
487  scomplex alpha, const scomplex* A, Int lda, const scomplex* B, Int ldb,
488  scomplex beta, scomplex* C, Int ldc );
489  void Syr2k
490  ( char uplo, char trans, Int n, Int k,
491  dcomplex alpha, const dcomplex* A, Int lda, const dcomplex* B, Int ldb,
492  dcomplex beta, dcomplex* C, Int ldc );
493  template<typename T>
494  void Syr2k
495  ( char uplo, char trans, Int n, Int k,
496  T alpha, const T* A, Int lda, const T* B, Int ldb,
497  T beta, T* C, Int ldc );
498 
499  void Syrk
500  ( char uplo, char trans, Int n, Int k,
501  float alpha, const float* A, Int lda,
502  float beta, float* C, Int ldc );
503  void Syrk
504  ( char uplo, char trans, Int n, Int k,
505  double alpha, const double* A, Int lda,
506  double beta, double* C, Int ldc );
507  void Syrk
508  ( char uplo, char trans, Int n, Int k,
509  scomplex alpha, const scomplex* A, Int lda,
510  scomplex beta, scomplex* C, Int ldc );
511  void Syrk
512  ( char uplo, char trans, Int n, Int k,
513  dcomplex alpha, const dcomplex* A, Int lda,
514  dcomplex beta, dcomplex* C, Int ldc );
515  template<typename T>
516  void Syrk
517  ( char uplo, char trans, Int n, Int k,
518  T alpha, const T* A, Int lda,
519  T beta, T* C, Int ldc );
520 
521  void Trmm
522  ( char side, char uplo, char trans, char unit, Int m, Int n,
523  float alpha, const float* A, Int lda, float* B, Int ldb );
524  void Trmm
525  ( char side, char uplo, char trans, char unit, Int m, Int n,
526  double alpha, const double* A, Int lda, double* B, Int ldb );
527  void Trmm
528  ( char side, char uplo, char trans, char unit, Int m, Int n,
529  scomplex alpha, const scomplex* A, Int lda, scomplex* B, Int ldb );
530  void Trmm
531  ( char side, char uplo, char trans, char unit, Int m, Int n,
532  dcomplex alpha, const dcomplex* A, Int lda, dcomplex* B, Int ldb );
533  template<typename T>
534  void Trmm
535  ( char side, char uplo, char trans, char unit, Int m, Int n,
536  T alpha, const T* A, Int lda, T* B, Int ldb );
537 
538  void Trsm
539  ( char side, char uplo, char trans, char unit, Int m, Int n,
540  float alpha, const float* A, Int lda, float* B, Int ldb );
541  void Trsm
542  ( char side, char uplo, char trans, char unit, Int m, Int n,
543  double alpha, const double* A, Int lda, double* B, Int ldb );
544  void Trsm
545  ( char side, char uplo, char trans, char unit, Int m, Int n,
546  scomplex alpha, const scomplex* A, Int lda, scomplex* B, Int ldb );
547  void Trsm
548  ( char side, char uplo, char trans, char unit, Int m, Int n,
549  dcomplex alpha, const dcomplex* A, Int lda, dcomplex* B, Int ldb );
550  template<typename T>
551  void Trsm
552  ( char side, char uplo, char trans, char unit, Int m, Int n,
553  T alpha, const T* A, Int lda, T* B, Int ldb );
554 
555 } // namespace blas
556 } // namespace PEXSI
Environmental variables.