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_CGELQF       plasma_cgelqf_
012:     #define PLASMA_CGELQS       plasma_cgelqs_
013:     #define PLASMA_CGELS        plasma_cgels_
014:     #define PLASMA_CGEQRF       plasma_cgeqrf_
015:     #define PLASMA_CGEQRS       plasma_cgeqrs_
016:     #define PLASMA_CGESV        plasma_cgesv_
017:     #define PLASMA_CGETRF       plasma_cgetrf_
018:     #define PLASMA_CGETRS       plasma_cgetrs_
019:     #define PLASMA_CPOSV        plasma_cposv_
020:     #define PLASMA_CPOTRF       plasma_cpotrf_
021:     #define PLASMA_CPOTRS       plasma_cpotrs_
022:     #define PLASMA_CTRSM        plasma_ctrsm_
023:     #define PLASMA_CTRSMPL      plasma_ctrsmpl_
024:     #define PLASMA_CUNGLQ       plasma_cunglq_
025:     #define PLASMA_CUNGQR       plasma_cungqr_
026:     #define PLASMA_CUNMLQ       plasma_cunmlq_
027:     #define PLASMA_CUNMQR       plasma_cunmqr_
028:     #define PLASMA_CGEMM        plasma_cgemm_
029: 
030:     #define PLASMA_CGELQF_TILE      plasma_cgelqf_tile_
031:     #define PLASMA_CGELQS_TILE      plasma_cgelqs_tile_
032:     #define PLASMA_CGELS_TILE       plasma_cgels_tile_
033:     #define PLASMA_CGEQRF_TILE      plasma_cgeqrf_tile_
034:     #define PLASMA_CGEQRS_TILE      plasma_cgeqrs_tile_
035:     #define PLASMA_CGESV_TILE       plasma_cgesv_tile_
036:     #define PLASMA_CGETRF_TILE      plasma_cgetrf_tile_
037:     #define PLASMA_CGETRS_TILE      plasma_cgetrs_tile_
038:     #define PLASMA_CPOSV_TILE       plasma_cposv_tile_
039:     #define PLASMA_CPOTRF_TILE      plasma_cpotrf_tile_
040:     #define PLASMA_CPOTRS_TILE      plasma_cpotrs_tile_
041:     #define PLASMA_CTRSM_TILE       plasma_ctrsm_tile_
042:     #define PLASMA_CTRSMPL_TILE     plasma_ctrsmpl_tile_
043:     #define PLASMA_CUNGLQ_TILE      plasma_cunglq_tile_
044:     #define PLASMA_CUNGQR_TILE      plasma_cungqr_tile_
045:     #define PLASMA_CUNMLQ_TILE      plasma_cunmlq_tile_
046:     #define PLASMA_CUNMQR_TILE      plasma_cunmqr_tile_
047:     #define PLASMA_CGEMM_TILE       plasma_cgemm_tile_
048: 
049:     #define PLASMA_ALLOC_WORKSPACE_CGELQF       plasma_alloc_workspace_cgelqf_
050:     #define PLASMA_ALLOC_WORKSPACE_CGELS        plasma_alloc_workspace_cgels_
051:     #define PLASMA_ALLOC_WORKSPACE_CGEQRF       plasma_alloc_workspace_cgeqrf_
052:     #define PLASMA_ALLOC_WORKSPACE_CGESV        plasma_alloc_workspace_cgesv_
053:     #define PLASMA_ALLOC_WORKSPACE_CGETRF       plasma_alloc_workspace_cgetrf_
054:     #define PLASMA_ALLOC_WORKSPACE_CGELQF       plasma_alloc_workspace_cgelqf_
055: #elif defined (NOCHANGE)
056:     #define PLASMA_CGELQF       plasma_cgelqf
057:     #define PLASMA_CGELQS       plasma_cgelqs
058:     #define PLASMA_CGELS        plasma_cgels
059:     #define PLASMA_CGEQRF       plasma_cgeqrf
060:     #define PLASMA_CGEQRS       plasma_cgeqrs
061:     #define PLASMA_CGESV        plasma_cgesv
062:     #define PLASMA_CGETRF       plasma_cgetrf
063:     #define PLASMA_CGETRS       plasma_cgetrs
064:     #define PLASMA_CPOSV        plasma_cposv
065:     #define PLASMA_CPOTRF       plasma_cpotrf
066:     #define PLASMA_CPOTRS       plasma_cpotrs
067:     #define PLASMA_CTRSM        plasma_ctrsm
068:     #define PLASMA_CTRSMPL      plasma_ctrsmpl
069:     #define PLASMA_CUNGLQ       plasma_cunglq
070:     #define PLASMA_CUNGQR       plasma_cungqr
071:     #define PLASMA_CUNMLQ       plasma_cunmlq
072:     #define PLASMA_CUNMQR       plasma_cunmqr
073:     #define PLASMA_CGEMM        plasma_cgemm
074: 
075:     #define PLASMA_CGELQF_TILE      plasma_cgelqf_tile
076:     #define PLASMA_CGELQS_TILE      plasma_cgelqs_tile
077:     #define PLASMA_CGELS_TILE       plasma_cgels_tile
078:     #define PLASMA_CGEQRF_TILE      plasma_cgeqrf_tile
079:     #define PLASMA_CGEQRS_TILE      plasma_cgeqrs_tile
080:     #define PLASMA_CGESV_TILE       plasma_cgesv_tile
081:     #define PLASMA_CGETRF_TILE      plasma_cgetrf_tile
082:     #define PLASMA_CGETRS_TILE      plasma_cgetrs_tile
083:     #define PLASMA_CPOSV_TILE       plasma_cposv_tile
084:     #define PLASMA_CPOTRF_TILE      plasma_cpotrf_tile
085:     #define PLASMA_CPOTRS_TILE      plasma_cpotrs_tile
086:     #define PLASMA_CTRSM_TILE       plasma_ctrsm_tile
087:     #define PLASMA_CTRSMPL_TILE     plasma_ctrsmpl_tile
088:     #define PLASMA_CUNGLQ_TILE      plasma_cunglq_tile
089:     #define PLASMA_CUNGQR_TILE      plasma_cungqr_tile
090:     #define PLASMA_CUNMLQ_TILE      plasma_cunmlq_tile
091:     #define PLASMA_CUNMQR_TILE      plasma_cunmqr_tile
092:     #define PLASMA_CGEMM_TILE       plasma_cgemm_tile
093: 
094:     #define PLASMA_ALLOC_WORKSPACE_CGELQF       plasma_alloc_workspace_cgelqf
095:     #define PLASMA_ALLOC_WORKSPACE_CGELS        plasma_alloc_workspace_cgels
096:     #define PLASMA_ALLOC_WORKSPACE_CGEQRF       plasma_alloc_workspace_cgeqrf
097:     #define PLASMA_ALLOC_WORKSPACE_CGESV        plasma_alloc_workspace_cgesv
098:     #define PLASMA_ALLOC_WORKSPACE_CGETRF       plasma_alloc_workspace_cgetrf
099: #endif
100: 
101: #ifdef __cplusplus
102: extern "C" {
103: #endif
104: 
105: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
106: //  FORTRAN API - math functions
107: void PLASMA_CGELQF(int *M, int *N, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, int *INFO)
108: {   *INFO = PLASMA_cgelqf(*M, *N, A, *LDA, *T); }
109: 
110: void PLASMA_CGELQS(int *M, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
111: {   *INFO = PLASMA_cgelqs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
112: 
113: void PLASMA_CGELS(PLASMA_enum *trans, int *M, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
114: {   *INFO = PLASMA_cgels(*trans, *M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
115: 
116: void PLASMA_CGEQRF(int *M, int *N, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, int *INFO)
117: {   *INFO = PLASMA_cgeqrf(*M, *N, A, *LDA, *T); }
118: 
119: void PLASMA_CGEQRS(int *M, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
120: {   *INFO = PLASMA_cgeqrs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
121: 
122: void PLASMA_CGESV(int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **LH, int **IPIVH, PLASMA_Complex32_t *B, int *LDB, int *INFO)
123: {   *INFO = PLASMA_cgesv(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
124: 
125: void PLASMA_CGETRF(int *M, int *N, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **LH, int **IPIVH, int *INFO)
126: {   *INFO = PLASMA_cgetrf(*M, *N, A, *LDA, *LH, *IPIVH); }
127: 
128: void PLASMA_CGETRS(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **LH, int **IPIVH, PLASMA_Complex32_t *B, int *LDB, int *INFO)
129: {   *INFO = PLASMA_cgetrs(*uplo, *N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
130: 
131: void PLASMA_CPOSV(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t *B, int *LDB, int *INFO)
132: {   *INFO = PLASMA_cposv(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
133: 
134: void PLASMA_CPOTRF(PLASMA_enum *uplo, int *N, PLASMA_Complex32_t *A, int *LDA, int *INFO)
135: {   *INFO = PLASMA_cpotrf(*uplo, *N, A, *LDA); }
136: 
137: void PLASMA_CPOTRS(PLASMA_enum *uplo, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t *B, int* LDB, int * INFO)
138: {   *INFO = PLASMA_cpotrs(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
139: 
140: void PLASMA_CTRSM(PLASMA_enum *side, PLASMA_enum *uplo, PLASMA_enum *transA, PLASMA_enum *diag, int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t *B, int *LDB, int *INFO)
141: {   *INFO = PLASMA_ctrsm(*side, *uplo, *transA, *diag, *N, *NRHS, A, *LDA, B, *LDB); }
142: 
143: void PLASMA_CTRSMPL(int *N, int *NRHS, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **LH, int **IPIVH, PLASMA_Complex32_t *B, int *LDB, int *INFO)
144: {   *INFO = PLASMA_ctrsmpl(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
145: 
146: void PLASMA_CUNGLQ(int *M, int *N, int *K, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
147: {   *INFO = PLASMA_cunglq(*M, *N, *K, A, *LDA, *T, B, *LDB); }
148: 
149: void PLASMA_CUNGQR(int *M, int *N, int *K, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
150: {   *INFO = PLASMA_cungqr(*M, *N, *K, A, *LDA, *T, B, *LDB); }
151: 
152: void PLASMA_CUNMLQ(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
153: {   *INFO = PLASMA_cunmlq(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
154: 
155: void PLASMA_CUNMQR(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t **T, PLASMA_Complex32_t *B, int *LDB, int *INFO)
156: {   *INFO = PLASMA_cunmqr(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
157: 
158: void PLASMA_CGEMM(PLASMA_enum *transA, PLASMA_enum *transB, int *M, int *N, int *K, PLASMA_Complex32_t *alpha, PLASMA_Complex32_t *A, int *LDA, PLASMA_Complex32_t *B, int *LDB, PLASMA_Complex32_t *beta, PLASMA_Complex32_t *C, int *LDC, int *INFO)
159: {   *INFO = PLASMA_cgemm(*transA, *transB, *M, *N, *K, *alpha, A, *LDA, B, *LDB, *beta, C, *LDC); }
160: 
161: 
162: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
163: //  Math functions - native interface
164: void PLASMA_CGELQF_TILE(long long int *A, long long int *T,int *INFO)
165: {   *INFO = PLASMA_cgelqf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
166: 
167: void PLASMA_CGELQS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
168: {   *INFO = PLASMA_cgelqs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
169: 
170: void PLASMA_CGELS_TILE(PLASMA_enum *trans, long long int *A, long long int *B, long long int *T, int *INFO)
171: {   *INFO = PLASMA_cgels_Tile(*trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
172: 
173: void PLASMA_CGEQRF_TILE(long long int *A, long long int *T, int *INFO)
174: {   *INFO = PLASMA_cgeqrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
175: 
176: void PLASMA_CGEQRS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
177: {   *INFO = PLASMA_cgeqrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
178: 
179: void PLASMA_CGESV_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
180: {   *INFO = PLASMA_cgesv_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
181: 
182: void PLASMA_CGETRF_TILE(long long int *A, long long int *L, int **IPIVH, int *INFO)
183: {   *INFO = PLASMA_cgetrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH); }
184: 
185: void PLASMA_CGETRS_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
186: {   *INFO = PLASMA_cgetrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
187: 
188: void PLASMA_CPOSV_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
189: {   *INFO = PLASMA_cposv_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
190: 
191: void PLASMA_CPOTRF_TILE(PLASMA_enum *uplo, long long int *A, int *INFO)
192: {   *INFO = PLASMA_cpotrf_Tile(*uplo, (PLASMA_desc *)(*A)); }
193: 
194: void PLASMA_CPOTRS_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
195: {   *INFO = PLASMA_cpotrs_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
196: 
197: void PLASMA_CTRSM_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_ctrsm_Tile(*side, *uplo, *transA, *diag, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
199: 
200: void PLASMA_CTRSMPL_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
201: {   *INFO = PLASMA_ctrsmpl_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
202: 
203: void PLASMA_CUNQLQ_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
204: {   *INFO = PLASMA_cunglq_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
205: 
206: void PLASMA_CUNGQR_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
207: {   *INFO = PLASMA_cungqr_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
208: 
209: void PLASMA_CUNMLQ_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
210: {   *INFO = PLASMA_cunmlq_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
211: 
212: void PLASMA_CUNMQR_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
213: {   *INFO = PLASMA_cunmqr_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
214: 
215: /* void PLASMA_CGEMM_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_cgemm_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_CGELQF(int *M, int *N, PLASMA_Complex32_t **T, int *INFO)
221: {   *INFO = PLASMA_Alloc_Workspace_cgelqf(*M, *N, T); }
222: 
223: void PLASMA_ALLOC_WORKSPACE_CGELS(int *M, int *N, PLASMA_Complex32_t **T, int *INFO)
224: {   *INFO = PLASMA_Alloc_Workspace_cgels(*M, *N, T); }
225: 
226: void PLASMA_ALLOC_WORKSPACE_CGEQRF(int *M, int *N, PLASMA_Complex32_t **T, int *INFO)
227: {   *INFO = PLASMA_Alloc_Workspace_cgeqrf(*M, *N, T); }
228: 
229: void PLASMA_ALLOC_WORKSPACE_CGESV(int *N, PLASMA_Complex32_t **L, int **IPIV, int *INFO)
230: {   *INFO = PLASMA_Alloc_Workspace_cgesv(*N, L, IPIV); }
231: 
232: void PLASMA_ALLOC_WORKSPACE_CGETRF(int *M, int *N, PLASMA_Complex32_t **L, int **IPIV, int *INFO)
233: {   *INFO = PLASMA_Alloc_Workspace_cgetrf(*M, *N, L, IPIV); }
234: 
235: #ifdef __cplusplus
236: }
237: #endif
238: