[E-6]
Write a function that operates on two arrays of double precision floats, a
and b
. Both arrays are the same size. For each index j, compute
(a[j]-b[j])2
and add that to a sum.
Output of a test run:
x: 2.0000 0.0000 -3.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 y: 2.0000 -2.0000 -3.0000 2.0000 2.0000 2.0000 -2.0000 2.0000 2.0000 2.0000 sum = 32.000000
For further testing, initialize the arrays with random values using puzzle D07 or D10. Here is a testing framework:
double squareDiffArray( int size, double a[], double b[] ) { ... } void printArrayDouble( int size, double arr[] ) { const int N = 5; int j; for ( j=0; j<size; j++ ) { if ( j%N == N-1 ) printf("%8.4lf\n", arr[j] ); else printf("%8.4lf ", arr[j] ); } } #define SIZE 10 int main() { double x[ SIZE ] = { 2, 0,-3, 0, 0, 0, 0, 0, 0, 0 }; double y[ SIZE ] = { 2.0, -2.0, -3.0, 2.0, 2.0, 2.0, -2.0, 2.0, 2.0, 2.0 }; printf("x:\n"); printArrayDouble( SIZE, x ); printf("y:\n"); printArrayDouble( SIZE, y ); printf("\n"); printf("sum = %lf\n", squareDiffArray( SIZE, x, y ) ); return 0; }