コード例 #1
0
SciErr getComplexZMatrixOfDouble(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, doublecomplex** _pdblZ)
{
    SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0;
    double *pdblReal = NULL;
    double *pdblImg	 = NULL;

    sciErr = getCommonMatrixOfDouble(_pvCtx, _piAddress, isVarComplex(_pvCtx, _piAddress), _piRows, _piCols, &pdblReal, &pdblImg);
    if(sciErr.iErr)
    {
        addErrorMessage(&sciErr, API_ERROR_GET_ZDOUBLE, _("%s: Unable to get argument #%d"), "getComplexZMatrixOfDouble", getRhsFromAddress(_pvCtx, _piAddress));
        return sciErr;
    }

    *_pdblZ	= oGetDoubleComplexFromPointer(pdblReal, pdblImg, *_piRows * *_piCols);
    return sciErr;
}
コード例 #2
0
SciErr getComplexZMatrixOfDouble(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, doublecomplex** _pdblZ)
{
    int iSize = 0;
    double *pdblReal = NULL;

    SciErr sciErr = getCommonMatrixOfDouble(_pvCtx, _piAddress, 'z', 0, _piRows, _piCols, &pdblReal, NULL);
    if (sciErr.iErr)
    {
        addErrorMessage(&sciErr, API_ERROR_GET_ZDOUBLE, _("%s: Unable to get argument #%d"), "getComplexZMatrixOfDouble", getRhsFromAddress(_pvCtx, _piAddress));
        return sciErr;
    }

    types::Double* pDbl = (types::Double*)_piAddress;
    pDbl->convertToZComplex();
    *_pdblZ	= (doublecomplex*)(pDbl->get());
    return sciErr;
}
コード例 #3
0
SciErr getComplexMatrixOfDoubleAsInteger(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int** _piReal, int** _piImg)
{
    double* pdblReal = NULL;
    double* pdblImg  = NULL;

    SciErr sciErr = getCommonMatrixOfDouble(_pvCtx, _piAddress, 'i', 1, _piRows, _piCols, &pdblReal, &pdblImg);
    if (sciErr.iErr)
    {
        return sciErr;
    }

    types::Double* pD = (types::Double*)_piAddress;
    //convert values and view of data to int and int*
    pD->convertToInteger();

    *_piReal = (int*)pD->get();
    *_piImg = (int*)pD->getImg();

    return sciErr;
}
コード例 #4
0
SciErr getMatrixOfDoubleAsInteger(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, int** _piReal)
{
    double* pdblReal = NULL;
    int iSize = 0;
    SciErr sciErr = getCommonMatrixOfDouble(_pvCtx, _piAddress, 'i', 0, _piRows, _piCols, &pdblReal, NULL);
    if (sciErr.iErr)
    {
        return sciErr;
    }

    iSize = *_piRows **_piCols;
    *_piReal = (int*)pdblReal;

    //Warning we overwrite double by int !!!!
    C2F(entier)(&iSize, pdblReal, *_piReal);

    types::Double* pD = (types::Double*)_piAddress;
    pD->setViewAsInteger();

    return sciErr;
}
コード例 #5
0
/*--------------------------------------------------------------------------*/
static int getCommonScalarDouble(void* _pvCtx, int* _piAddress, int _iComplex, double* _pdblReal, double* _pdblImg)
{
    int iRows = 0;
    int iCols = 0;

    double* pdblReal = NULL;
    double* pdblImg = NULL;

    SciErr sciErr = getCommonMatrixOfDouble(_pvCtx, _piAddress, '$', _iComplex, &iRows, &iCols, &pdblReal, &pdblImg);
    if (sciErr.iErr)
    {
        addErrorMessage(&sciErr, API_ERROR_GET_SCALAR_DOUBLE, _("%s: Unable to get argument #%d"), _iComplex ? "getScalarComplexDouble" : "getScalarDouble", getRhsFromAddress(_pvCtx, _piAddress));
        printError(&sciErr, 0);
        return sciErr.iErr;
    }

    if (isScalar(_pvCtx, _piAddress) == 0)
    {
        addErrorMessage(&sciErr, API_ERROR_GET_SCALAR_DOUBLE, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), _iComplex ? "getScalarComplexDouble" : "getScalarDouble", getRhsFromAddress(_pvCtx, _piAddress));
        printError(&sciErr, 0);
        return sciErr.iErr;
    }

    if (_pdblReal != NULL)
    {
        *_pdblReal	= pdblReal[0];
    }

    if (_iComplex == 1 && _pdblImg != NULL && pdblImg != NULL)
    {
        *_pdblImg		= pdblImg[0];
    }
    else if (_pdblImg != NULL)
    {
        *_pdblImg = 0;
    }

    return 0;
}
コード例 #6
0
SciErr readCommonNamedMatrixOfDouble(void* _pvCtx, const char* _pstName, int _iComplex, int* _piRows, int* _piCols, double* _pdblReal, double* _pdblImg)
{
    SciErr sciErr; sciErr.iErr = 0; sciErr.iMsgCount = 0;
    int* piAddr		= NULL;
    double* pdblReal	= NULL;
    double* pdblImg		= NULL;
    int iSize		= 0;
    int iOne		= 1;

    sciErr = getVarAddressFromName(_pvCtx, _pstName, &piAddr);
    if(sciErr.iErr)
    {
        addErrorMessage(&sciErr, API_ERROR_READ_NAMED_DOUBLE, _("%s: Unable to get variable \"%s\""), _iComplex ? "readNamedComplexMatrixOfDouble" : "readNamedMatrixOfDouble", _pstName);
        return sciErr;
    }

    sciErr = getCommonMatrixOfDouble(_pvCtx, piAddr, _iComplex, _piRows, _piCols, &pdblReal, &pdblImg);
    if(sciErr.iErr)
    {
        addErrorMessage(&sciErr, API_ERROR_READ_NAMED_DOUBLE, _("%s: Unable to get variable \"%s\""), _iComplex ? "readNamedComplexMatrixOfDouble" : "readNamedMatrixOfDouble", _pstName);
        return sciErr;
    }

    if(_pdblReal == NULL || (_iComplex && _pdblImg == NULL))
    {
        return sciErr;
    }

    iSize = (*_piRows) * (*_piCols);
    /* dcopy source to dest */
    C2F(dcopy)(&iSize, pdblReal, &iOne, _pdblReal, &iOne);
    if(_iComplex)
    {
        C2F(dcopy)(&iSize, pdblImg, &iOne, _pdblImg, &iOne);
    }

    return sciErr;
}
コード例 #7
0
SciErr getComplexMatrixOfDouble(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, double** _pdblReal, double** _pdblImg)
{
    return getCommonMatrixOfDouble(_pvCtx, _piAddress, '$', 1, _piRows, _piCols, _pdblReal, _pdblImg);
}
コード例 #8
0
SciErr getMatrixOfDouble(void* _pvCtx, int* _piAddress, int* _piRows, int* _piCols, double** _pdblReal)
{
    return getCommonMatrixOfDouble(_pvCtx, _piAddress, '$', 0, _piRows, _piCols, _pdblReal, NULL);
}