1extern void abort (void); 2 3typedef signed short int16_t; 4typedef unsigned short uint16_t; 5 6int16_t logadd (int16_t *a, int16_t *b); 7void ba_compute_psd (int16_t start); 8 9int16_t masktab[6] = { 1, 2, 3, 4, 5}; 10int16_t psd[6] = { 50, 40, 30, 20, 10}; 11int16_t bndpsd[6] = { 1, 2, 3, 4, 5}; 12 13void ba_compute_psd (int16_t start) 14{ 15 int i,j,k; 16 int16_t lastbin = 4; 17 18 j = start; 19 k = masktab[start]; 20 21 bndpsd[k] = psd[j]; 22 j++; 23 24 for (i = j; i < lastbin; i++) { 25 bndpsd[k] = logadd(&bndpsd[k], &psd[j]); 26 j++; 27 } 28} 29 30int16_t logadd (int16_t *a, int16_t *b) 31{ 32 return *a + *b; 33} 34 35int main (void) 36{ 37 int i; 38 39 ba_compute_psd (0); 40 41 if (bndpsd[1] != 140) abort (); 42 return 0; 43} 44 45