# doubleの例

doubleの使用例.

### 説明

この例はdouble変数を取得し,Scilabに戻す手順を示します.

### ゲートウェイのソース

```#include "api_scilab.h"
int doubleExample(char *fname,void* pvApiCtx)
{
SciErr sciErr;
int iType   = 0;
int iRet    = 0;
CheckInputArgument(pvApiCtx, 1, 1);
CheckOutputArgument(pvApiCtx, 0, 1);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
{
iRet = createEmptyMatrix(pvApiCtx, nbInputArgument(pvApiCtx) + 1);
if(iRet)
{
return iRet;
}
AssignOutputVariable(pvApiCtx, 1) = 0;
}
{
{
double dblReal	= 0;
double dblImg   = 0;
{
iRet = getScalarComplexDouble(pvApiCtx, piAddr, &dblReal, &dblImg);
if(iRet)
{
return iRet;
}
iRet = createScalarComplexDouble(pvApiCtx, nbInputArgument(pvApiCtx) + 1, dblReal, dblImg);
if(iRet)
{
return iRet;
}
}
else
{
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;
{
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 >>