int main(){ int size=4; float** a=array_initialize(size); float b[size]; float* x; create_a(a,size); create_b(b,size); clock_t time; time = clock(); x=lup_solve(a,b,size); time = clock() - time; printf("LUP-разложение (%d,%d) завершено за %f сек.\n",size, size, ((double)time/CLOCKS_PER_SEC)); printf("\n"); check(a,b,x,size); int i, j; printf("Матрица а\n"); printf(" \n"); for (i=0; i<size;i++){ for (j=0; j<size; j++){ printf("%f ", a[i][j]); } printf("\n");} printf("\n"); printf("B \n"); for (i=0; i<size;i++){ printf("%f ", b[i]); } printf("\n"); printf("A \n"); for (i=0; i<size;i++){ for (j = 0; j < size; j++) { printf("%f ", a[i][j]); }printf("\n"); } printf("\n"); printf("X \n"); for (i=0; i<size;i++){ printf("%f ", x[i]); } printf("\n"); return 0; }
extern symbol * add_s_to_b(symbol * p, const char * s) { int n = strlen(s); int k; if (p == 0) p = create_b(n); k = SIZE(p); { int x = k + n - CAPACITY(p); if (x > 0) p = increase_capacity(p, x); } { int i; for (i = 0; i < n; i++) p[i + k] = s[i]; } SIZE(p) += n; return p; }
extern symbol * copy_b(symbol * p) { int n = SIZE(p); symbol * q = create_b(n); move_to_b(q, n, p); return q; }
extern symbol * increase_capacity(symbol * p, int n) { symbol * q = create_b(CAPACITY(p) + n + EXTENDER); memmove(q, p, CAPACITY(p) * sizeof(symbol)); SIZE(q) = SIZE(p); lose_b(p); return q; }
/* Create a new string. */ extern struct str * str_new() { struct str * output = (struct str *) malloc(sizeof(struct str)); output->data = create_b(0); return output; }