comparison gcc/testsuite/gcc.dg/pr82286.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
1 /* { dg-do compile } */
2 /* { dg-options "-O3 -Warray-bounds" } */
3
4 #include <stdio.h>
5 #include <math.h>
6
7 #define MAX_MATRIX_SIZE (10)
8
9 typedef struct
10 {
11 unsigned int nof_rows;
12 unsigned int nof_cols;
13 float data[MAX_MATRIX_SIZE][MAX_MATRIX_SIZE];
14 } MATRIX_TYPE;
15
16 extern void mtrx_decompose_matrix (MATRIX_TYPE * p_input_matrix);
17
18 void
19 mtrx_decompose_matrix (MATRIX_TYPE * p_input_matrix)
20 {
21 unsigned int row;
22 unsigned int col;
23 unsigned int sub;
24 float sum;
25 MATRIX_TYPE tmp;
26
27 for (row = 0; row < MAX_MATRIX_SIZE; row++) {
28 for (col = 0; col < MAX_MATRIX_SIZE; col++) {
29 tmp.data[row][col] = 0.0;
30 }
31 }
32 tmp.nof_cols = 0;
33 tmp.nof_rows = 0;
34
35 for (row = 0; row < p_input_matrix->nof_rows; row++) {
36 for (col = row; col < p_input_matrix->nof_cols; col++) {
37 sum = 0.0f;
38 for (sub = 0; sub < row; sub++) {
39 sum += tmp.data[row][sub] * tmp.data[col][sub];
40 }
41 sum = p_input_matrix->data[col][row] - sum;
42 if (row == col) {
43 if (sum >= 0.0) {
44 #if ERROR
45 tmp.data[row][col] = sqrtf (sum);
46 #else
47 tmp.data[row][col] = sum;
48 #endif
49 }
50 else {
51 tmp.data[row][col] = 0.0f;
52 }
53 }
54 else {
55 tmp.data[col][row] = sum / tmp.data[row][row];
56 }
57 }
58 }
59 }
60