diff options
author | siddhu8990 | 2017-04-13 10:42:02 +0530 |
---|---|---|
committer | siddhu8990 | 2017-04-13 10:42:02 +0530 |
commit | 160eb350837f8cd3cdb0943b5929e11f44036826 (patch) | |
tree | 5b8166b0ec4aca53df11365f8be96ac07088558f /2.3-1/src/c/linearAlgebra/rcond | |
parent | e59107e6bb2695fc20fd0ab229e296b9bf739fc4 (diff) | |
download | Scilab2C-160eb350837f8cd3cdb0943b5929e11f44036826.tar.gz Scilab2C-160eb350837f8cd3cdb0943b5929e11f44036826.tar.bz2 Scilab2C-160eb350837f8cd3cdb0943b5929e11f44036826.zip |
Functions added - balance,rcond,obscont
Diffstat (limited to '2.3-1/src/c/linearAlgebra/rcond')
-rw-r--r-- | 2.3-1/src/c/linearAlgebra/rcond/drconda.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/2.3-1/src/c/linearAlgebra/rcond/drconda.c b/2.3-1/src/c/linearAlgebra/rcond/drconda.c new file mode 100644 index 00000000..2082e9de --- /dev/null +++ b/2.3-1/src/c/linearAlgebra/rcond/drconda.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2017 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Siddhesh Wani + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in + */ + +/*Funtion to find inverse condition number of square matrix*/ + +#include "lapack.h" +#include "stdlib.h" +#include "string.h" + +double drconda(double* in1, int rows) +{ + double *buf, *IPIV, *LDWORK, *LIWORK; + int INFO; + char one = '1'; + double ANORM; + double RCOND = 1; + + buf = (double*) malloc((double) rows*rows*sizeof(double)); + IPIV = (double*) malloc((double) rows*sizeof(double)); + LIWORK = (double*) malloc((double) rows*sizeof(double)); + LDWORK = (double*) malloc((double) 4*rows*sizeof(double)); + + /*Copy input in temp buf, as lapack modifies input*/ + memcpy(buf,in1,rows*rows*sizeof(double)); + + ANORM = dlange_(&one,&rows,&rows,buf,&rows,LDWORK); + + dgetrf_(&rows,&rows,buf,&rows,IPIV,&INFO); + + if(INFO == 0) + { + dgecon_(&one,&rows,buf,&rows,&ANORM,&RCOND,LDWORK,LIWORK,&INFO); + } + + return RCOND; + +}
\ No newline at end of file |