Path: blob/master/tools/sdk-tools/tabledesign/print.c
7861 views
#include <stdio.h>1#include <stdlib.h>2#include "tabledesign.h"34int print_entry(FILE *out, double *row, int order)5{6double **table;7double fval;8int ival;9int i, j, k;10int overflows;1112table = malloc(8 * sizeof(double*));1314for (i = 0; i < 8; i++)15{16table[i] = malloc(order * sizeof(double));17}1819for (i = 0; i < order; i++)20{21for (j = 0; j < i; j++)22{23table[i][j] = 0.0;24}2526for (j = i; j < order; j++)27{28table[i][j] = -row[order - j + i];29}30}3132for (i = order; i < 8; i++)33{34for (j = 0; j < order; j++)35{36table[i][j] = 0.0;37}38}3940for (i = 1; i < 8; i++)41{42for (j = 1; j <= order; j++)43{44if (i - j >= 0)45{46for (k = 0; k < order; k++)47{48table[i][k] -= row[j] * table[i - j][k];49}50}51}52}5354overflows = 0;55for (i = 0; i < order; i++)56{57for (j = 0; j < 8; j++)58{59fval = table[j][i] * 2048.0;60if (fval < 0.0)61{62ival = (int) (fval - 0.5);63if (ival < -0x8000)64{65overflows++;66}67}68else69{70ival = (int) (fval + 0.5);71if (ival >= 0x8000)72{73overflows++;74}75}76fprintf(out, "%5d ", ival);77}7879fprintf(out, "\n");80}8182for (i = 0; i < 8; i++)83{84free(table[i]);85}86free(table);87return overflows;88}899091