int main(int argc, char* argv[]) { printf("Gauss Sequential\n"); n=5; if(argc>=2) n = atoi(argv[1]); printf("N=%i\n",n); nn = n+2; h = 2.0/n; hh = h*h; char mode='i'; // e for Err or i for iteration int iterations; double errLimit; if(argc>=4) { if(argv[2][0] == 'i') { mode = 'i'; iterations = atoi(argv[3]); } if(argv[2][0] == 'e') { mode = 'e'; errLimit = atof(argv[3]); } } u=createMat(n); double wt = omp_get_wtime(); clock_t t = clock(); if(mode=='i') { gaussIterations(iterations); } else { gaussErr(errLimit); } wt = omp_get_wtime()-wt; t = clock()-t; //output section printf("Thresold:\t%f\n",lastErr); printf("Iterations:\t%i\n",lastIteration); printf("W Time:\t%f\n",wt); printf("C Time:\t%f\n",((float)t)/CLOCKS_PER_SEC); //writepng("img.png", u, n+2, n+2); writeImg (n+2, u); if(argc>=5 && argv[4][0]=='p') print(u, nn); }
void srf_write(FILE * const ofP, struct srf * const srfP) { uint8_t srfCsum; /* checksum value in SRF image */ size_t padLen; unsigned int i; size_t bytesWritten; padLen = 1; /* initial value */ if (!checkHeader(&srfP->header)) pm_error("invalid srf header"); if (!writeHeader(ofP, &srfP->header)) pm_error("write srf header"); padLen += lenHeader(&srfP->header); for (i = 0; i < srfP->header.img_cnt; ++i) { if (!writeImg(ofP, i, &srfP->imgs[i])) pm_error("invalid srf image %u", i); padLen += lenImg(&srfP->imgs[i]); } /* Pad to 256 bytes */ padLen = 256 - (padLen % 256); if (padLen) { char * d; size_t bytesWritten; MALLOCARRAY(d, padLen); if (!d) pm_error("Could not allocate memory for %u bytes of padding", (unsigned)padLen); memset(d, 0xff, padLen); bytesWritten = fwrite(d, 1, padLen, ofP); if (bytesWritten != padLen) pm_error("unable to 0xff pad file"); free(d); } /* Write out checksum byte */ srfCsum = 0xff - csum(srfP, padLen) + 1; bytesWritten = fwrite(&srfCsum, 1, 1, ofP); if (bytesWritten != 1) pm_error("unable to write checksum"); }
int main ( int argc, char *argv[] ) { printf("Jacobi Sequential\n"); if(argc>=2) n = atoi(argv[1]); else n = 6; realSize = n + 2; h = 2.0/n; hh=h*h; u1 = createMat(n); u2 = createMat(n); if(argc>=3) { if(argv[2][0] == 'i') { mode = 'i'; iterationsLeft = atoi(argv[3]); } else if(argv[2][0] == 'e') { mode = 'e'; errLimit = atof(argv[3]); } } double wt = omp_get_wtime(); clock_t t = clock(); double err; if(mode=='i') { iterations=iterationsLeft; for(int i=0; i<(iterationsLeft/2)-1; i++) { updateMat(u1, u2); updateMat(u2, u1); } updateMat(u1, u2); err = updateMatE(u2, u1); } if(mode=='e') { err = 2*errLimit; iterations=0; int iterBlock=100; while(err>errLimit) { for(int i=0; i<(iterBlock/2)-1; i++) { updateMat(u1, u2); updateMat(u2, u1); } updateMat(u1, u2); err=updateMatE(u2, u1); iterations += iterBlock; } } wt = omp_get_wtime()-wt; t = clock()-t; printf("Thresold:\t%f\n",err); printf("Iterations:\t%i\n",iterations); printf("W Time:\t%f\n",wt); printf("C Time:\t%f\n",((float)t)/CLOCKS_PER_SEC); writeImg (n+2, u1); if(argc>=5 && argv[4][0] == 'p') print(u1, realSize); return 0; }