/*--------------------------------------------------------------------------*/ static int getCommonAllocatedNamedMatrixOfPoly(void* _pvCtx, const char* _pstName, int _iComplex, int* _piRows, int* _piCols, int** _piNbCoef, double*** _pdblReal, double*** _pdblImg) { SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0; sciErr = readCommonNamedMatrixOfPoly(_pvCtx, _pstName, _iComplex, _piRows, _piCols, NULL, NULL, NULL); if (sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_NAMED_MATRIX_POLY, _("%s: Unable to get argument \"%s\""), _iComplex ? "getAllocatedNamedMatrixOfComplexPoly" : "getAllocatedNamedMatrixOfPoly", _pstName); printError(&sciErr, 0); return sciErr.iErr; } *_piNbCoef = (int*)MALLOC(sizeof(int) * *_piRows * *_piCols); sciErr = readCommonNamedMatrixOfPoly(_pvCtx, _pstName, _iComplex, _piRows, _piCols, *_piNbCoef, NULL, NULL); if (sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_NAMED_MATRIX_POLY, _("%s: Unable to get argument \"%s\""), _iComplex ? "getAllocatedNamedMatrixOfComplexPoly" : "getAllocatedNamedMatrixOfPoly", _pstName); printError(&sciErr, 0); return sciErr.iErr; } *_pdblReal = (double**)MALLOC(sizeof(double*) * *_piRows * *_piCols); for (int i = 0 ; i < *_piRows * *_piCols ; i++) { (*_pdblReal)[i] = (double*)MALLOC(sizeof(double) * (*_piNbCoef)[i]); } if (_iComplex) { *_pdblImg = (double**)MALLOC(sizeof(double*) * *_piRows * *_piCols); for (int i = 0 ; i < *_piRows * *_piCols ; i++) { (*_pdblImg)[i] = (double*)MALLOC(sizeof(double) * (*_piNbCoef)[i]); } } sciErr = readCommonNamedMatrixOfPoly(_pvCtx, _pstName, _iComplex, _piRows, _piCols, *_piNbCoef, *_pdblReal, _pdblImg == NULL ? NULL : *_pdblImg); if (sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_NAMED_MATRIX_POLY, _("%s: Unable to get argument \"%s\""), _iComplex ? "getAllocatedNamedMatrixOfComplexPoly" : "getAllocatedNamedMatrixOfPoly", _pstName); printError(&sciErr, 0); return sciErr.iErr; } return 0; }
/*--------------------------------------------------------------------------*/ static int getCommonAllocatedNamedSinglePoly(void* _pvCtx, const char* _pstName, int _iComplex, int* _piNbCoef, double** _pdblReal, double** _pdblImg) { SciErr sciErr; int iRows = 0; int iCols = 0; double* pdblReal = NULL; double* pdblImg = NULL; if(isNamedScalar(_pvCtx, _pstName) == 0) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_NAMED_SINGLE_POLY, _("%s: Wrong type for input argument \"%s\": A scalar expected.\n"), _iComplex ? "getAllocatedNamedSingleComplexPoly" : "getAllocatedNamedSinglePoly", _pstName); printError(&sciErr, 0); return sciErr.iErr; } sciErr = readCommonNamedMatrixOfPoly(_pvCtx, _pstName, _iComplex, &iRows, &iCols, _piNbCoef, &pdblReal, &pdblImg); if(sciErr.iErr) { addErrorMessage(&sciErr, API_ERROR_GET_ALLOC_NAMED_SINGLE_POLY, _("%s: Unable to get argument \"%s\""), _iComplex ? "getAllocatedNamedSingleComplexPoly" : "getAllocatedNamedSinglePoly", _pstName); printError(&sciErr, 0); return sciErr.iErr; } *_pdblReal = (double*)MALLOC(sizeof(double) * *_piNbCoef); memcpy(*_pdblReal, pdblReal, sizeof(double) * *_piNbCoef); if(_iComplex) { *_pdblImg = (double*)MALLOC(sizeof(double) * *_piNbCoef); memcpy(*_pdblImg, pdblImg, sizeof(double) * *_piNbCoef); } return 0; }
SciErr readNamedComplexMatrixOfPoly(void* _pvCtx, const char* _pstName, int* _piRows, int* _piCols, int* _piNbCoef, double** _pdblReal, double** _pdblImg) { return readCommonNamedMatrixOfPoly(_pvCtx, _pstName, 1, _piRows, _piCols, _piNbCoef, _pdblReal, _pdblImg); }