void altoCalculamiento::run() { /* getFieldSize(); getGraphDefinition(); getCoordinates();*/ qDebug("Working..."); establecerLimites(); establecerDefinicion(); crearMatriz(); FILE *f; for(int i=0; i<cantidad_de_antenas; ++i) { if(!(f = fopen(antennaFileName[i], "r"))) { qDebug("no puedo abrirlo che "); return; } abrirArchivo(f); calcular(); } emit done(S, cant_filas, cant_columnas); saveData("out.dat"); //liberarMatriz(S); //nooooo!! lo hace el destructor return; // salir de run() es como salir de main(), el thread se cierra. // exec(); //exec permite continuar el loop del thread, para usar signals }
matrix_t::matrix_t(matrix_inx_t m,matrix_inx_t n): traspuesta_(false), M_(NULL), m_(m), n_(n) { crearMatriz(); }
void matrix_t::redimensiona(matrix_inx_t m,matrix_inx_t n) { destruirMatriz(); m_=m; n_=n; crearMatriz(); }
int main(void) { crearMatriz(); if(mover(1,2,2)) printf("Aca ta"); else printf("deadlock jaja"); mostrar(); return 0; }
int main(void) { int iRen = 5; int iCol = 6; float** fMat = crearMatriz(iRen,iCol); llenarMatriz(fMat,iRen,iCol); imprimirMatriz(fMat,iRen,iCol); destruirMatriz(fMat,iRen); return 0; }
int* prodmatricial (int m1[][COL],int maxf1,int maxc1,int m2[][FIL],int maxf2,int maxc2) { int *m3,i,j,k; if(maxc1!=maxf2&&maxc1!=0&&maxf2!=0) return NULL; m3=crearMatriz(maxf1,maxc2); if(!m3) return NULL; for(i=0;i<maxf1;i++) for(j=0;j<maxc2;j++) *(m3+i*maxc2+j)=0; for(i=0;i<maxf1;i++) { for(j=0;j<maxc2;j++) { for(k=0;k<maxc1;k++) *(m3+i*maxc2+j)+=(m1[i][k]*m2[k][j]); } } return m3; }
int main (int argc, char *argv[]){ double *A; // Matriz A double *B; // Matriz B double *C; // Matriz C double timetick; //El tamano de la matriz sera n= N*r , donde N y r se reciben //por parametro se tendran N*N bloques de r*r cada uno if (argc < 4){ printf("\n Falta un parametro "); printf("\n 1. Cantidad de bloques por dimension "); printf("\n 2. Dimension de cada bloque "); printf("\n 3. 0/1 para imprimir/no imprimir resultados "); return 0; } int N = atoi(argv[1]); int r = atoi(argv[2]); int imprimir=atoi(argv[3]); int n = N*r; //dimension de la matriz int sizeMatrix=n*n; //cantidad total de datos matriz int sizeBlock=r*r; //cantidad total de datos del bloque int i; A= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para A B= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para B C= (double *)malloc(sizeMatrix*sizeof(double)); //aloca memoria para C crearMatriz(A, sizeMatrix); //Inicializa A crearIdentidad(B,sizeBlock,sizeMatrix,N,r); //Inicializa B como matriz identidad timetick = dwalltime(); producto(A,B,C,r,N,sizeMatrix,sizeBlock); printf("Tiempo en segundos %f \n", dwalltime() - timetick); //tiempo if (imprimir ==1){ printf("\n\n A (como esta almacenada): \n" ); imprimeVector(A, sizeMatrix); printf("\n\n B (como esta almacenada): \n" ); imprimeVector(B,sizeMatrix); printf("\n\n A: \n" ); imprimeMatriz(A,N,r); printf(" \n\n B: \n" ); imprimeMatriz(B,N,r); printf("\n\n C: \n" ); imprimeMatriz(C,N,r); } printf(" \n\n Realizando comprobacion ... \n" ); for (i=0;i<sizeMatrix ;i++ ) { if (A[i]!=C[i]) { printf("\n Error %f", C[i] ); } } //imprimir tiempo free(A); free(B); free(C); return 0; } //FIN MAIN
int main(int argc, char *argv[]) { MATRIZ m; int i,j,k,k1,k2,p,I,J,x,v,sem,bd,br,bl,vec, CO2, // Numero de produccion de CO2 PMC, FE, X, // Numero de impurezas Otot, COtot, CO, O; double CO2p,Oc,COc,Xc,suma,produc,q,y,yoc,yo,kco,kx,sO,s2O,sCO,s2CO,sCO2,s2CO2,s2X,sigma[4],resta,invN,invNP,inv; char sal[99]; FILE *fp; srand(rdtsc()); sprintf(sal,"ZGBHa1%d %d %d %lf.dat",L,Cal,pasos,yx); fp = fopen(sal,"w"); i=0; j=0; k=0; invN=(double)1/(N); invNP=(double)(invN/(pasos)); inv=((pasos*N)-1); inv=(double)(1/(inv)); //___________________creamos la matriz de vecinos_____________ m = crearMatriz(); //____________________________Probabilidad Yco_________________________ y=yx; for (y=yx;y<1;y+=0.01) { yo = 1-y-yx; yoc = yo+y; p=0; CO=0; CO2=0; O=0; FE=N; X=0; s2O=0; s2CO=0; s2X=0; sigma[0]=0;sigma[1]=0;sigma[2]=0; sigma[3]=0; Oc=0; COc=0; produc=0; s2CO2=0; Xc=0; //____________________________Iniciamos la matriz y calentamos_______________________ warm(y, m, &FE, &CO, &O, &CO2, &X); //____________________________Llenamos la matriz________________________ p=0; for(p=0;p<(pasos);++p) { J=0; for(J=0; J < N; ++J) { I = N * ALEATORIO; if (m.cell[I] == 0) { //____________________________Desorpción________________________________ /* if (Cell[I]==1){ q=((double)rand()/RAND_MAX); if (q<kco){ CO[0]=CO[0]-1; Cell[I]=0; } } if (Cell[I]==2){ q=((double)rand()/RAND_MAX); if (q<kx){ CO[0]=CO[0]-1; Cell[I]=0; } } */ //______________________________Absorcion___________________________________ q = ALEATORIO; //__________________________________ CO=1 if (q <= y) { // Probabilidad de absorcion de CO m.cell[I] = MONOXIDO; reaccionCO(m, I, &FE, &O); if (m.cell[I] == MONOXIDO) { ++CO; --FE; } else if (m.cell[I] == LIBRE) ++CO2; } //__________________________________ O=-1 else if (q < yoc) { // Probabilidad de absorcion de O2 v = 2 * ALEATORIO; if (v == 0) { k2 = m.l[I]; k1 = m.r[I]; if (m.cell[k1]==LIBRE && m.cell[k2]==LIBRE){ m.cell[m.l[I]] = OXIGENO; m.cell[m.r[I]] = OXIGENO; k=k1; reaccionO2(m, I, k, &FE, &CO, &CO2); if (m.cell[k] == OXIGENO) {++O; --FE;} else if (m.cell[I] == LIBRE) ++CO2; k=k2; reaccionO2(m, I, k, &FE, &CO, &CO2); if (m.cell[k] == OXIGENO) {++O; --FE;} else if (m.cell[I] == LIBRE) ++CO2; } } else { k2 = m.u[I]; k1 = m.d[I]; if (m.cell[m.u[I]]==0 && m.cell[m.d[I]]==0) { m.cell[m.u[I]] = OXIGENO; m.cell[m.d[I]] = OXIGENO; k = k1; reaccionO2(m,I,k,&FE, &CO, &CO2); if (m.cell[k] == OXIGENO) {++O; --FE;} else if (m.cell[I] == LIBRE) ++CO2; k = k2; reaccionO2(m, I, k, &FE, &CO, &CO2); if (m.cell[k] == OXIGENO) { ++O; --FE; } else if (m.cell[I] == LIBRE) ++CO2; } } } else { m.cell[I] = IMPUREZA; ++X; --FE; } } } //} Oc += O; COc += CO; Xc += X; //produc=CO2[0]; s2O += O*O; s2CO += CO*CO; s2CO2 += CO2*CO2; suma = FE+O+CO; } produc = CO2; //________________________________Promedios___________________ suma=((double)suma*invNP); Oc=((double)Oc*invNP); COc=((double)COc*invNP); produc=((double)produc*(invNP)); Xc=((double)Xc*(invNP)); //__________________________Promedios del cuadrado s2O=((double)s2O*invNP); s2CO=((double)s2CO*invNP); s2CO2=((double)s2CO2*invNP); //________________________________Error del O_________________ sigma[0]=s2O-(Oc*Oc); sigma[0]=(double)(sigma[0])*inv; sigma[0]=sqrt(sigma[0]); //_______________________________Error del CO sigma[1]=s2CO-(COc*COc); sigma[1]=(double)(sigma[1])*inv; sigma[1]=sqrt(sigma[1]); //_______________________________Error del CO2 sigma[2]=s2CO2-(produc*produc); sigma[2]=(double)(sigma[2])*inv; sigma[2]=sqrt(sigma[2]); //_______________________________Error de X sigma[3]=s2X-(Xc*Xc); sigma[3]=(double)(sigma[3])*inv; sigma[3]=sqrt(sigma[3]); fprintf(fp,"%.4lf %.4lf %.4lf %lf %lf %lf %lf %lf %lf %lf\n",y,Oc,COc,produc,Xc,suma,sigma[0],sigma[1],sigma[2],sigma[3]); } fclose(fp); return 0; }