001: /* ///////////////////////////// P /// L /// A /// S /// M /// A /////////////////////////////// */
002: /* ///                    PLASMA auxiliary routines (version 2.1.0)                          ///
003:  * ///                    Author: Bilel Hadri                                                ///
004:  * ///                    Release Date: November, 15th 2009                                  ///
005:  * ///                    PLASMA is a software package provided by Univ. of Tennessee,       ///
006:  * ///                    Univ. of California Berkeley and Univ. of Colorado Denver          /// */
007: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
008: #include "common.h"
009: 
010: #ifdef ADD_
011:     #define PLASMA_ZGELQF       plasma_zgelqf_
012:     #define PLASMA_ZGELQS       plasma_zgelqs_
013:     #define PLASMA_ZGELS        plasma_zgels_
014:     #define PLASMA_ZGEQRF       plasma_zgeqrf_
015:     #define PLASMA_ZGEQRS       plasma_zgeqrs_
016:     #define PLASMA_ZGESV        plasma_zgesv_
017:     #define PLASMA_ZGETRF       plasma_zgetrf_
018:     #define PLASMA_ZGETRS       plasma_zgetrs_
019:     #define PLASMA_ZPOSV        plasma_zposv_
020:     #define PLASMA_ZPOTRF       plasma_zpotrf_
021:     #define PLASMA_ZPOTRS       plasma_zpotrs_
022:     #define PLASMA_ZTRSM        plasma_ztrsm_
023:     #define PLASMA_ZTRSMPL      plasma_ztrsmpl_
024:     #define PLASMA_ZUNGLQ       plasma_zunglq_
025:     #define PLASMA_ZUNGQR       plasma_zungqr_
026:     #define PLASMA_ZUNMLQ       plasma_zunmlq_
027:     #define PLASMA_ZUNMQR       plasma_zunmqr_
028:     #define PLASMA_ZGEMM        plasma_zgemm_
029: 
030:     #define PLASMA_ZGELQF_TILE      plasma_zgelqf_tile_
031:     #define PLASMA_ZGELQS_TILE      plasma_zgelqs_tile_
032:     #define PLASMA_ZGELS_TILE       plasma_zgels_tile_
033:     #define PLASMA_ZGEQRF_TILE      plasma_zgeqrf_tile_
034:     #define PLASMA_ZGEQRS_TILE      plasma_zgeqrs_tile_
035:     #define PLASMA_ZGESV_TILE       plasma_zgesv_tile_
036:     #define PLASMA_ZGETRF_TILE      plasma_zgetrf_tile_
037:     #define PLASMA_ZGETRS_TILE      plasma_zgetrs_tile_
038:     #define PLASMA_ZPOSV_TILE       plasma_zposv_tile_
039:     #define PLASMA_ZPOTRF_TILE      plasma_zpotrf_tile_
040:     #define PLASMA_ZPOTRS_TILE      plasma_zpotrs_tile_
041:     #define PLASMA_ZTRSM_TILE       plasma_ztrsm_tile_
042:     #define PLASMA_ZTRSMPL_TILE     plasma_ztrsmpl_tile_
043:     #define PLASMA_ZUNGLQ_TILE      plasma_zunglq_tile_
044:     #define PLASMA_ZUNGQR_TILE      plasma_zungqr_tile_
045:     #define PLASMA_ZUNMLQ_TILE      plasma_zunmlq_tile_
046:     #define PLASMA_ZUNMQR_TILE      plasma_zunmqr_tile_
047:     #define PLASMA_ZGEMM_TILE       plasma_zgemm_tile_
048: 
049:     #define PLASMA_ALLOC_WORKSPACE_ZGELQF       plasma_alloc_workspace_zgelqf_
050:     #define PLASMA_ALLOC_WORKSPACE_ZGELS        plasma_alloc_workspace_zgels_
051:     #define PLASMA_ALLOC_WORKSPACE_ZGEQRF       plasma_alloc_workspace_zgeqrf_
052:     #define PLASMA_ALLOC_WORKSPACE_ZGESV        plasma_alloc_workspace_zgesv_
053:     #define PLASMA_ALLOC_WORKSPACE_ZGETRF       plasma_alloc_workspace_zgetrf_
054:     #define PLASMA_ALLOC_WORKSPACE_ZGELQF       plasma_alloc_workspace_zgelqf_
055: #elif defined (NOCHANGE)
056:     #define PLASMA_ZGELQF       plasma_zgelqf
057:     #define PLASMA_ZGELQS       plasma_zgelqs
058:     #define PLASMA_ZGELS        plasma_zgels
059:     #define PLASMA_ZGEQRF       plasma_zgeqrf
060:     #define PLASMA_ZGEQRS       plasma_zgeqrs
061:     #define PLASMA_ZGESV        plasma_zgesv
062:     #define PLASMA_ZGETRF       plasma_zgetrf
063:     #define PLASMA_ZGETRS       plasma_zgetrs
064:     #define PLASMA_ZPOSV        plasma_zposv
065:     #define PLASMA_ZPOTRF       plasma_zpotrf
066:     #define PLASMA_ZPOTRS       plasma_zpotrs
067:     #define PLASMA_ZTRSM        plasma_ztrsm
068:     #define PLASMA_ZTRSMPL      plasma_ztrsmpl
069:     #define PLASMA_ZUNGLQ       plasma_zunglq
070:     #define PLASMA_ZUNGQR       plasma_zungqr
071:     #define PLASMA_ZUNMLQ       plasma_zunmlq
072:     #define PLASMA_ZUNMQR       plasma_zunmqr
073:     #define PLASMA_ZGEMM        plasma_zgemm
074: 
075:     #define PLASMA_ZGELQF_TILE      plasma_zgelqf_tile
076:     #define PLASMA_ZGELQS_TILE      plasma_zgelqs_tile
077:     #define PLASMA_ZGELS_TILE       plasma_zgels_tile
078:     #define PLASMA_ZGEQRF_TILE      plasma_zgeqrf_tile
079:     #define PLASMA_ZGEQRS_TILE      plasma_zgeqrs_tile
080:     #define PLASMA_ZGESV_TILE       plasma_zgesv_tile
081:     #define PLASMA_ZGETRF_TILE      plasma_zgetrf_tile
082:     #define PLASMA_ZGETRS_TILE      plasma_zgetrs_tile
083:     #define PLASMA_ZPOSV_TILE       plasma_zposv_tile
084:     #define PLASMA_ZPOTRF_TILE      plasma_zpotrf_tile
085:     #define PLASMA_ZPOTRS_TILE      plasma_zpotrs_tile
086:     #define PLASMA_ZTRSM_TILE       plasma_ztrsm_tile
087:     #define PLASMA_ZTRSMPL_TILE     plasma_ztrsmpl_tile
088:     #define PLASMA_ZUNGLQ_TILE      plasma_zunglq_tile
089:     #define PLASMA_ZUNGQR_TILE      plasma_zungqr_tile
090:     #define PLASMA_ZUNMLQ_TILE      plasma_zunmlq_tile
091:     #define PLASMA_ZUNMQR_TILE      plasma_zunmqr_tile
092:     #define PLASMA_ZGEMM_TILE       plasma_zgemm_tile
093: 
094:     #define PLASMA_ALLOC_WORKSPACE_ZGELQF       plasma_alloc_workspace_zgelqf
095:     #define PLASMA_ALLOC_WORKSPACE_ZGELS        plasma_alloc_workspace_zgels
096:     #define PLASMA_ALLOC_WORKSPACE_ZGEQRF       plasma_alloc_workspace_zgeqrf
097:     #define PLASMA_ALLOC_WORKSPACE_ZGESV        plasma_alloc_workspace_zgesv
098:     #define PLASMA_ALLOC_WORKSPACE_ZGETRF       plasma_alloc_workspace_zgetrf
099: #endif
100: 
101: #ifdef __cplusplus
102: extern "C" {
103: #endif
104: 
105: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
106: //  FORTRAN API - math functions
107: void PLASMA_ZGELQF(int *M, int *N, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, int *INFO)
108: {   *INFO = PLASMA_zgelqf(*M, *N, A, *LDA, *T); }
109: 
110: void PLASMA_ZGELQS(int *M, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
111: {   *INFO = PLASMA_zgelqs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
112: 
113: void PLASMA_ZGELS(PLASMA_enum *trans, int *M, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
114: {   *INFO = PLASMA_zgels(*trans, *M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
115: 
116: void PLASMA_ZGEQRF(int *M, int *N, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, int *INFO)
117: {   *INFO = PLASMA_zgeqrf(*M, *N, A, *LDA, *T); }
118: 
119: void PLASMA_ZGEQRS(int *M, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
120: {   *INFO = PLASMA_zgeqrs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
121: 
122: void PLASMA_ZGESV(int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **LH, int **IPIVH, PLASMA_Complex64_t *B, int *LDB, int *INFO)
123: {   *INFO = PLASMA_zgesv(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
124: 
125: void PLASMA_ZGETRF(int *M, int *N, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **LH, int **IPIVH, int *INFO)
126: {   *INFO = PLASMA_zgetrf(*M, *N, A, *LDA, *LH, *IPIVH); }
127: 
128: void PLASMA_ZGETRS(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **LH, int **IPIVH, PLASMA_Complex64_t *B, int *LDB, int *INFO)
129: {   *INFO = PLASMA_zgetrs(*uplo, *N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
130: 
131: void PLASMA_ZPOSV(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t *B, int *LDB, int *INFO)
132: {   *INFO = PLASMA_zposv(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
133: 
134: void PLASMA_ZPOTRF(PLASMA_enum *uplo, int *N, PLASMA_Complex64_t *A, int *LDA, int *INFO)
135: {   *INFO = PLASMA_zpotrf(*uplo, *N, A, *LDA); }
136: 
137: void PLASMA_ZPOTRS(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t *B, int* LDB, int * INFO)
138: {   *INFO = PLASMA_zpotrs(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
139: 
140: void PLASMA_ZTRSM(PLASMA_enum *side, PLASMA_enum *uplo, PLASMA_enum *transA, PLASMA_enum *diag, int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t *B, int *LDB, int *INFO)
141: {   *INFO = PLASMA_ztrsm(*side, *uplo, *transA, *diag, *N, *NRHS, A, *LDA, B, *LDB); }
142: 
143: void PLASMA_ZTRSMPL(int *N, int *NRHS, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **LH, int **IPIVH, PLASMA_Complex64_t *B, int *LDB, int *INFO)
144: {   *INFO = PLASMA_ztrsmpl(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
145: 
146: void PLASMA_ZUNGLQ(int *M, int *N, int *K, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
147: {   *INFO = PLASMA_zunglq(*M, *N, *K, A, *LDA, *T, B, *LDB); }
148: 
149: void PLASMA_ZUNGQR(int *M, int *N, int *K, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
150: {   *INFO = PLASMA_zungqr(*M, *N, *K, A, *LDA, *T, B, *LDB); }
151: 
152: void PLASMA_ZUNMLQ(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
153: {   *INFO = PLASMA_zunmlq(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
154: 
155: void PLASMA_ZUNMQR(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t **T, PLASMA_Complex64_t *B, int *LDB, int *INFO)
156: {   *INFO = PLASMA_zunmqr(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
157: 
158: void PLASMA_ZGEMM(PLASMA_enum *transA, PLASMA_enum *transB, int *M, int *N, int *K, PLASMA_Complex64_t *alpha, PLASMA_Complex64_t *A, int *LDA, PLASMA_Complex64_t *B, int *LDB, PLASMA_Complex64_t *beta, PLASMA_Complex64_t *C, int *LDC, int *INFO)
159: {   *INFO = PLASMA_zgemm(*transA, *transB, *M, *N, *K, *alpha, A, *LDA, B, *LDB, *beta, C, *LDC); }
160: 
161: 
162: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
163: //  Math functions - native interface
164: void PLASMA_ZGELQF_TILE(long long int *A, long long int *T,int *INFO)
165: {   *INFO = PLASMA_zgelqf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
166: 
167: void PLASMA_ZGELQS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
168: {   *INFO = PLASMA_zgelqs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
169: 
170: void PLASMA_ZGELS_TILE(PLASMA_enum *trans, long long int *A, long long int *B, long long int *T, int *INFO)
171: {   *INFO = PLASMA_zgels_Tile(*trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
172: 
173: void PLASMA_ZGEQRF_TILE(long long int *A, long long int *T, int *INFO)
174: {   *INFO = PLASMA_zgeqrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
175: 
176: void PLASMA_ZGEQRS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
177: {   *INFO = PLASMA_zgeqrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
178: 
179: void PLASMA_ZGESV_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
180: {   *INFO = PLASMA_zgesv_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
181: 
182: void PLASMA_ZGETRF_TILE(long long int *A, long long int *L, int **IPIVH, int *INFO)
183: {   *INFO = PLASMA_zgetrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH); }
184: 
185: void PLASMA_ZGETRS_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
186: {   *INFO = PLASMA_zgetrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
187: 
188: void PLASMA_ZPOSV_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
189: {   *INFO = PLASMA_zposv_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
190: 
191: void PLASMA_ZPOTRF_TILE(PLASMA_enum *uplo, long long int *A, int *INFO)
192: {   *INFO = PLASMA_zpotrf_Tile(*uplo, (PLASMA_desc *)(*A)); }
193: 
194: void PLASMA_ZPOTRS_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
195: {   *INFO = PLASMA_zpotrs_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
196: 
197: void PLASMA_ZTRSM_TILE(PLASMA_enum *side, PLASMA_enum *uplo, PLASMA_enum *transA, PLASMA_enum *diag, long long int *A, long long int *B, int *INFO)
198: {   *INFO = PLASMA_ztrsm_Tile(*side, *uplo, *transA, *diag, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
199: 
200: void PLASMA_ZTRSMPL_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
201: {   *INFO = PLASMA_ztrsmpl_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
202: 
203: void PLASMA_ZUNQLQ_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
204: {   *INFO = PLASMA_zunglq_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
205: 
206: void PLASMA_ZUNGQR_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
207: {   *INFO = PLASMA_zungqr_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
208: 
209: void PLASMA_ZUNMLQ_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
210: {   *INFO = PLASMA_zunmlq_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
211: 
212: void PLASMA_ZUNMQR_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
213: {   *INFO = PLASMA_zunmqr_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
214: 
215: /* void PLASMA_ZGEMM_TILE(PLASMA_enum *transA, PLASMA_enum *transB, int *alpha, long long int *A, long long int *B, int *beta, long long int *C, int *INFO)
216: {   *INFO = PLASMA_zgemm_Tile(*transA, *transB, *alpha, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B), *beta, (PLASMA_desc *)(*C)); } */
217: 
218: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
219: //  FORTRAN API - workspace allocation
220: void PLASMA_ALLOC_WORKSPACE_ZGELQF(int *M, int *N, PLASMA_Complex64_t **T, int *INFO)
221: {   *INFO = PLASMA_Alloc_Workspace_zgelqf(*M, *N, T); }
222: 
223: void PLASMA_ALLOC_WORKSPACE_ZGELS(int *M, int *N, PLASMA_Complex64_t **T, int *INFO)
224: {   *INFO = PLASMA_Alloc_Workspace_zgels(*M, *N, T); }
225: 
226: void PLASMA_ALLOC_WORKSPACE_ZGEQRF(int *M, int *N, PLASMA_Complex64_t **T, int *INFO)
227: {   *INFO = PLASMA_Alloc_Workspace_zgeqrf(*M, *N, T); }
228: 
229: void PLASMA_ALLOC_WORKSPACE_ZGESV(int *N, PLASMA_Complex64_t **L, int **IPIV, int *INFO)
230: {   *INFO = PLASMA_Alloc_Workspace_zgesv(*N, L, IPIV); }
231: 
232: void PLASMA_ALLOC_WORKSPACE_ZGETRF(int *M, int *N, PLASMA_Complex64_t **L, int **IPIV, int *INFO)
233: {   *INFO = PLASMA_Alloc_Workspace_zgetrf(*M, *N, L, IPIV); }
234: 
235: #ifdef __cplusplus
236: }
237: #endif
238: