Hello,

I have noted a different behaviour of same gateway code between scilab 5.5.2 and scilab 6.

The statement

AssignOutputVariable(pvApiCtx, 1) = 1;

is supposed to allow to return as first output variable the first input variable of the scilab function.

Under scilab 5.5.2 the following code allows to modifiy the non-zeros terms of a sparse matrix a with elements of a vector v (with the syntax spset(a,v)), and outputs the modified matrix:

int sparse_set(char *fname)
{
    SciErr sciErr;
    int i,j,k;
    int* piAddr                     = NULL;
    int* vAddr          = NULL;
    int iRows                       = 0;
    int iCols                       = 0;
    int viRows                      = 0;
    int viCols                      = 0;
    int iNbItem                     = 0;
    int* piNbItemRow        = NULL;
    int* piColPos           = NULL;
    double* pdblReal        = NULL;
    double* vpdblReal   = NULL;

    CheckInputArgument(pvApiCtx, 2, 2);
    CheckOutputArgument(pvApiCtx, 0, 1);

    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddr);
sciErr = getSparseMatrix(pvApiCtx, piAddr, &iRows, &iCols, &iNbItem, &piNbItemRow, &piColPos, &pdblReal);
    sciErr = getVarAddressFromPosition(pvApiCtx, 2, &vAddr);
sciErr = getMatrixOfDouble(pvApiCtx, vAddr, &viRows, &viCols, &vpdblReal);

    memcpy(pdblReal, vpdblReal,min(iNbItem,viRows*viCols)*sizeof(double));

    AssignOutputVariable(pvApiCtx, 1) = 1;

    return 0;
}

Under Scilab 6 (function prototype has to be updated ;-)), the same code outputs the original, unmodified matrix a.

My question is : is the (expected) behavior of scilab 5.5.2 erroneous or is there a bug/regression in scilab 6 ?

Thanks for help

S.


--
Département de Génie Informatique
EA 4297 Transformations Intégrées de la Matière Renouvelable
Université de Technologie de Compiègne -  CS 60319
60203 Compiègne cedex   

_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev

Reply via email to