LASs - Linear Algebra Routines on OmpSs  1.0.0
LASs
ddss_dnpgetrf.c
Go to the documentation of this file.
1 #include "../include/lass.h"
2 
3 /**
4  *
5  * @file ddss_dnpgetrf.c
6  *
7  * @brief LASs-DDSs ddss_dnpgetrf routine.
8  *
9  * LASs-DDSs is a software package provided by:
10  * Barcelona Supercomputing Center - Centro Nacional de Supercomputacion
11  *
12  * @author Pedro Valero-Lara pedro.valero@bsc.es
13  * @author Boro Sofranac boro.sofranac@bsc.es
14  * @date 2018-04-06
15  * @reviewer
16  * @modified
17  *
18  **/
19 
20 /**
21  *
22  * @ingroup DDSS
23  *
24  * Performs the LU factorization without pivoting of a general M-by-N matrix A:
25  *
26  * A = L * U
27  *
28  * where L is a lower triangular ( lower trapezoidal if M > N ) matrix with
29  * unit diagonal elements and U is an upper triangular ( upper trapezoidal
30  * if M < N ) matrix.
31  *
32 **/
33 
34 /**
35  *
36  * @param[in]
37  * M int.
38  * M specifies the number of rows of the matrix A. M >= 0.
39  *
40  * @param[in]
41  * N int.
42  * N specifies the number of columns of the matrix A. N >= 0.
43  *
44  * @param[in,out]
45  * A double *.
46  * A is a pointer to a regular matrix of dimension M-by-N.
47  * On exit, if return value is Success, the matrix A is overwriten by
48  * the factors L and U. The unit diagonal elements of L are not stored.
49  *
50  * @param[in]
51  * LDA int.
52  * LDA specifies the number of columns of A ( row-major order ).
53  * LDA must be at least max( 1, N ).
54  *
55  **/
56 
57 /**
58  *
59  * @retval Success successful exit
60  * @retval NoSuccess unsuccessful exit
61  *
62  **/
63 
64 /**
65  *
66  * @sa knpdgetrf
67  *
68  **/
69 
70 int ddss_dnpgetrf( int M, int N, double *A, int LDA )
71 {
72 
73  // Argument checking
74  if ( M < 0 )
75  {
76  fprintf( stderr, "Illegal value of M, in ddss_dnpgetrf code\n" );
77  return NoSuccess;
78  }
79 
80  if ( N < 0 )
81  {
82  fprintf( stderr, "Illegal value of N, in ddss_dnpgetrf code\n" );
83  return NoSuccess;
84  }
85 
86  if ( LDA < MAX( 1, N ) )
87  {
88  fprintf( stderr, "Illegal value of LDA, in ddss_dnpgetrf code\n" );
89  return NoSuccess;
90  }
91 
92  // Qick return
93  if ( MIN( M, N ) == 0 )
94  {
95  return Success;
96  }
97 
98  return kdnpgetrf( M, N, A, LDA );
99 
100 }
int ddss_dnpgetrf(int M, int N, double *A, int LDA)
Definition: ddss_dnpgetrf.c:70
enum LASS_RETURN kdnpgetrf(int M, int N, double *A, int LDA)
Definition: kdnpgetrf.c:74