1 #include "../include/lass.h" 70 enum LASS_RETURN
dnpgetrf(
int M,
int N,
double *A,
int LDA )
82 fprintf( stderr,
"Illegal value of M, in dnpgetrf code\n" );
88 fprintf( stderr,
"Illegal value of N, in dnpgetrf code\n" );
92 if ( LDA < MAX( 1, N ) )
94 fprintf( stderr,
"Illegal value of LDA, in dnpgetrf code\n" );
99 if ( MIN( M, N ) == 0 )
109 sfmin = LAPACKE_dlamch_work(
'S' );
112 for ( i = 0; i < k; i++ )
114 alpha = A[i * LDA + i];
115 if ( alpha != (
double )0.0 )
120 if ( fabs( alpha ) > fabs( sfmin ) )
123 cblas_dscal( M - i - 1, alpha,
124 &( A[( i + 1 ) * LDA + i] ), LDA );
128 for( j= i + 1; j < M; j++ )
130 A[j * LDA + i] = A[j * LDA + i] / alpha;
135 else if ( info == 0 )
141 cblas_dger( CblasRowMajor,
142 M - i - 1, N - i - 1,
144 &A[( i + 1 ) * LDA + i], LDA,
145 &A[ i * LDA + ( i + 1 )], 1,
146 &A[( i + 1 ) * LDA + ( i + 1 ) ], LDA );
enum LASS_RETURN dnpgetrf(int M, int N, double *A, int LDA)