summaryrefslogtreecommitdiff
path: root/2.3-1/src/c/linearAlgebra/rcond
diff options
context:
space:
mode:
authorsiddhu89902017-04-13 10:42:02 +0530
committersiddhu89902017-04-13 10:42:02 +0530
commit160eb350837f8cd3cdb0943b5929e11f44036826 (patch)
tree5b8166b0ec4aca53df11365f8be96ac07088558f /2.3-1/src/c/linearAlgebra/rcond
parente59107e6bb2695fc20fd0ab229e296b9bf739fc4 (diff)
downloadScilab2C-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.c46
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