SCALAPACK 2.2.2
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches
pblas.h
Go to the documentation of this file.
1/* ---------------------------------------------------------------------
2*
3* -- ScaLAPACK routine (version 1.0) --
4* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5* and University of California, Berkeley.
6* November 17, 1996
7*
8* ---------------------------------------------------------------------
9*/
10
11/*
12* This file includes the standard C libraries, as well as system
13* dependent include files. All PBLAS routines include this file.
14*/
15
16/*
17* ========================================================================
18* Machine Specific PBLAS macros
19* ========================================================================
20*/
21
22#define _HAL_ 0
23#define _T3D_ 1
24
25#ifdef T3D
26#define _MACH_ _T3D_
27#endif
28
29#ifndef _MACH_
30#define _MACH_ _HAL_
31#endif
32
33/*
34* ========================================================================
35* Include files
36* ========================================================================
37*/
38#include <stdio.h>
39#include <stdlib.h>
40
41#if( _MACH_ == _T3D_ )
42#include <fortran.h>
43#endif
44
45/*
46* ========================================================================
47* FORTRAN <-> C interface
48* ========================================================================
49*
50* These macros define how the PBLAS will be called. _F2C_ADD_ assumes
51* that they will be called by FORTRAN, which expects C routines to have
52* an underscore postfixed to the name (Suns, and Intel machines expect
53* this). _F2C_NOCHANGE indicates that FORTRAN will be calling, and that
54* it expects the name called by FORTRAN to be identical to that compiled
55* by the C (RS6K's do this). _F2C_UPCASE says it expects C routines
56* called by FORTRAN to be in all upcase (CRAY wants this).
57* _F2C_F77ISF2C indicates that the fortran "compiler" in use is
58* actually f2c, a FORTRAN to C converter.
59*/
60
61#define _F2C_ADD_ 0
62#define _F2C_NOCHANGE 1
63#define _F2C_UPCASE 2
64#define _F2C_F77ISF2C 3
65
66#ifdef UpCase
67#define _F2C_CALL_ _F2C_UPCASE
68#endif
69
70#ifdef NoChange
71#define _F2C_CALL_ _F2C_NOCHANGE
72#endif
73
74#ifdef Add_
75#define _F2C_CALL_ _F2C_ADD_
76#endif
77
78#ifdef f77IsF2C
79#define _F2C_CALL_ _F2C_F77ISF2C
80#endif
81
82#ifndef _F2C_CALL_
83#define _F2C_CALL_ _F2C_ADD_
84#endif
85
86/*
87* ========================================================================
88* TYPE DEFINITIONS AND CONVERSION UTILITIES
89* ========================================================================
90*/
91
92#ifndef Int
93#define Int int
94#endif
95
96typedef struct { float re, im; } complex;
97typedef struct { double re, im; } complex16;
98
99#if( _MACH_ == _T3D_ )
100#define float double
101 /* Type of character argument in a FORTRAN call */
102#define F_CHAR _fcd
103 /* Character conversion utilities */
104#define F2C_CHAR(a) ( _fcdtocp( (a) ) )
105#define C2F_CHAR(a) ( _cptofcd( (a), 1 ) )
106 /* Type of FORTRAN functions */
107#define F_VOID_FCT void fortran /* Subroutine */
108#define F_INTG_FCT Int fortran /* INTEGER function */
109#define F_DBLE_FCT double fortran /* DOUBLE PRECISION function */
110
111#else
112 /* Type of character argument in a FORTRAN call */
113typedef char * F_CHAR;
114 /* Character conversion utilities */
115#define F2C_CHAR(a) (a)
116#define C2F_CHAR(a) (a)
117 /* Type of FORTRAN functions */
118#define F_VOID_FCT void /* Subroutine */
119#define F_INTG_FCT Int /* INTEGER function */
120#define F_DBLE_FCT double /* DOUBLE PRECISION function */
121
122#endif
123
124/*
125* ========================================================================
126* #DEFINE MACRO CONSTANTS
127* ========================================================================
128*/
129#define DLEN_ 9 /* Length of a descriptor */
130#define DT_ 0 /* Descriptor Type */
131#define CTXT_ 1 /* BLACS context */
132#define M_ 2 /* Global Number of Rows */
133#define N_ 3 /* Global Number of Columns */
134#define MB_ 4 /* Row Blocking Size */
135#define NB_ 5 /* Column Blocking Size */
136#define RSRC_ 6 /* Starting Processor Row */
137#define CSRC_ 7 /* Starting Processor Column */
138#define LLD_ 8 /* Local Leading Dimension */
139
140/*
141 * Descriptor types
142 */
143#define BLOCK_CYCLIC_2D 1
144#define BLOCK_CYCLIC_INB_2D 2
145
146#define BROADCAST "B" /* Blacs operation definitions */
147#define COMBINE "C"
148
149#define ALL "A" /* Scope definitions */
150#define COLUMN "C"
151#define ROW "R"
152
153#define TOPDEF " " /* Default BLACS topology, PB-BLAS routines */
154#define CTOPDEF ' '
155#define TOPGET "!"
156
157#define YES "Y"
158#define NO "N"
159
160#define MULLENFAC 2
161
162#define ONE 1.0
163#define ZERO 0.0
164
165/*
166* ========================================================================
167* PREPROCESSOR MACRO FUNCTIONS USED FOR OPTIMIZATION & CONVENIENCE
168* ========================================================================
169*/
170
171#define ABS(a) (((a) < 0) ? -(a) : (a))
172
173#define MIN(a,b) (((a) < (b)) ? (a) : (b))
174
175#define MAX(a,b) (((a) > (b)) ? (a) : (b))
176
177#define CEIL(a,b) ( ((a)+(b)-1) / (b) )
178
179#define Mlowcase(C) ( ((C) > 64 && (C) < 91) ? (C) | 32 : (C) )
180
181#define Mupcase(C) ( ((C) > 96 && (C) < 123) ? (C) & 0xDF : (C) )
182
183#define INDXG2L( iglob, nb, iproc, isrcproc, nprocs )\
184 ( (nb) * ( ( (iglob)-1) / ( (nb) * (nprocs) ) ) +\
185 ( ( (iglob) - 1 ) % (nb) ) + 1 )
186
187#define INDXL2G( iloc, nb, iproc, isrcproc, nprocs )\
188 ( (nprocs) * (nb) * ( ( (iloc) - 1 ) / (nb) ) +\
189 ( ( (iloc) - 1 ) % (nb) ) +\
190 ( ( (nprocs) + (iproc) - (isrcproc) ) % (nprocs) ) * (nb) + 1 )
191
192#define INDXG2P( iglob, nb, iproc, isrcproc, nprocs ) \
193 ( ( (isrcproc) + ( (iglob) - 1 ) / (nb) ) % (nprocs) )
194
195#define MYROC0( nblocks, n, nb, nprocs )\
196 ( ( (nblocks) % (nprocs) ) ? ( ( (nblocks) / (nprocs) ) * (nb) + (nb) )\
197 : ( ( (nblocks) / (nprocs) )* (nb) + ( (n) % (nb) ) ) )
198
199#if( _F2C_CALL_ == _F2C_ADD_ )
200/*
201* These defines set up the naming scheme required to have a FORTRAN
202* routine call a C routine (which is what the PBLAS are written in).
203* No redefinition necessary to have following FORTRAN to C interface:
204* FORTRAN CALL C DECLARATION
205* call pdgemm(...) void pdgemm_(...)
206*
207* This is the default.
208*/
209
210#endif
211
212#if( _F2C_CALL_ == _F2C_UPCASE )
213/*
214* These defines set up the naming scheme required to have a FORTRAN
215* routine call a C routine (which is what the PBLAS are written in)
216* following FORTRAN to C interface:
217* FORTRAN CALL C DECLARATION
218* call pdgemm(...) void PDGEMM(...)
219*/
220 /* TOOLS */
221#define ilcm_ ILCM
222#define infog2l_ INFOG2L
223#define numroc_ NUMROC
224#define pstreecomb_ PSTREECOMB
225#define pdtreecomb_ PDTREECOMB
226#define pctreecomb_ PCTREECOMB
227#define pztreecomb_ PZTREECOMB
228#define scombamax_ SCOMBAMAX
229#define dcombamax_ DCOMBAMAX
230#define ccombamax_ CCOMBAMAX
231#define zcombamax_ ZCOMBAMAX
232#define scombnrm2_ SCOMBNRM2
233#define dcombnrm2_ DCOMBNRM2
234
235#define dlamov_ DLAMOV
236#define slamov_ SLAMOV
237#define clamov_ CLAMOV
238#define zlamov_ ZLAMOV
239#define dlacpy_ DLACPY
240#define slacpy_ SLACPY
241#define clacpy_ CLACPY
242#define zlacpy_ ZLACPY
243#define xerbla_ XERBLA
244 /* BLACS */
245#define blacs_abort_ BLACS_ABORT
246#define blacs_gridinfo_ BLACS_GRIDINFO
247
248#define igesd2d_ IGESD2D
249#define igebs2d_ IGEBS2D
250#define itrsd2d_ ITRSD2D
251#define itrbs2d_ ITRBS2D
252#define igerv2d_ IGERV2D
253#define igebr2d_ IGEBR2D
254#define itrrv2d_ ITRRV2D
255#define itrbr2d_ ITRBR2D
256#define igamx2d_ IGAMX2D
257#define igamn2d_ IGAMN2D
258#define igsum2d_ IGSUM2D
259
260#define sgesd2d_ SGESD2D
261#define sgebs2d_ SGEBS2D
262#define strsd2d_ STRSD2D
263#define strbs2d_ STRBS2D
264#define sgerv2d_ SGERV2D
265#define sgebr2d_ SGEBR2D
266#define strrv2d_ STRRV2D
267#define strbr2d_ STRBR2D
268#define sgamx2d_ SGAMX2D
269#define sgamn2d_ SGAMN2D
270#define sgsum2d_ SGSUM2D
271
272#define dgesd2d_ DGESD2D
273#define dgebs2d_ DGEBS2D
274#define dtrsd2d_ DTRSD2D
275#define dtrbs2d_ DTRBS2D
276#define dgerv2d_ DGERV2D
277#define dgebr2d_ DGEBR2D
278#define dtrrv2d_ DTRRV2D
279#define dtrbr2d_ DTRBR2D
280#define dgamx2d_ DGAMX2D
281#define dgamn2d_ DGAMN2D
282#define dgsum2d_ DGSUM2D
283
284#define cgesd2d_ CGESD2D
285#define cgebs2d_ CGEBS2D
286#define ctrsd2d_ CTRSD2D
287#define ctrbs2d_ CTRBS2D
288#define cgerv2d_ CGERV2D
289#define cgebr2d_ CGEBR2D
290#define ctrrv2d_ CTRRV2D
291#define ctrbr2d_ CTRBR2D
292#define cgamx2d_ CGAMX2D
293#define cgamn2d_ CGAMN2D
294#define cgsum2d_ CGSUM2D
295
296#define zgesd2d_ ZGESD2D
297#define zgebs2d_ ZGEBS2D
298#define ztrsd2d_ ZTRSD2D
299#define ztrbs2d_ ZTRBS2D
300#define zgerv2d_ ZGERV2D
301#define zgebr2d_ ZGEBR2D
302#define ztrrv2d_ ZTRRV2D
303#define ztrbr2d_ ZTRBR2D
304#define zgamx2d_ ZGAMX2D
305#define zgamn2d_ ZGAMN2D
306#define zgsum2d_ ZGSUM2D
307 /* Level-1 BLAS */
308#define srotg_ SROTG
309#define srotmg_ SROTMG
310#define srot_ SROT
311#define srotm_ SROTM
312#define sswap_ SSWAP
313#define sscal_ SSCAL
314#define scopy_ SCOPY
315#define saxpy_ SAXPY
316#define ssdot_ SSDOT
317#define isamax_ ISAMAX
318
319#define drotg_ DROTG
320#define drotmg_ DROTMG
321#define drot_ DROT
322#define drotm_ DROTM
323#define dswap_ DSWAP
324#define dscal_ DSCAL
325#define dcopy_ DCOPY
326#define daxpy_ DAXPY
327#define dddot_ DDDOT
328#define dnrm2_ DNRM2
329#define dsnrm2_ DSNRM2
330#define dasum_ DASUM
331#define dsasum_ DSASUM
332#define idamax_ IDAMAX
333
334#define cswap_ CSWAP
335#define cscal_ CSCAL
336#define csscal_ CSSCAL
337#define ccopy_ CCOPY
338#define caxpy_ CAXPY
339#define ccdotu_ CCDOTU
340#define ccdotc_ CCDOTC
341#define icamax_ ICAMAX
342
343#define zswap_ ZSWAP
344#define zscal_ ZSCAL
345#define zdscal_ ZDSCAL
346#define zcopy_ ZCOPY
347#define zaxpy_ ZAXPY
348#define zzdotu_ ZZDOTU
349#define zzdotc_ ZZDOTC
350#define dscnrm2_ DSCNRM2
351#define dznrm2_ DZNRM2
352#define dscasum_ DSCASUM
353#define dzasum_ DZASUM
354#define izamax_ IZAMAX
355 /* Level-2 BLAS */
356#define sgemv_ SGEMV
357#define ssymv_ SSYMV
358#define strmv_ STRMV
359#define strsv_ STRSV
360#define sger_ SGER
361#define ssyr_ SSYR
362#define ssyr2_ SSYR2
363
364#define dgemv_ DGEMV
365#define dsymv_ DSYMV
366#define dtrmv_ DTRMV
367#define dtrsv_ DTRSV
368#define dger_ DGER
369#define dsyr_ DSYR
370#define dsyr2_ DSYR2
371
372#define cgemv_ CGEMV
373#define chemv_ CHEMV
374#define ctrmv_ CTRMV
375#define ctrsv_ CTRSV
376#define cgeru_ CGERU
377#define cgerc_ CGERC
378#define cher_ CHER
379#define cher2_ CHER2
380
381#define zgemv_ ZGEMV
382#define zhemv_ ZHEMV
383#define ztrmv_ ZTRMV
384#define ztrsv_ ZTRSV
385#define zgeru_ ZGERU
386#define zgerc_ ZGERC
387#define zher_ ZHER
388#define zher2_ ZHER2
389 /* Level-3 BLAS */
390#define sgemm_ SGEMM
391#define ssymm_ SSYMM
392#define ssyrk_ SSYRK
393#define ssyr2k_ SSYR2K
394#define strmm_ STRMM
395#define strsm_ STRSM
396
397#define dgemm_ DGEMM
398#define dsymm_ DSYMM
399#define dsyrk_ DSYRK
400#define dsyr2k_ DSYR2K
401#define dtrmm_ DTRMM
402#define dtrsm_ DTRSM
403
404#define cgemm_ CGEMM
405#define chemm_ CHEMM
406#define csymm_ CSYMM
407#define csyrk_ CSYRK
408#define cherk_ CHERK
409#define csyr2k_ CSYR2K
410#define cher2k_ CHER2K
411#define ctrmm_ CTRMM
412#define ctrsm_ CTRSM
413
414#define zgemm_ ZGEMM
415#define zhemm_ ZHEMM
416#define zsymm_ ZSYMM
417#define zsyrk_ ZSYRK
418#define zherk_ ZHERK
419#define zsyr2k_ ZSYR2K
420#define zher2k_ ZHER2K
421#define ztrmm_ ZTRMM
422#define ztrsm_ ZTRSM
423 /* absolute value auxiliary PBLAS */
424#define psatrmv_ PSATRMV
425#define pdatrmv_ PDATRMV
426#define pcatrmv_ PCATRMV
427#define pzatrmv_ PZATRMV
428#define psagemv_ PSAGEMV
429#define pdagemv_ PDAGEMV
430#define pcagemv_ PCAGEMV
431#define pzagemv_ PZAGEMV
432#define psasymv_ PSASYMV
433#define pdasymv_ PDASYMV
434#define pcahemv_ PCAHEMV
435#define pzahemv_ PZAHEMV
436 /* Auxiliary PB-BLAS */
437#define pbcmatadd_ PBCMATADD
438#define pbdmatadd_ PBDMATADD
439#define pbsmatadd_ PBSMATADD
440#define pbzmatadd_ PBZMATADD
441 /* Level-2 PBBLAS */
442#define pbcgemv_ PBCGEMV
443#define pbcgeru_ PBCGERU
444#define pbcgerc_ PBCGERC
445#define pbchemv_ PBCHEMV
446#define pbcher_ PBCHER
447#define pbcher2_ PBCHER2
448#define pbctrmv_ PBCTRMV
449#define pbctrnv_ PBCTRNV
450#define pbctrsv_ PBCTRSV
451
452#define pbdgemv_ PBDGEMV
453#define pbdger_ PBDGER
454#define pbdsymv_ PBDSYMV
455#define pbdsyr_ PBDSYR
456#define pbdsyr2_ PBDSYR2
457#define pbdtrmv_ PBDTRMV
458#define pbdtrnv_ PBDTRNV
459#define pbdtrsv_ PBDTRSV
460
461#define pbsgemv_ PBSGEMV
462#define pbsger_ PBSGER
463#define pbssymv_ PBSSYMV
464#define pbssyr_ PBSSYR
465#define pbssyr2_ PBSSYR2
466#define pbstrmv_ PBSTRMV
467#define pbstrnv_ PBSTRNV
468#define pbstrsv_ PBSTRSV
469
470#define pbzgemv_ PBZGEMV
471#define pbzgeru_ PBZGERU
472#define pbzgerc_ PBZGERC
473#define pbzhemv_ PBZHEMV
474#define pbzher_ PBZHER
475#define pbzher2_ PBZHER2
476#define pbztrmv_ PBZTRMV
477#define pbztrnv_ PBZTRNV
478#define pbztrsv_ PBZTRSV
479 /* Level-3 PBBLAS */
480#define pbcgemm_ PBCGEMM
481#define pbchemm_ PBCHEMM
482#define pbcher2k_ PBCHER2K
483#define pbcherk_ PBCHERK
484#define pbcsymm_ PBCSYMM
485#define pbcsyr2k_ PBCSYR2K
486#define pbcsyrk_ PBCSYRK
487#define pbctrmm_ PBCTRMM
488#define pbctrsm_ PBCTRSM
489#define pbctran_ PBCTRAN
490
491#define pbdgemm_ PBDGEMM
492#define pbdsymm_ PBDSYMM
493#define pbdsyr2k_ PBDSYR2K
494#define pbdsyrk_ PBDSYRK
495#define pbdtrmm_ PBDTRMM
496#define pbdtrsm_ PBDTRSM
497#define pbdtran_ PBDTRAN
498
499#define pbsgemm_ PBSGEMM
500#define pbssymm_ PBSSYMM
501#define pbssyr2k_ PBSSYR2K
502#define pbssyrk_ PBSSYRK
503#define pbstrmm_ PBSTRMM
504#define pbstrsm_ PBSTRSM
505#define pbstran_ PBSTRAN
506
507#define pbzgemm_ PBZGEMM
508#define pbzhemm_ PBZHEMM
509#define pbzher2k_ PBZHER2K
510#define pbzherk_ PBZHERK
511#define pbzsymm_ PBZSYMM
512#define pbzsyr2k_ PBZSYR2K
513#define pbzsyrk_ PBZSYRK
514#define pbztrmm_ PBZTRMM
515#define pbztrsm_ PBZTRSM
516#define pbztran_ PBZTRAN
517 /* Auxilliary PBLAS */
518#define pberror_ PBERROR
519#define pb_freebuf_ PB_FREEBUF
520#define pb_topget_ PB_TOPGET
521#define pb_topset_ PB_TOPSET
522 /* Level-1 PBLAS */
523#define psrotg_ PSROTG
524#define psrotmg_ PSROTMG
525#define psrot_ PSROT
526#define psrotm_ PSROTM
527#define psswap_ PSSWAP
528#define psscal_ PSSCAL
529#define pscopy_ PSCOPY
530#define psaxpy_ PSAXPY
531#define psdot_ PSDOT
532#define psnrm2_ PSNRM2
533#define psasum_ PSASUM
534#define psamax_ PSAMAX
535
536#define pdrotg_ PDROTG
537#define pdrotmg_ PDROTMG
538#define pdrot_ PDROT
539#define pdrotm_ PDROTM
540#define pdswap_ PDSWAP
541#define pdscal_ PDSCAL
542#define pdcopy_ PDCOPY
543#define pdaxpy_ PDAXPY
544#define pddot_ PDDOT
545#define pdnrm2_ PDNRM2
546#define pdasum_ PDASUM
547#define pdamax_ PDAMAX
548
549#define pcswap_ PCSWAP
550#define pcscal_ PCSCAL
551#define pcsscal_ PCSSCAL
552#define pccopy_ PCCOPY
553#define pcaxpy_ PCAXPY
554#define pcdotu_ PCDOTU
555#define pcdotc_ PCDOTC
556#define pscnrm2_ PSCNRM2
557#define pscasum_ PSCASUM
558#define pcamax_ PCAMAX
559#define pcrot_ PCROT
560#define crot_ CROT
561
562#define pzswap_ PZSWAP
563#define pzscal_ PZSCAL
564#define pzdscal_ PZDSCAL
565#define pzcopy_ PZCOPY
566#define pzaxpy_ PZAXPY
567#define pzdotu_ PZDOTU
568#define pzdotc_ PZDOTC
569#define pdznrm2_ PDZNRM2
570#define pdzasum_ PDZASUM
571#define pzamax_ PZAMAX
572#define pzrot_ PZROT
573#define zrot_ ZROT
574 /* Level-2 PBLAS */
575#define pcgemv_ PCGEMV
576#define pcgeru_ PCGERU
577#define pcgerc_ PCGERC
578#define pchemv_ PCHEMV
579#define pcher_ PCHER
580#define pcher2_ PCHER2
581#define pctrmv_ PCTRMV
582#define pctrsv_ PCTRSV
583
584#define pdgemv_ PDGEMV
585#define pdger_ PDGER
586#define pdsymv_ PDSYMV
587#define pdsyr_ PDSYR
588#define pdsyr2_ PDSYR2
589#define pdtrmv_ PDTRMV
590#define pdtrsv_ PDTRSV
591
592#define psgemv_ PSGEMV
593#define psger_ PSGER
594#define pssymv_ PSSYMV
595#define pssyr_ PSSYR
596#define pssyr2_ PSSYR2
597#define pstrmv_ PSTRMV
598#define pstrsv_ PSTRSV
599
600#define pzgemv_ PZGEMV
601#define pzgeru_ PZGERU
602#define pzgerc_ PZGERC
603#define pzhemv_ PZHEMV
604#define pzher_ PZHER
605#define pzher2_ PZHER2
606#define pztrmv_ PZTRMV
607#define pztrsv_ PZTRSV
608 /* Level-3 PBLAS */
609#define pcgemm_ PCGEMM
610#define pchemm_ PCHEMM
611#define pcher2k_ PCHER2K
612#define pcherk_ PCHERK
613#define pcsymm_ PCSYMM
614#define pcsyr2k_ PCSYR2K
615#define pcsyrk_ PCSYRK
616#define pctrmm_ PCTRMM
617#define pctrsm_ PCTRSM
618#define pctranu_ PCTRANU
619#define pctranc_ PCTRANC
620
621#define pdgemm_ PDGEMM
622#define pdsymm_ PDSYMM
623#define pdsyr2k_ PDSYR2K
624#define pdsyrk_ PDSYRK
625#define pdtrmm_ PDTRMM
626#define pdtrsm_ PDTRSM
627#define pdtran_ PDTRAN
628
629#define psgemm_ PSGEMM
630#define pssymm_ PSSYMM
631#define pssyr2k_ PSSYR2K
632#define pssyrk_ PSSYRK
633#define pstrmm_ PSTRMM
634#define pstrsm_ PSTRSM
635#define pstran_ PSTRAN
636
637#define pzgemm_ PZGEMM
638#define pzhemm_ PZHEMM
639#define pzher2k_ PZHER2K
640#define pzherk_ PZHERK
641#define pzsymm_ PZSYMM
642#define pzsyr2k_ PZSYR2K
643#define pzsyrk_ PZSYRK
644#define pztrmm_ PZTRMM
645#define pztrsm_ PZTRSM
646#define pztranu_ PZTRANU
647#define pztranc_ PZTRANC
648
649#endif
650
651#if( _F2C_CALL_ == _F2C_NOCHANGE )
652/*
653* These defines set up the naming scheme required to have a FORTRAN
654* routine call a C routine (which is what the PBLAS are written in)
655* for following FORTRAN to C interface:
656* FORTRAN CALL C DECLARATION
657* call pdgemm(...) void pdgemm(...)
658*/
659 /* TOOLS */
660#define ilcm_ ilcm
661#define infog2l_ infog2l
662#define numroc_ numroc
663#define pstreecomb_ pstreecomb
664#define pdtreecomb_ pdtreecomb
665#define pctreecomb_ pctreecomb
666#define pztreecomb_ pztreecomb
667#define scombamax_ scombamax
668#define dcombamax_ dcombamax
669#define ccombamax_ ccombamax
670#define zcombamax_ zcombamax
671#define scombnrm2_ scombnrm2
672#define dcombnrm2_ dcombnrm2
673
674#define dlamov_ dlamov
675#define slamov_ slamov
676#define clamov_ clamov
677#define zlamov_ zlamov
678#define dlacpy_ dlacpy
679#define slacpy_ slacpy
680#define clacpy_ clacpy
681#define zlacpy_ zlacpy
682#define xerbla_ xerbla
683 /* BLACS */
684#define blacs_abort_ blacs_abort
685#define blacs_gridinfo_ blacs_gridinfo
686
687#define igesd2d_ igesd2d
688#define igebs2d_ igebs2d
689#define itrsd2d_ itrsd2d
690#define itrbs2d_ itrbs2d
691#define igerv2d_ igerv2d
692#define igebr2d_ igebr2d
693#define itrrv2d_ itrrv2d
694#define itrbr2d_ itrbr2d
695#define igamx2d_ igamx2d
696#define igamn2d_ igamn2d
697#define igsum2d_ igsum2d
698
699#define sgesd2d_ sgesd2d
700#define sgebs2d_ sgebs2d
701#define strsd2d_ strsd2d
702#define strbs2d_ strbs2d
703#define sgerv2d_ sgerv2d
704#define sgebr2d_ sgebr2d
705#define strrv2d_ strrv2d
706#define strbr2d_ strbr2d
707#define sgamx2d_ sgamx2d
708#define sgamn2d_ sgamn2d
709#define sgsum2d_ sgsum2d
710
711#define dgesd2d_ dgesd2d
712#define dgebs2d_ dgebs2d
713#define dtrsd2d_ dtrsd2d
714#define dtrbs2d_ dtrbs2d
715#define dgerv2d_ dgerv2d
716#define dgebr2d_ dgebr2d
717#define dtrrv2d_ dtrrv2d
718#define dtrbr2d_ dtrbr2d
719#define dgamx2d_ dgamx2d
720#define dgamn2d_ dgamn2d
721#define dgsum2d_ dgsum2d
722
723#define cgesd2d_ cgesd2d
724#define cgebs2d_ cgebs2d
725#define ctrsd2d_ ctrsd2d
726#define ctrbs2d_ ctrbs2d
727#define cgerv2d_ cgerv2d
728#define cgebr2d_ cgebr2d
729#define ctrrv2d_ ctrrv2d
730#define ctrbr2d_ ctrbr2d
731#define cgamx2d_ cgamx2d
732#define cgamn2d_ cgamn2d
733#define cgsum2d_ cgsum2d
734
735#define zgesd2d_ zgesd2d
736#define zgebs2d_ zgebs2d
737#define ztrsd2d_ ztrsd2d
738#define ztrbs2d_ ztrbs2d
739#define zgerv2d_ zgerv2d
740#define zgebr2d_ zgebr2d
741#define ztrrv2d_ ztrrv2d
742#define ztrbr2d_ ztrbr2d
743#define zgamx2d_ zgamx2d
744#define zgamn2d_ zgamn2d
745#define zgsum2d_ zgsum2d
746 /* Level-1 BLAS */
747#define srotg_ srotg
748#define srotmg_ srotmg
749#define srot_ srot
750#define srotm_ srotm
751#define sswap_ sswap
752#define sscal_ sscal
753#define scopy_ scopy
754#define saxpy_ saxpy
755#define ssdot_ ssdot
756#define isamax_ isamax
757
758#define drotg_ drotg
759#define drotmg_ drotmg
760#define drot_ drot
761#define drotm_ drotm
762#define dswap_ dswap
763#define dscal_ dscal
764#define dcopy_ dcopy
765#define daxpy_ daxpy
766#define dddot_ dddot
767#define dnrm2_ dnrm2
768#define dsnrm2_ dsnrm2
769#define dasum_ dasum
770#define dsasum_ dsasum
771#define idamax_ idamax
772
773#define cswap_ cswap
774#define cscal_ cscal
775#define csscal_ csscal
776#define ccopy_ ccopy
777#define caxpy_ caxpy
778#define ccdotu_ ccdotu
779#define ccdotc_ ccdotc
780#define icamax_ icamax
781
782#define zswap_ zswap
783#define zscal_ zscal
784#define zdscal_ zdscal
785#define zcopy_ zcopy
786#define zaxpy_ zaxpy
787#define zzdotu_ zzdotu
788#define zzdotc_ zzdotc
789#define dscnrm2_ dscnrm2
790#define dznrm2_ dznrm2
791#define dscasum_ dscasum
792#define dzasum_ dzasum
793#define izamax_ izamax
794 /* Level-2 BLAS */
795#define sgemv_ sgemv
796#define ssymv_ ssymv
797#define strmv_ strmv
798#define strsv_ strsv
799#define sger_ sger
800#define ssyr_ ssyr
801#define ssyr2_ ssyr2
802
803#define dgemv_ dgemv
804#define dsymv_ dsymv
805#define dtrmv_ dtrmv
806#define dtrsv_ dtrsv
807#define dger_ dger
808#define dsyr_ dsyr
809#define dsyr2_ dsyr2
810
811#define cgemv_ cgemv
812#define chemv_ chemv
813#define ctrmv_ ctrmv
814#define ctrsv_ ctrsv
815#define cgeru_ cgeru
816#define cgerc_ cgerc
817#define cher_ cher
818#define cher2_ cher2
819
820#define zgemv_ zgemv
821#define zhemv_ zhemv
822#define ztrmv_ ztrmv
823#define ztrsv_ ztrsv
824#define zgeru_ zgeru
825#define zgerc_ zgerc
826#define zher_ zher
827#define zher2_ zher2
828 /* Level-3 BLAS */
829#define sgemm_ sgemm
830#define ssymm_ ssymm
831#define ssyrk_ ssyrk
832#define ssyr2k_ ssyr2k
833#define strmm_ strmm
834#define strsm_ strsm
835
836#define dgemm_ dgemm
837#define dsymm_ dsymm
838#define dsyrk_ dsyrk
839#define dsyr2k_ dsyr2k
840#define dtrmm_ dtrmm
841#define dtrsm_ dtrsm
842
843#define cgemm_ cgemm
844#define chemm_ chemm
845#define csymm_ csymm
846#define csyrk_ csyrk
847#define cherk_ cherk
848#define csyr2k_ csyr2k
849#define cher2k_ cher2k
850#define ctrmm_ ctrmm
851#define ctrsm_ ctrsm
852
853#define zgemm_ zgemm
854#define zhemm_ zhemm
855#define zsymm_ zsymm
856#define zsyrk_ zsyrk
857#define zherk_ zherk
858#define zsyr2k_ zsyr2k
859#define zher2k_ zher2k
860#define ztrmm_ ztrmm
861#define ztrsm_ ztrsm
862 /* absolute value auxiliary PBLAS */
863#define psatrmv_ psatrmv
864#define pdatrmv_ pdatrmv
865#define pcatrmv_ pcatrmv
866#define pzatrmv_ pzatrmv
867#define psagemv_ psagemv
868#define pdagemv_ pdagemv
869#define pcagemv_ pcagemv
870#define pzagemv_ pzagemv
871#define psasymv_ psasymv
872#define pdasymv_ pdasymv
873#define pcahemv_ pcahemv
874#define pzahemv_ pzahemv
875 /* Auxiliary PB-BLAS */
876#define pbcmatadd_ pbcmatadd
877#define pbdmatadd_ pbdmatadd
878#define pbsmatadd_ pbsmatadd
879#define pbzmatadd_ pbzmatadd
880 /* Level-2 PBBLAS */
881#define pbcgemv_ pbcgemv
882#define pbcgeru_ pbcgeru
883#define pbcgerc_ pbcgerc
884#define pbchemv_ pbchemv
885#define pbcher_ pbcher
886#define pbcher2_ pbcher2
887#define pbctrmv_ pbctrmv
888#define pbctrnv_ pbctrnv
889#define pbctrsv_ pbctrsv
890
891#define pbdgemv_ pbdgemv
892#define pbdger_ pbdger
893#define pbdsymv_ pbdsymv
894#define pbdsyr_ pbdsyr
895#define pbdsyr2_ pbdsyr2
896#define pbdtrmv_ pbdtrmv
897#define pbdtrnv_ pbdtrnv
898#define pbdtrsv_ pbdtrsv
899
900#define pbsgemv_ pbsgemv
901#define pbsger_ pbsger
902#define pbssymv_ pbssymv
903#define pbssyr_ pbssyr
904#define pbssyr2_ pbssyr2
905#define pbstrmv_ pbstrmv
906#define pbstrnv_ pbstrnv
907#define pbstrsv_ pbstrsv
908
909#define pbzgemv_ pbzgemv
910#define pbzgeru_ pbzgeru
911#define pbzgerc_ pbzgerc
912#define pbzhemv_ pbzhemv
913#define pbzher_ pbzher
914#define pbzher2_ pbzher2
915#define pbztrmv_ pbztrmv
916#define pbztrnv_ pbztrnv
917#define pbztrsv_ pbztrsv
918 /* Level-3 PBBLAS */
919#define pbcgemm_ pbcgemm
920#define pbchemm_ pbchemm
921#define pbcher2k_ pbcher2k
922#define pbcherk_ pbcherk
923#define pbcsymm_ pbcsymm
924#define pbcsyr2k_ pbcsyr2k
925#define pbcsyrk_ pbcsyrk
926#define pbctrmm_ pbctrmm
927#define pbctrsm_ pbctrsm
928#define pbctran_ pbctran
929
930#define pbdgemm_ pbdgemm
931#define pbdsymm_ pbdsymm
932#define pbdsyr2k_ pbdsyr2k
933#define pbdsyrk_ pbdsyrk
934#define pbdtrmm_ pbdtrmm
935#define pbdtrsm_ pbdtrsm
936#define pbdtran_ pbdtran
937
938#define pbsgemm_ pbsgemm
939#define pbssymm_ pbssymm
940#define pbssyr2k_ pbssyr2k
941#define pbssyrk_ pbssyrk
942#define pbstrmm_ pbstrmm
943#define pbstrsm_ pbstrsm
944#define pbstran_ pbstran
945
946#define pbzgemm_ pbzgemm
947#define pbzhemm_ pbzhemm
948#define pbzher2k_ pbzher2k
949#define pbzherk_ pbzherk
950#define pbzsymm_ pbzsymm
951#define pbzsyr2k_ pbzsyr2k
952#define pbzsyrk_ pbzsyrk
953#define pbztrmm_ pbztrmm
954#define pbztrsm_ pbztrsm
955#define pbztran_ pbztran
956 /* Auxilliary PBLAS */
957#define pberror_ pberror
958#define pb_freebuf_ pb_freebuf
959#define pb_topget_ pb_topget
960#define pb_topset_ pb_topset
961 /* Level-1 PBLAS */
962#define psrotg_ psrotg
963#define psrotmg_ psrotmg
964#define psrot_ psrot
965#define psrotm_ psrotm
966#define psswap_ psswap
967#define psscal_ psscal
968#define pscopy_ pscopy
969#define psaxpy_ psaxpy
970#define psdot_ psdot
971#define psnrm2_ psnrm2
972#define psasum_ psasum
973#define psamax_ psamax
974
975#define pdrotg_ pdrotg
976#define pdrotmg_ pdrotmg
977#define pdrot_ pdrot
978#define pdrotm_ pdrotm
979#define pdswap_ pdswap
980#define pdscal_ pdscal
981#define pdcopy_ pdcopy
982#define pdaxpy_ pdaxpy
983#define pddot_ pddot
984#define pdnrm2_ pdnrm2
985#define pdasum_ pdasum
986#define pdamax_ pdamax
987
988#define pcswap_ pcswap
989#define pcscal_ pcscal
990#define pcsscal_ pcsscal
991#define pccopy_ pccopy
992#define pcaxpy_ pcaxpy
993#define pcdotu_ pcdotu
994#define pcdotc_ pcdotc
995#define pscnrm2_ pscnrm2
996#define pscasum_ pscasum
997#define pcamax_ pcamax
998#define pcrot_ pcrot
999#define crot_ crot
1000
1001#define pzswap_ pzswap
1002#define pzscal_ pzscal
1003#define pzdscal_ pzdscal
1004#define pzcopy_ pzcopy
1005#define pzaxpy_ pzaxpy
1006#define pzdotu_ pzdotu
1007#define pzdotc_ pzdotc
1008#define pdznrm2_ pdznrm2
1009#define pdzasum_ pdzasum
1010#define pzamax_ pzamax
1011#define pzrot_ pzrot
1012#define zrot_ zrot
1013 /* Level-2 PBLAS */
1014#define pcgemv_ pcgemv
1015#define pcgeru_ pcgeru
1016#define pcgerc_ pcgerc
1017#define pchemv_ pchemv
1018#define pcher_ pcher
1019#define pcher2_ pcher2
1020#define pctrmv_ pctrmv
1021#define pctrsv_ pctrsv
1022
1023#define pdgemv_ pdgemv
1024#define pdger_ pdger
1025#define pdsymv_ pdsymv
1026#define pdsyr_ pdsyr
1027#define pdsyr2_ pdsyr2
1028#define pdtrmv_ pdtrmv
1029#define pdtrsv_ pdtrsv
1030
1031#define psgemv_ psgemv
1032#define psger_ psger
1033#define pssymv_ pssymv
1034#define pssyr_ pssyr
1035#define pssyr2_ pssyr2
1036#define pstrmv_ pstrmv
1037#define pstrsv_ pstrsv
1038
1039#define pzgemv_ pzgemv
1040#define pzgeru_ pzgeru
1041#define pzgerc_ pzgerc
1042#define pzhemv_ pzhemv
1043#define pzher_ pzher
1044#define pzher2_ pzher2
1045#define pztrmv_ pztrmv
1046#define pztrsv_ pztrsv
1047 /* Level-3 PBLAS */
1048#define pcgemm_ pcgemm
1049#define pchemm_ pchemm
1050#define pcher2k_ pcher2k
1051#define pcherk_ pcherk
1052#define pcsymm_ pcsymm
1053#define pcsyr2k_ pcsyr2k
1054#define pcsyrk_ pcsyrk
1055#define pctrmm_ pctrmm
1056#define pctrsm_ pctrsm
1057#define pctranu_ pctranu
1058#define pctranc_ pctranc
1059
1060#define pdgemm_ pdgemm
1061#define pdsymm_ pdsymm
1062#define pdsyr2k_ pdsyr2k
1063#define pdsyrk_ pdsyrk
1064#define pdtrmm_ pdtrmm
1065#define pdtrsm_ pdtrsm
1066#define pdtran_ pdtran
1067
1068#define psgemm_ psgemm
1069#define pssymm_ pssymm
1070#define pssyr2k_ pssyr2k
1071#define pssyrk_ pssyrk
1072#define pstrmm_ pstrmm
1073#define pstrsm_ pstrsm
1074#define pstran_ pstran
1075
1076#define pzgemm_ pzgemm
1077#define pzhemm_ pzhemm
1078#define pzher2k_ pzher2k
1079#define pzherk_ pzherk
1080#define pzsymm_ pzsymm
1081#define pzsyr2k_ pzsyr2k
1082#define pzsyrk_ pzsyrk
1083#define pztrmm_ pztrmm
1084#define pztrsm_ pztrsm
1085#define pztranu_ pztranu
1086#define pztranc_ pztranc
1087
1088#endif
1089
1090#if( _F2C_CALL_ == _F2C_F77ISF2C )
1091/*
1092* These defines set up the naming scheme required to have a FORTRAN
1093* routine call a C routine (which is what the PBLAS are written in)
1094* for systems where the fortran "compiler" is actually f2c (a Fortran
1095* to C conversion utility).
1096*/
1097
1098/*
1099* Initialization routines
1100*/
1101#define blacs_pinfo_ blacs_pinfo__
1102#define blacs_setup_ blacs_setup__
1103#define blacs_set_ blacs_set__
1104#define blacs_get_ blacs_get__
1105#define blacs_gridinit_ blacs_gridinit__
1106#define blacs_gridmap_ blacs_gridmap__
1107/*
1108* Destruction routines
1109*/
1110#define blacs_freebuff_ blacs_freebuff__
1111#define blacs_gridexit_ blacs_gridexit__
1112#define blacs_abort_ blacs_abort__
1113#define blacs_exit_ blacs_exit__
1114/*
1115* Informational & misc.
1116*/
1117#define blacs_gridinfo_ blacs_gridinfo__
1118#define blacs_pnum_ blacs_pnum__
1119#define blacs_pcoord_ blacs_pcoord__
1120#define blacs_barrier_ blacs_barrier__
1121#endif
char * F_CHAR
Definition pblas.h:113
double im
Definition pblas.h:97
float im
Definition pblas.h:96