コード例 #1
0
ファイル: prodMatrice.c プロジェクト: vlnk/isima
int main(int argc, char** argv)
{

    /*var locales*/
    int taille_m, taille_v, i;
    double ** mat;
    double * vect;
    char nomVect[TAILLE_NOM];
    char nomMat[TAILLE_NOM];
    double * prod;

    /*demande de saisi du fichier de matrice*/
    printf("Saisissez le fichier de la matrice : ");
    fflush(stdout);
    scanf("%s%*c", nomMat);

    /*demande de saisi du fichier de vecteur*/
    printf("Saisissez le fichier du vecteur : ");
    fflush(stdout);
    scanf("%s%*c", nomVect);

    /*lecteur et affichage de la matrice*/
    mat = lectureMat(&taille_m, nomMat);
    afficheMat(taille_m, mat, nomMat);

    /*lecture et affichage du vecteur*/
    vect = lectureVect(&taille_v, nomVect);
    afficheVect(taille_v, vect, nomVect);

    /*Calcul et affichage du produit matriciel*/
    prod = prodMatVect(taille_v,taille_m,vect,mat);
    afficheVect(taille_m, prod, "produit");

    /*libération de la mémoire*/
    for(i = 0; i < taille_m; i++)
    {
        free(mat[i]);
    }

    free(mat);
    free(vect);
    free(prod);

    return 0;
}
コード例 #2
0
ファイル: moduleC_bold.c プロジェクト: ainafp/pyhrf
static PyObject *UtilsC_maximization_L(PyObject *self, PyObject *args){
    PyObject *Y,*m_A,*m_H,*L,*P,*X;
    PyArrayObject *Yarray,*m_Aarray,*m_Harray,*Larray,*Parray,*Xarray;
    int j,J,m,d,D,nCond,Ndrift,Nrep,nr;
    PyArg_ParseTuple(args, "OOOOOOiiiii",&Y,&m_A,&m_H,&L,&P,&X,&J,&D,&nCond,&Ndrift,&Nrep);
    Xarray   = (PyArrayObject *) PyArray_ContiguousFromObject(X,PyArray_INT,3,3); 
    m_Aarray = (PyArrayObject *) PyArray_ContiguousFromObject(m_A,PyArray_FLOAT64,2,2); 
    m_Harray = (PyArrayObject *) PyArray_ContiguousFromObject(m_H,PyArray_FLOAT64,1,1); 
    Yarray   = (PyArrayObject *) PyArray_ContiguousFromObject(Y,PyArray_FLOAT64,2,2); 
    Larray   = (PyArrayObject *) PyArray_ContiguousFromObject(L,PyArray_FLOAT64,2,2); 
    Parray   = (PyArrayObject *) PyArray_ContiguousFromObject(P,PyArray_FLOAT64,2,2); 
    npy_float64 *PP,*S,*H,*Yj,*Lj,*tmp,*XH;
    int *XX;
    PP = malloc(sizeof(npy_float64)*Nrep*Ndrift);
    S = malloc(sizeof(npy_float64)*Nrep);
    tmp = malloc(sizeof(npy_float64)*Nrep);
    H = malloc(sizeof(npy_float64)*D);
    Yj = malloc(sizeof(npy_float64)*Nrep);
    Lj = malloc(sizeof(npy_float64)*Ndrift);
    XX = malloc(sizeof(int)*Nrep*D);
    XH = malloc(sizeof(npy_float64)*Nrep*nCond);
    
    for (nr=0;nr<Nrep;nr++){
    for (d=0;d<Ndrift;d++){
        PP[nr+d*Nrep] = GetValue(Parray,nr,d);
        }
    }
    for (d=0;d<D;d++){
        H[d] = GetValue1D(m_Harray,d);
    }
    for (m=0;m<nCond;m++){
        for (d=0;d<D;d++){
            for (nr=0;nr<Nrep;nr++){
                XX[nr*D + d] = GetValue3DInt(Xarray,m,nr,d);
            }
        }
        prodMat3(XX,H,tmp,Nrep,1,D);
        for (nr=0;nr<Nrep;nr++){
            XH[m*Nrep + nr] = tmp[nr];
        }
    }
    for (j=0;j<J;j++){
        for (nr=0;nr<Nrep;nr++){
            S[nr] = GetValue(m_Aarray,j,0) * XH[nr];
            Yj[nr] = GetValue(Yarray,nr,j);
        }
        for (m=1;m<nCond;m++){
            for (nr=0;nr<Nrep;nr++){
                S[nr] +=  GetValue(m_Aarray,j,m) * XH[m*Nrep+nr];
            }
        }
        SubMatfastVect(S,Yj,Nrep);
        prodMatVect(PP,Yj,Lj,Ndrift,Nrep);
        for (d=0;d<Ndrift;d++){
            GetValue(Larray,d,j) = Lj[d];
        }
    }
    free(PP);
    free(S);
    free(H);
    free(Yj);
    free(Lj);
    free(XX);
    free(tmp);
    free(XH);
    Py_DECREF(m_Aarray);
    Py_DECREF(m_Harray);
    Py_DECREF(Xarray);
    Py_DECREF(Yarray);
    Py_DECREF(Larray);
    Py_DECREF(Parray);
    Py_INCREF(Py_None);
    return Py_None;
}