88 #if defined(PLASMA_HAVE_WEAK)
89 #pragma weak CORE_ststrf = PCORE_ststrf
90 #define CORE_ststrf PCORE_ststrf
91 #define CORE_sssssm PCORE_sssssm
92 int CORE_sssssm(
int M1,
int N1,
int M2,
int N2,
int K,
int IB,
104 float *WORK,
int LDWORK,
107 static float zzero = 0.0;
108 static float mzone =-1.0;
128 if ((LDU <
max(1,NB)) && (NB > 0)) {
132 if ((LDA <
max(1,M)) && (M > 0)) {
136 if ((LDL <
max(1,IB)) && (IB > 0)) {
142 if ((M == 0) || (N == 0) || (IB == 0))
146 memset(L, 0, LDL*N*
sizeof(
float));
149 for (ii = 0; ii < N; ii += IB) {
152 for (i = 0; i < sb; i++) {
156 if (fabsf(A[LDA*(ii+i)+im]) > fabsf(U[LDU*(ii+i)+ii+i])) {
160 cblas_sswap(i, &L[LDL*ii+i], LDL, &WORK[im], LDWORK );
164 cblas_sswap(sb-i, &U[LDU*(ii+i)+ii+i], LDU, &A[LDA*(ii+i)+im], LDA );
168 IPIV[ip] = NB + im + 1;
170 for (j = 0; j < i; j++) {
171 A[LDA*(ii+j)+im] = zzero;
175 if ((*INFO == 0) && (fabsf(A[LDA*(ii+i)+im]) == zzero)
176 && (fabsf(U[LDU*(ii+i)+ii+i]) == zzero)) {
180 alpha = ((float)1. / U[LDU*(ii+i)+ii+i]);
182 cblas_scopy(M, &A[LDA*(ii+i)], 1, &WORK[LDWORK*i], 1);
185 (mzone), &A[LDA*(ii+i)], 1,
186 &U[LDU*(ii+i+1)+ii+i], LDU,
187 &A[LDA*(ii+i+1)], LDA );
194 for(j = ii; j < ii+sb; j++) {
196 IPIV[j] = IPIV[j] - ii;
201 NB, N-(ii+sb), M, N-(ii+sb), sb, sb,
202 &U[LDU*(ii+sb)+ii], LDU,
203 &A[LDA*(ii+sb)], LDA,
205 WORK, LDWORK, &IPIV[ii]);
207 for(j = ii; j < ii+sb; j++) {
209 IPIV[j] = IPIV[j] + ii;
221 int m,
int n,
int ib,
int nb,
231 sizeof(
int), &m,
VALUE,
232 sizeof(
int), &n,
VALUE,
233 sizeof(
int), &ib,
VALUE,
234 sizeof(
int), &nb,
VALUE,
236 sizeof(
int), &ldu,
VALUE,
238 sizeof(
int), &lda,
VALUE,
239 sizeof(
float)*ib*nb, L,
OUTPUT,
240 sizeof(
int), &ldl,
VALUE,
241 sizeof(
int)*nb, IPIV,
OUTPUT,
242 sizeof(
float)*ib*nb, NULL,
SCRATCH,
243 sizeof(
int), &nb,
VALUE,
247 sizeof(
int), &iinfo,
VALUE,
254 #if defined(PLASMA_HAVE_WEAK)
255 #pragma weak CORE_ststrf_quark = PCORE_ststrf_quark
256 #define CORE_ststrf_quark PCORE_ststrf_quark
280 quark_unpack_args_17(quark, m, n, ib, nb, U, ldu, A, lda, L, ldl, IPIV, WORK, ldwork, sequence, request, check_info, iinfo);
281 CORE_ststrf(m, n, ib, nb, U, ldu, A, lda, L, ldl, IPIV, WORK, ldwork, &info);