Scilab 5.5.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の例
doubleの使用例.
説明
この例はdouble変数を取得し,Scilabに戻す手順を示します.
ゲートウェイのソース
#include "api_scilab.h" int doubleExample(char *fname,unsigned long fname_len) { SciErr sciErr; int* piAddr = NULL; int iType = 0; int iRet = 0; CheckInputArgument(pvApiCtx, 1, 1); CheckOutputArgument(pvApiCtx, 0, 1); sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr); if(sciErr.iErr) { printError(&sciErr, 0); return 0; } if(isEmptyMatrix(pvApiCtx, piAddr)) { iRet = createEmptyMatrix(pvApiCtx, nbInputArgument(pvApiCtx) + 1); if(iRet) { return iRet; } AssignOutputVariable(pvApiCtx, 1) = 0; } 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, nbInputArgument(pvApiCtx) + 1, dblReal, dblImg); if(iRet) { return iRet; } } else { iRet = getScalarDouble(pvApiCtx, piAddr, &dblReal); if(iRet) { return iRet; } iRet = createScalarDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 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, nbInputArgument(pvApiCtx) + 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, nbInputArgument(pvApiCtx) + 1, iRows, iCols, pdblReal); if(sciErr.iErr) { printError(&sciErr, 0); return sciErr.iErr; } } } AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1; } return 0; }
Scilabテストスクリプト
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
Report an issue | ||
<< createScalarComplexDouble | double | handle >> |