print.c (1727B)
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "tabledesign.h" 4 5 int print_entry(FILE *out, double *row, int order) 6 { 7 double **table; 8 double fval; 9 int ival; 10 int i, j, k; 11 int overflows; 12 13 table = malloc(8 * sizeof(double*)); 14 15 for (i = 0; i < 8; i++) 16 { 17 table[i] = malloc(order * sizeof(double)); 18 } 19 20 for (i = 0; i < order; i++) 21 { 22 for (j = 0; j < i; j++) 23 { 24 table[i][j] = 0.0; 25 } 26 27 for (j = i; j < order; j++) 28 { 29 table[i][j] = -row[order - j + i]; 30 } 31 } 32 33 for (i = order; i < 8; i++) 34 { 35 for (j = 0; j < order; j++) 36 { 37 table[i][j] = 0.0; 38 } 39 } 40 41 for (i = 1; i < 8; i++) 42 { 43 for (j = 1; j <= order; j++) 44 { 45 if (i - j >= 0) 46 { 47 for (k = 0; k < order; k++) 48 { 49 table[i][k] -= row[j] * table[i - j][k]; 50 } 51 } 52 } 53 } 54 55 overflows = 0; 56 for (i = 0; i < order; i++) 57 { 58 for (j = 0; j < 8; j++) 59 { 60 fval = table[j][i] * 2048.0; 61 if (fval < 0.0) 62 { 63 ival = (int) (fval - 0.5); 64 if (ival < -0x8000) 65 { 66 overflows++; 67 } 68 } 69 else 70 { 71 ival = (int) (fval + 0.5); 72 if (ival >= 0x8000) 73 { 74 overflows++; 75 } 76 } 77 fprintf(out, "%5d ", ival); 78 } 79 80 fprintf(out, "\n"); 81 } 82 83 for (i = 0; i < 8; i++) 84 { 85 free(table[i]); 86 } 87 free(table); 88 return overflows; 89 }