double example - Double use case. (original) (raw)
Scilab 5.3.3
- Scilab help
- API Scilab
- double
- isDoubleType
- getScalarDouble
- getScalarComplexDouble
- createScalarDouble
- createScalarComplexDouble
- double example
Please note that the recommended version of Scilab is 2026.0.1. This page might be outdated.
However, this page did not exist in the previous stable version.
Scilab help >> API Scilab > double > double example
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