# 多項式の書き込み (Scilab ゲートウェイ)

リスト中に多項式の行列を追加する方法.

### 呼び出し手順

`SciErr createMatrixOfPolyInList(void* _pvCtx, int _iVar, int* _piParent, int _iItemPos, char* _pstVarName, int _iRows, int _iCols, const int* _piNbCoef, const double* const* _pdblReal)`
`SciErr createComplexMatrixOfPolyInList(void* _pvCtx, int _iVar, int* _piParent, int _iItemPos, char* _pstVarName, int _iRows, int _iCols, const int* _piNbCoef, const double* const* _pdblReal, const double* const* _pdblImg)`

`SciErr createMatrixOfPolyInNamedList(void* _pvCtx, const char* _pstName, int* _piParent, int _iItemPos, char* _pstVarName, int _iRows, int _iCols, const int* _piNbCoef, const double* const* _pdblReal)`
`SciErr createComplexMatrixOfPolyInNamedList(void* _pvCtx, const char* _pstName, int* _piParent, int _iItemPos, char* _pstVarName, int _iRows, int _iCols, const int* _piNbCoef, const double* const* _pdblReal, const double* const* _pdblImg)`

### 引数

_pvCtx

Scilab環境ポインタ, api_scilab.hで定義された"pvApiCtx"で指定.

_iVar

_pstName

"名前指定" 関数の変数名.

_piParent

_iItemPos

リストにおける新規要素の位置.

_pstVarName

_iRows

_iCols

_piNbCoef

_pdblReal

_pdblImg

SciErr

エラーメッセージの履歴と最初のエラー番号が保存されるエラー構造体.

### 説明

このヘルプはリスト中に多項式を追加する方法を説明します.

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

```#include "api_scilab.h"
int list_createlist(char *fname,void* pvApiCtx)
{
SciErr sciErr;
int* piChild            = NULL;
double pdblData1[]      = {1,3,5,2,4,6};
double pdblData2[]      = {6,4,2,5,3,1};
char *pstData[]         = {"may","be","the","with","puffin","you"};
short psData[]          = {1,4,2,5,3,6};
double pdblPoly1[]      = {1};
double pdblPoly2[]      = {-2,-1};
double pdblPoly3[]      = {1,2,3};
double pdblPoly4[]      = {-4,-3,-2,-1};
double pdblPoly5[]      = {1,2,3,4,5};
double pdblPoly6[]      = {-6,-5,-4,-3,-2,-1};
double *pdblPoly[]      = {pdblPoly1, pdblPoly3, pdblPoly5, pdblPoly2, pdblPoly4, pdblPoly6};
int piCoef[]            = {1,3,5,2,4,6};
int piNbItemRow[]       = {1,2,1};
int piColPos[]          = {8,4,7,2};
double pdblSReal[]      = {1,2,3,4};
double pdblSImg[]       = {4,3,2,1};
int piBool[]            = {1,0,1,0,1,0,1,0,1};
double* pdblDataPtr     = NULL;
sciErr = createList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, 8, &piAddr);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createComplexMatrixOfDoubleInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 1, 3, 2, pdblData1, pdblData2);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createMatrixOfStringInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 2, 2, 3, pstData);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createMatrixOfInteger16InList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 3, 2, 3, psData);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createMatrixOfPolyInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 4, "x", 3, 2, piCoef, pdblPoly);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createComplexSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 5, 3, 10, 4, piNbItemRow, piColPos, pdblSReal, pdblSImg);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createMatrixOfBooleanInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 6, 3, 3, piBool);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createBooleanSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 7, 3, 10, 4, piNbItemRow, piColPos);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createListInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piAddr, 8, 3, &piChild);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createMatrixOfDoubleInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 1, 3, 2, pdblData1);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
sciErr = createSparseMatrixInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 2, 3, 10, 4, piNbItemRow, piColPos, pdblSReal);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
pdblDataPtr     = (double*)malloc(sizeof(double) * 4);
pdblDataPtr[0]  = 1;
pdblDataPtr[1]  = 2;
pdblDataPtr[2]  = 3;
pdblDataPtr[3]  = 4;
sciErr = createPointerInList(pvApiCtx, nbInputArgument(pvApiCtx) + 1, piChild, 3, pdblDataPtr);
if(sciErr.iErr)
{
printError(&sciErr, 0);
return 0;
}
AssignOutputVariable(pvApiCtx, 1) = nbInputArgument(pvApiCtx) + 1;
return 0;
}```

### Scilab テストスクリプト

```size_ref    = 8;
type_ref    = ["constant","string","int16","polynomial", "sparse", "boolean", "boolean sparse", "list"];
dim_ref     = list([3,2],[2,3],[2,3],[3,2],[3,10],[3,3],[3,10],3);
l = list_createlist();
if size(l) <> size_ref then error("failed"), end
for i = 1 : size_ref
if typeof(l(i)) <> type_ref(i) then error("failed"), end
if size(l(i)) <> dim_ref(i) then error("failed"), end
end```
 Report an issue << 多項式の読み込み (Scilab ゲートウェイ) List manipulation 疎行列の読み込み (Scilab ゲートウェイ) >>