Scilab 5.3.0
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
double example
Double use case.
Description
This example shows how to get a double variable and return it to Scilab.
Gateway Source
int doubleExample(char *fname,unsigned long fname_len) { SciErr sciErr; int* piAddr = NULL; int iType = 0; int iRet = 0; CheckRhs(1,1); CheckLhs(0,1); sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } LhsVar(1) = 0; if(isEmptyMatrix(pvApiCtx, piAddr)) { iRet = createEmptyMatrix(pvApiCtx, Rhs + 1); if(iRet) { return iRet; } } else if(isDoubleType(pvApiCtx, piAddr)) { if(isScalar(pvApiCtx, piAddr)) { double dblReal = 0; double dblImg = 0; if(isVarComplex(pvApiCtx, piAddr)) { iRet = getScalarComplexDouble(pvApiCtx, piAddr, &dblReal, &dblImg); if(iRet) { return iRet; } iRet = createScalarComplexDouble(pvApiCtx, Rhs + 1, dblReal, dblImg); if(iRet) { return iRet; } } else { iRet = getScalarDouble(pvApiCtx, piAddr, &dblReal); if(iRet) { return iRet; } iRet = createScalarDouble(pvApiCtx, Rhs + 1, dblReal); if(iRet) { return iRet; } } } else { int iRows = 0; int iCols = 0; double* pdblReal = NULL; double* pdblImg = NULL; if(isVarComplex(pvApiCtx, piAddr)) { sciErr = getComplexMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblReal, &pdblImg); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } sciErr = createComplexMatrixOfDouble(pvApiCtx, Rhs + 1, iRows, iCols, pdblReal, pdblImg); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } } else { sciErr = getMatrixOfDouble(pvApiCtx, piAddr, &iRows, &iCols, &pdblReal); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, iRows, iCols, pdblReal); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } } } LhsVar(1) = Rhs+1; } return 0; }
Scilab test script
a = 1; b = %i; c = [1,2,3;4,5,6]; d = c(1:$) + c($:-1:1) * %i; doubleExample(a) == a doubleExample(b) == b doubleExample(c) == c doubleExample(d) == d
<< createScalarComplexDouble | double | integer >> |