Page 1 of 1

Indices in IPIV array for LU related functions

PostPosted: Mon Jan 06, 2014 2:57 pm
by jgpallero
Hello,

All LU (and also QR with column pivoting) related LAPACK functions has as an argument an array IPIV that stores the indices of row (columns for QR) permutations. In LAPACKE, are the indices of this array 0-based or 1-based, as in Fortran?, i.e., an index for the first row , is stored as 0 or as 1?

Thanks

Re: Indices in IPIV array for LU related functions

PostPosted: Sat Jan 11, 2014 2:00 pm
by admin
The address of the pointer given will always be the first memory address.
So if you give ipiv as argument of the function
Code: Select all
info = LAPACKE_dgesv( LAPACK_ROW_MAJOR, n, nrhs, A, lda, ipiv, b, ldb );
with iliv defined as:
Code: Select all
      lapack_int *ipiv;
      ipiv = (lapack_int *)malloc(n*sizeof(lapack_int)) ;
Your IPIV values are going to be store from ipiv[0] to ipiv[n-1]

Hope it helps
Julie

Re: Indices in IPIV array for LU related functions

PostPosted: Sat Jan 11, 2014 2:18 pm
by jgpallero
Sorry, probably my explanation was not so clear. I mean the indices stored in IPIV as the rows to permute, i.e, it the second row is involved in one permutation, are the value 2 or 1 stored in IPIV? Using Fortran LAPACK, number 2 is stored. And using LAPACKE, 2 or 1?

Thanks

Re: Indices in IPIV array for LU related functions

PostPosted: Sun Jan 12, 2014 12:29 am
by Julien Langou
IPIV is based on row indexex ranging from 1 to N whether you use the LAPACK Fortran Interface or the LAPACKE C Interface. Cheers, Julien.

Re: Indices in IPIV array for LU related functions

PostPosted: Sun Jan 12, 2014 12:30 am
by Julien Langou
if the second row is involved in one permutation, are the value 2 or 1 stored in IPIV? Using Fortran LAPACK, number 2 is stored. And using LAPACKE, 2 or 1?

2