(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
pr82286.c
       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