Quantcast
Channel: Active questions tagged ubuntu - Stack Overflow
Viewing all articles
Browse latest Browse all 6101

How to find determinant of a matrix Scilab API

$
0
0

I'm trying to calculate the determinant of a matrix using the SciDet function, but apparently it's just been removed. How can I calculate the determinant of a matrix in Scilab via C code in another way?

Code:

#include "api_scilab.h" // Header file for using SciLab API functions#include "Scierror.h" // Header file for handling SciLab errors#include "BOOL.h" // Header file for using BOOL type#include "localization.h" // Header file for string localizationstatic const char fname[] = "det"; // Function nameint sci_det(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt* opt, int nout, scilabVar* out){    int i = 0; // Loop variable    int n = 0; // Dimension of the system    double* A = NULL; // Coefficient matrix    int info; // Error code variable    double determinant = 1.0; // Determinant    /* Check the number of input and output arguments */    if (nin != 1 || nout != 1) {        Scierror(77, _("%s: Wrong number of input or output arguments: 1 input and 1 output expected.\n"), fname); // Error message output        return 1; // Return 1 in case of error    }    /* Check the types of input arguments */    if (scilab_isDouble(env, in[0]) == 0 || scilab_isMatrix2d(env, in[0]) == 0 ||        scilab_isComplex(env, in[0]) == 1) {        Scierror(999, _("%s: Wrong type for input argument. Double matrix expected.\n"), fname); // Error message output        return 1; // Return 1 in case of error    }    /* Get the dimensions of the coefficient matrix */    int rowA = 0, colA = 0;    scilab_getDim2d(env, in[0], &rowA, &colA); // Get matrix dimensions    n = rowA; // Store the dimension    /* Check that matrix A is square */    if (rowA != colA) {        Scierror(999, _("%s: Matrix of coefficients must be square.\n"), fname); // Error message output        return 1; // Return 1 in case of error    }    /* Get data from the input argument */    scilab_getDoubleArray(env, in[0], &A); // Get data from the input matrix    /* Calculate the determinant */    // Your determinant calculation code here    return 0; // Return 0 upon successful execution}

Compile:

files = ["foo6.c"];ilib_build('build_lib',['det','sci_det','csci6'],files,[]);--> exec("loader.sce"); Failed reference for dynamic library '/home/zoow/Рабочийстол/ScilabAPI/Matrix/Test//libbuild_lib.so'.There's been a mistake: /home/zoow/Рабочийстол/ScilabAPI/Matrix/Test//libbuild_lib.so: undefined symbol: sciDetFailed reference for dynamic library '/home/zoow/Рабочийстол/ScilabAPI/Matrix/Test//libbuild_lib.so'.There's been a mistake: /home/zoow/Рабочийстол/ScilabAPI/Matrix/Test//libbuild_lib.so: undefined symbol: sciDeton line 15 of the executable /home/zoow/Рабочийстол/ScilabAPI/Matrix/Test/loader.sceaddinter: The shared archive has not been downloaded: (null)

I am able to calculate the determinant in code, but I need to calculate it in Scilab and pass the value to C.


Viewing all articles
Browse latest Browse all 6101

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>