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; }
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; }