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_DGELQF       plasma_dgelqf_
012:     #define PLASMA_DGELQS       plasma_dgelqs_
013:     #define PLASMA_DGELS        plasma_dgels_
014:     #define PLASMA_DGEQRF       plasma_dgeqrf_
015:     #define PLASMA_DGEQRS       plasma_dgeqrs_
016:     #define PLASMA_DGESV        plasma_dgesv_
017:     #define PLASMA_DGETRF       plasma_dgetrf_
018:     #define PLASMA_DGETRS       plasma_dgetrs_
019:     #define PLASMA_DPOSV        plasma_dposv_
020:     #define PLASMA_DPOTRF       plasma_dpotrf_
021:     #define PLASMA_DPOTRS       plasma_dpotrs_
022:     #define PLASMA_DTRSM        plasma_dtrsm_
023:     #define PLASMA_DTRSMPL      plasma_dtrsmpl_
024:     #define PLASMA_DORGLQ       plasma_dorglq_
025:     #define PLASMA_DORGQR       plasma_dorgqr_
026:     #define PLASMA_DORMLQ       plasma_dormlq_
027:     #define PLASMA_DORMQR       plasma_dormqr_
028:     #define PLASMA_DGEMM        plasma_dgemm_
029: 
030:     #define PLASMA_DGELQF_TILE      plasma_dgelqf_tile_
031:     #define PLASMA_DGELQS_TILE      plasma_dgelqs_tile_
032:     #define PLASMA_DGELS_TILE       plasma_dgels_tile_
033:     #define PLASMA_DGEQRF_TILE      plasma_dgeqrf_tile_
034:     #define PLASMA_DGEQRS_TILE      plasma_dgeqrs_tile_
035:     #define PLASMA_DGESV_TILE       plasma_dgesv_tile_
036:     #define PLASMA_DGETRF_TILE      plasma_dgetrf_tile_
037:     #define PLASMA_DGETRS_TILE      plasma_dgetrs_tile_
038:     #define PLASMA_DPOSV_TILE       plasma_dposv_tile_
039:     #define PLASMA_DPOTRF_TILE      plasma_dpotrf_tile_
040:     #define PLASMA_DPOTRS_TILE      plasma_dpotrs_tile_
041:     #define PLASMA_DTRSM_TILE       plasma_dtrsm_tile_
042:     #define PLASMA_DTRSMPL_TILE     plasma_dtrsmpl_tile_
043:     #define PLASMA_DORGLQ_TILE      plasma_dorglq_tile_
044:     #define PLASMA_DORGQR_TILE      plasma_dorgqr_tile_
045:     #define PLASMA_DORMLQ_TILE      plasma_dormlq_tile_
046:     #define PLASMA_DORMQR_TILE      plasma_dormqr_tile_
047:     #define PLASMA_DGEMM_TILE       plasma_dgemm_tile_
048: 
049:     #define PLASMA_ALLOC_WORKSPACE_DGELQF       plasma_alloc_workspace_dgelqf_
050:     #define PLASMA_ALLOC_WORKSPACE_DGELS        plasma_alloc_workspace_dgels_
051:     #define PLASMA_ALLOC_WORKSPACE_DGEQRF       plasma_alloc_workspace_dgeqrf_
052:     #define PLASMA_ALLOC_WORKSPACE_DGESV        plasma_alloc_workspace_dgesv_
053:     #define PLASMA_ALLOC_WORKSPACE_DGETRF       plasma_alloc_workspace_dgetrf_
054:     #define PLASMA_ALLOC_WORKSPACE_DGELQF       plasma_alloc_workspace_dgelqf_
055: #elif defined (NOCHANGE)
056:     #define PLASMA_DGELQF       plasma_dgelqf
057:     #define PLASMA_DGELQS       plasma_dgelqs
058:     #define PLASMA_DGELS        plasma_dgels
059:     #define PLASMA_DGEQRF       plasma_dgeqrf
060:     #define PLASMA_DGEQRS       plasma_dgeqrs
061:     #define PLASMA_DGESV        plasma_dgesv
062:     #define PLASMA_DGETRF       plasma_dgetrf
063:     #define PLASMA_DGETRS       plasma_dgetrs
064:     #define PLASMA_DPOSV        plasma_dposv
065:     #define PLASMA_DPOTRF       plasma_dpotrf
066:     #define PLASMA_DPOTRS       plasma_dpotrs
067:     #define PLASMA_DTRSM        plasma_dtrsm
068:     #define PLASMA_DTRSMPL      plasma_dtrsmpl
069:     #define PLASMA_DORGLQ       plasma_dorglq
070:     #define PLASMA_DORGQR       plasma_dorgqr
071:     #define PLASMA_DORMLQ       plasma_dormlq
072:     #define PLASMA_DORMQR       plasma_dormqr
073:     #define PLASMA_DGEMM        plasma_dgemm
074: 
075:     #define PLASMA_DGELQF_TILE      plasma_dgelqf_tile
076:     #define PLASMA_DGELQS_TILE      plasma_dgelqs_tile
077:     #define PLASMA_DGELS_TILE       plasma_dgels_tile
078:     #define PLASMA_DGEQRF_TILE      plasma_dgeqrf_tile
079:     #define PLASMA_DGEQRS_TILE      plasma_dgeqrs_tile
080:     #define PLASMA_DGESV_TILE       plasma_dgesv_tile
081:     #define PLASMA_DGETRF_TILE      plasma_dgetrf_tile
082:     #define PLASMA_DGETRS_TILE      plasma_dgetrs_tile
083:     #define PLASMA_DPOSV_TILE       plasma_dposv_tile
084:     #define PLASMA_DPOTRF_TILE      plasma_dpotrf_tile
085:     #define PLASMA_DPOTRS_TILE      plasma_dpotrs_tile
086:     #define PLASMA_DTRSM_TILE       plasma_dtrsm_tile
087:     #define PLASMA_DTRSMPL_TILE     plasma_dtrsmpl_tile
088:     #define PLASMA_DORGLQ_TILE      plasma_dorglq_tile
089:     #define PLASMA_DORGQR_TILE      plasma_dorgqr_tile
090:     #define PLASMA_DORMLQ_TILE      plasma_dormlq_tile
091:     #define PLASMA_DORMQR_TILE      plasma_dormqr_tile
092:     #define PLASMA_DGEMM_TILE       plasma_dgemm_tile
093: 
094:     #define PLASMA_ALLOC_WORKSPACE_DGELQF       plasma_alloc_workspace_dgelqf
095:     #define PLASMA_ALLOC_WORKSPACE_DGELS        plasma_alloc_workspace_dgels
096:     #define PLASMA_ALLOC_WORKSPACE_DGEQRF       plasma_alloc_workspace_dgeqrf
097:     #define PLASMA_ALLOC_WORKSPACE_DGESV        plasma_alloc_workspace_dgesv
098:     #define PLASMA_ALLOC_WORKSPACE_DGETRF       plasma_alloc_workspace_dgetrf
099: #endif
100: 
101: #ifdef __cplusplus
102: extern "C" {
103: #endif
104: 
105: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
106: //  FORTRAN API - math functions
107: void PLASMA_DGELQF(int *M, int *N, double *A, int *LDA, double **T, int *INFO)
108: {   *INFO = PLASMA_dgelqf(*M, *N, A, *LDA, *T); }
109: 
110: void PLASMA_DGELQS(int *M, int *N, int *NRHS, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
111: {   *INFO = PLASMA_dgelqs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
112: 
113: void PLASMA_DGELS(PLASMA_enum *trans, int *M, int *N, int *NRHS, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
114: {   *INFO = PLASMA_dgels(*trans, *M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
115: 
116: void PLASMA_DGEQRF(int *M, int *N, double *A, int *LDA, double **T, int *INFO)
117: {   *INFO = PLASMA_dgeqrf(*M, *N, A, *LDA, *T); }
118: 
119: void PLASMA_DGEQRS(int *M, int *N, int *NRHS, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
120: {   *INFO = PLASMA_dgeqrs(*M, *N, *NRHS, A, *LDA, *T, B, *LDB); }
121: 
122: void PLASMA_DGESV(int *N, int *NRHS, double *A, int *LDA, double **LH, int **IPIVH, double *B, int *LDB, int *INFO)
123: {   *INFO = PLASMA_dgesv(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
124: 
125: void PLASMA_DGETRF(int *M, int *N, double *A, int *LDA, double **LH, int **IPIVH, int *INFO)
126: {   *INFO = PLASMA_dgetrf(*M, *N, A, *LDA, *LH, *IPIVH); }
127: 
128: void PLASMA_DGETRS(PLASMA_enum *uplo, int *N, int *NRHS, double *A, int *LDA, double **LH, int **IPIVH, double *B, int *LDB, int *INFO)
129: {   *INFO = PLASMA_dgetrs(*uplo, *N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
130: 
131: void PLASMA_DPOSV(PLASMA_enum *uplo, int *N, int *NRHS, double *A, int *LDA, double *B, int *LDB, int *INFO)
132: {   *INFO = PLASMA_dposv(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
133: 
134: void PLASMA_DPOTRF(PLASMA_enum *uplo, int *N, double *A, int *LDA, int *INFO)
135: {   *INFO = PLASMA_dpotrf(*uplo, *N, A, *LDA); }
136: 
137: void PLASMA_DPOTRS(PLASMA_enum *uplo, int *N, int *NRHS, double *A, int *LDA, double *B, int* LDB, int * INFO)
138: {   *INFO = PLASMA_dpotrs(*uplo, *N, *NRHS, A, *LDA, B, *LDB); }
139: 
140: void PLASMA_DTRSM(PLASMA_enum *side, PLASMA_enum *uplo, PLASMA_enum *transA, PLASMA_enum *diag, int *N, int *NRHS, double *A, int *LDA, double *B, int *LDB, int *INFO)
141: {   *INFO = PLASMA_dtrsm(*side, *uplo, *transA, *diag, *N, *NRHS, A, *LDA, B, *LDB); }
142: 
143: void PLASMA_DTRSMPL(int *N, int *NRHS, double *A, int *LDA, double **LH, int **IPIVH, double *B, int *LDB, int *INFO)
144: {   *INFO = PLASMA_dtrsmpl(*N, *NRHS, A, *LDA, *LH, *IPIVH, B, *LDB); }
145: 
146: void PLASMA_DORGLQ(int *M, int *N, int *K, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
147: {   *INFO = PLASMA_dorglq(*M, *N, *K, A, *LDA, *T, B, *LDB); }
148: 
149: void PLASMA_DORGQR(int *M, int *N, int *K, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
150: {   *INFO = PLASMA_dorgqr(*M, *N, *K, A, *LDA, *T, B, *LDB); }
151: 
152: void PLASMA_DORMLQ(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
153: {   *INFO = PLASMA_dormlq(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
154: 
155: void PLASMA_DORMQR(PLASMA_enum *side, PLASMA_enum *trans, int *M, int *N, int *K, double *A, int *LDA, double **T, double *B, int *LDB, int *INFO)
156: {   *INFO = PLASMA_dormqr(*side, *trans, *M, *N, *K, A, *LDA, *T, B, *LDB); }
157: 
158: void PLASMA_DGEMM(PLASMA_enum *transA, PLASMA_enum *transB, int *M, int *N, int *K, double *alpha, double *A, int *LDA, double *B, int *LDB, double *beta, double *C, int *LDC, int *INFO)
159: {   *INFO = PLASMA_dgemm(*transA, *transB, *M, *N, *K, *alpha, A, *LDA, B, *LDB, *beta, C, *LDC); }
160: 
161: 
162: /* ///////////////////////////////////////////////////////////////////////////////////////////// */
163: //  Math functions - native interface
164: void PLASMA_DGELQF_TILE(long long int *A, long long int *T,int *INFO)
165: {   *INFO = PLASMA_dgelqf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
166: 
167: void PLASMA_DGELQS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
168: {   *INFO = PLASMA_dgelqs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
169: 
170: void PLASMA_DGELS_TILE(PLASMA_enum *trans, long long int *A, long long int *B, long long int *T, int *INFO)
171: {   *INFO = PLASMA_dgels_Tile(*trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
172: 
173: void PLASMA_DGEQRF_TILE(long long int *A, long long int *T, int *INFO)
174: {   *INFO = PLASMA_dgeqrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T)); }
175: 
176: void PLASMA_DGEQRS_TILE(long long int *A, long long int *B, long long int *T, int *INFO)
177: {   *INFO = PLASMA_dgeqrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*B), (PLASMA_desc *)(*T)); }
178: 
179: void PLASMA_DGESV_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
180: {   *INFO = PLASMA_dgesv_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
181: 
182: void PLASMA_DGETRF_TILE(long long int *A, long long int *L, int **IPIVH, int *INFO)
183: {   *INFO = PLASMA_dgetrf_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH); }
184: 
185: void PLASMA_DGETRS_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
186: {   *INFO = PLASMA_dgetrs_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
187: 
188: void PLASMA_DPOSV_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
189: {   *INFO = PLASMA_dposv_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
190: 
191: void PLASMA_DPOTRF_TILE(PLASMA_enum *uplo, long long int *A, int *INFO)
192: {   *INFO = PLASMA_dpotrf_Tile(*uplo, (PLASMA_desc *)(*A)); }
193: 
194: void PLASMA_DPOTRS_TILE(PLASMA_enum *uplo, long long int *A, long long int *B, int *INFO)
195: {   *INFO = PLASMA_dpotrs_Tile(*uplo, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
196: 
197: void PLASMA_DTRSM_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_dtrsm_Tile(*side, *uplo, *transA, *diag, (PLASMA_desc *)(*A), (PLASMA_desc *)(*B)); }
199: 
200: void PLASMA_DTRSMPL_TILE(long long int *A, long long int *L, int **IPIVH, long long int *B, int *INFO)
201: {   *INFO = PLASMA_dtrsmpl_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*L), *IPIVH, (PLASMA_desc *)(*B)); }
202: 
203: void PLASMA_DUNQLQ_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
204: {   *INFO = PLASMA_dorglq_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
205: 
206: void PLASMA_DORGQR_TILE(long long int *A, long long int *T, long long int *B, int *INFO)
207: {   *INFO = PLASMA_dorgqr_Tile((PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
208: 
209: void PLASMA_DORMLQ_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
210: {   *INFO = PLASMA_dormlq_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
211: 
212: void PLASMA_DORMQR_TILE(PLASMA_enum *side, PLASMA_enum *trans, long long int *A, long long int *T, long long int *B, int *INFO)
213: {   *INFO = PLASMA_dormqr_Tile(*side, *trans, (PLASMA_desc *)(*A), (PLASMA_desc *)(*T), (PLASMA_desc *)(*B)); }
214: 
215: /* void PLASMA_DGEMM_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_dgemm_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_DGELQF(int *M, int *N, double **T, int *INFO)
221: {   *INFO = PLASMA_Alloc_Workspace_dgelqf(*M, *N, T); }
222: 
223: void PLASMA_ALLOC_WORKSPACE_DGELS(int *M, int *N, double **T, int *INFO)
224: {   *INFO = PLASMA_Alloc_Workspace_dgels(*M, *N, T); }
225: 
226: void PLASMA_ALLOC_WORKSPACE_DGEQRF(int *M, int *N, double **T, int *INFO)
227: {   *INFO = PLASMA_Alloc_Workspace_dgeqrf(*M, *N, T); }
228: 
229: void PLASMA_ALLOC_WORKSPACE_DGESV(int *N, double **L, int **IPIV, int *INFO)
230: {   *INFO = PLASMA_Alloc_Workspace_dgesv(*N, L, IPIV); }
231: 
232: void PLASMA_ALLOC_WORKSPACE_DGETRF(int *M, int *N, double **L, int **IPIV, int *INFO)
233: {   *INFO = PLASMA_Alloc_Workspace_dgetrf(*M, *N, L, IPIV); }
234: 
235: #ifdef __cplusplus
236: }
237: #endif
238: