diff --git a/bench/kernel/lms/lms.c b/bench/kernel/lms/lms.c index 792c8fc67fd3824a44e450b4e789adf18b711606..42b192921cbebcb6750004042b7694de43fea434 100755 --- a/bench/kernel/lms/lms.c +++ b/bench/kernel/lms/lms.c @@ -78,8 +78,7 @@ void lms_init( void ) int k; lms_input[ 0 ] = 0.0; - _Pragma( "loopbound min 101 max 101" ) - for ( k = 0 ; k < N ; k += 2 ) { + { double v1, v2, r; const double scaleFactor = 0.000000000931322574615478515625; do { @@ -94,8 +93,27 @@ void lms_init( void ) // remap v1 and v2 to two Gaussian numbers double noise = 1 / r; // approximation of sqrt(0.96) * sqrt(-log(r)/r); - lms_input[ k + 1 ] = lms_sinus( k ) + noise * v2; - lms_input[ k + 2 ] = lms_sinus( k + 1 ) + noise * v1; + lms_input[1] = lms_sinus(1) + noise * v2; + } + + _Pragma( "loopbound min 100 max 100" ) + for ( k = 2 ; k < N ; k += 2 ) { + double v1, v2, r; + const double scaleFactor = 0.000000000931322574615478515625; + do { + // generate two random numbers between -1.0 and +1.0 + seed = seed * 1103515245 + 12345; + v1 = ( seed & 0x00007fffffff ) * scaleFactor - 1.0; + seed = seed * 1103515245 + 12345; + v2 = ( seed & 0x00007fffffff ) * scaleFactor - 1.0; + r = v1 * v1 + v2 * v2; + } while ( r > 1.0 ); + // radius < 1 + + // remap v1 and v2 to two Gaussian numbers + double noise = 1 / r; // approximation of sqrt(0.96) * sqrt(-log(r)/r); + lms_input[ k ] = lms_sinus(k) + noise * v2; + lms_input[ k + 1 ] = lms_sinus(k + 1) + noise * v1; } } @@ -166,9 +184,12 @@ int lms_return( void ) double sum = 0.0; _Pragma( "loopbound min 201 max 201" ) - for ( i = 0 ; i < N ; i++ ) - sum += lms_output[ i ]; - return ( int )( 1000000.0 * ( sum + 4.5052425 ) ); + for ( i = 0 ; i < N ; i++ ) { + sum += lms_output[i]; + } + + return ( int )( 1000000.0 * ( sum + 4.705719 ) ); + // How did this 'correct value' come to be? The previous calculation contained UB. // correct value: -4.505242517625447362661361694336 } diff --git a/bench/kernel/minver/minver.c b/bench/kernel/minver/minver.c index 2f3615e6a00d3cb9e1dda748b387ce5882d1a4ab..f417d1fc902d970ef20d74f6bddf0d44d9a2137c 100755 --- a/bench/kernel/minver/minver.c +++ b/bench/kernel/minver/minver.c @@ -104,7 +104,7 @@ int minver_minver( int side, double eps ) int work[ 500 ], i, j, k, iw; int r = 0; - double w, wmax, pivot, api, w1; + double w = 0, wmax, pivot, api, w1; if ( side < 2 || side > 500 || eps <= 0.0 ) return ( 999 ); diff --git a/bench/sequential/dijkstra/dijkstra.c b/bench/sequential/dijkstra/dijkstra.c index 912c382bbceb22a6a2b899ca4831ceaf74cd0694..7437c42ef43afe959b3502874b3246f17df283c7 100755 --- a/bench/sequential/dijkstra/dijkstra.c +++ b/bench/sequential/dijkstra/dijkstra.c @@ -132,8 +132,8 @@ int dijkstra_qcount( void ) int dijkstra_find( int chStart, int chEnd ) { int ch; - int prev, node; - int cost, dist; + int prev, node = 0; + int cost, dist = 0; int i; _Pragma( "loopbound min 100 max 100" ) diff --git a/bench/sequential/mpeg2/mpeg2.c b/bench/sequential/mpeg2/mpeg2.c index ffa5d18959a9f55d8bf1be8688b8ca32898c9268..62b8779ccd88dbf884680f5f2082f891704cd4ff 100755 --- a/bench/sequential/mpeg2/mpeg2.c +++ b/bench/sequential/mpeg2/mpeg2.c @@ -12447,7 +12447,7 @@ void mpeg2_dpframe_estimate( unsigned char *ref, unsigned char *mb, int i, { int pref, ppred, delta_x, delta_y; int is, js, it, jt, ib, jb, it0, jt0, ib0, jb0; - int imins, jmins, imint, jmint, iminb, jminb, imindmv, jmindmv; + int imins = 0, jmins = 0, imint = 0, jmint = 0, iminb = 0, jminb = 0, imindmv = 0, jmindmv = 0; int vmc, local_dist; @@ -12604,7 +12604,7 @@ void mpeg2_dpfield_estimate( unsigned char *topref, unsigned char *botref, { unsigned char *sameref, *oppref; int io0, jo0, io, jo, delta_x, delta_y, mvxs, mvys, mvxo0, mvyo0; - int imino, jmino, imindmv, jmindmv, vmc_dp, local_dist; + int imino = 0, jmino = 0, imindmv = 0, jmindmv = 0, vmc_dp = 0, local_dist = 0; /* Calculate Dual Prime distortions for 9 delta candidates */