- Справка Scilab
- API Scilab
- legacy
- API Scilab
- API types
- Getting started with API_Scilab
- API double functions
- API common functions
- API string functions
- API boolean functions
- API integer functions
- API list-type functions
- API polynomial functions
- API pointer functions
- API cell functions
- API struct functions
- API handle functions
- API optional functions
Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
API double functions
This page lists all the functions to manipulate Scilab native objects containing doubles.
scilabVar
                scilab_createDoubleMatrix(
                scilabEnv
                env, int dim, const int* dims, int complex)Create a double matrix with dim dimensions (dims[0], dims[1], ..., dims[dim-1]).
complex: 0 to real matrix or 1 to complex matrix
scilabVar
                scilab_createDoubleMatrix2d(
                scilabEnv
                env, int row, int col, int complex)Create a double matrix with 2 dimensions (row, col).
complex: 0 to real matrix or 1 to complex matrix
scilabVar
                scilab_createDoubleComplex(
                scilabEnv
                env, double real, double img)Create a scalar complex double.
scilabStatus
                scilab_getDoubleArray(
                scilabEnv
                env,
                scilabVar
                var, double** real)Get pointer on internal array of double of var.
scilabStatus
                scilab_getDoubleComplexArray(
                scilabEnv
                env,
                scilabVar
                var, double** real, double** img)Get pointers on internal arrays of double of var.
scilabStatus
                scilab_getDouble(
                scilabEnv
                env,
                scilabVar
                var, double* real)Get double value from an scalar double variable.
scilabStatus
                scilab_getDoubleComplex(
                scilabEnv
                env,
                scilabVar
                var, double* real, double* img)Get double values from an scalar double variable.
scilabStatus
                scilab_setDoubleArray(
                scilabEnv
                env,
                scilabVar
                var, const double* real)Set values of double variable var.
scilabStatus
                scilab_setDoubleComplexArray(
                scilabEnv
                env,
                scilabVar
                var, const double* real, const double* img)Set values of complex double variable var.
scilabStatus
                scilab_setDouble(
                scilabEnv
                env,
                scilabVar
                var, double real)Set value of a scalar double variable var.
scilabStatus
                scilab_setDoubleComplex(
                scilabEnv
                env,
                scilabVar
                var, double real, double img)Set values of a scalar complex double variable var.
Examples
#include "api_scilab.h" #include "Scierror.h" #include "localization.h" #include "sciprint.h" #include "sci_malloc.h" const char fname[] = "double_test"; int sci_double_test(scilabEnv env, int nin, scilabVar* in, int nopt, scilabOpt opt, int nout, scilabVar* out) { int i = 0; int inr1 = 0; int inc1 = 0; int size1 = 0; double* in1 = NULL; double in2 = 0; double* out1 = NULL; int* out2dims = NULL; double* out2 = NULL; double out3 = 0; if (nin != 2) { Scierror(999, _("%s: Wrong number of input arguments: %d expected.\n"), fname, 2); return SCILAB_ERROR; } if (nout != 3) { Scierror(999, _("%s: Wrong number of output arguments: %d expected.\n"), fname, 3); return SCILAB_ERROR; } //in[0] : matrix 2d of double if (scilab_isDouble(env, in[0]) == 0 || scilab_isMatrix(env, in[0]) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A double matrix expected.\n"), fname, 1); return SCILAB_ERROR; } size1 = scilab_getDim2d(env, in[0], &inr1, &inc1); scilab_getDoubleArray(env, in[0], &in1); //in[1] : double if (scilab_isDouble(env, in[1]) == 0 || scilab_isScalar(env, in[1]) == 0) { Scierror(999, _("%s: Wrong type for input argument #%d: A double expected.\n"), fname, 2); return SCILAB_ERROR; } scilab_getDouble(env, in[1], &in2); //out1 : matrix 2d of double with same size of in[0] out[0] = scilab_createDoubleMatrix2d(env, inr1, inc1, 0); scilab_getDoubleArray(env, out[0], &out1); for (i = 0; i < size1; ++i) { out1[i] = in1[i] * 10; } //out2 : 3d matrix of double out2dims = (int*)MALLOC(3 * sizeof(int)); out2dims[0] = inr1; out2dims[1] = inc1; out2dims[2] = 2; out[1] = scilab_createDoubleMatrix(env, 3, out2dims, 0); scilab_getDoubleArray(env, out[1], &out2); for (i = 0; i < size1; ++i) { out2[i] = in1[i] * 10; out2[i + size1] = in1[i] * 100; } //out3 : double out[2] = scilab_createDouble(env, in2 * 1000); return SCILAB_OK; }
Scilab test script
mkdir(pathconvert(TMPDIR+"/api_c/")); cd(pathconvert(TMPDIR+"/api_c/")); copyfile(SCI+"/modules/api_scilab/tests/unit_tests/api_c/double_test.c",pathconvert(TMPDIR+"/api_c/double_test.c",%F)); ilib_build("libdouble", ["double_test","sci_double_test", "csci6"],"double_test.c",[],"","",""); exec("loader.sce"); in1 = rand(3,4); in2 = rand(); [out1, out2, out3] = double_test(in1, in2); assert_checkequal(out1, in1 * 10); ref(:,:, 1) = in1 * 10; ref(:,:, 2) = in1 * 100; assert_checkequal(out2, ref); assert_checkequal(out3, in2 * 1000); disp("OK");
| Report an issue | ||
| << Getting started with API_Scilab | API Scilab | API common functions >> |