Write a set of functions to deal with 3D vectors that are represented
by size-3 double arrays. The signatures should be like the following,
void tri_vector_add (double v[], double u[]); /* v+=u */
void tri_vector_subtract (double v[], double u[]); /* v-=u */
void tri_vector_scale (double v[], double a); /* v=a*v */
void tri_vector_cross_product(double v1[], double v2[], double result[]); /* v = v1 x v2 */
double tri_vector_dot_product (double v1[], double v2[]); /* returns v1.v2 */
double tri_vector_norm (double v[]); /* returns |v| */
void tri_vector_print (double v[]); /* prints the components of the vector */
void tri_vector_set (double v[], double v_1, double v_2, double v_3); /* v={v_1,v_2,v_3} */
void tri_vector_set_zero (double v[]); /* v=0 */
void tri_vector_set_basis (double v[], int k); /* v_{k}=1, v_{i!=k}=0 */
int tri_vector_equal (double v[], double u[]); /* returns 1 if v==u, 0 otherwise */
Hint: something like
void tri_vector_add (double v[], double u[]) { for(int i=0;i<3;i++) v[i]+=u[i]; }
double tri_vector_dot_product(double u[], double v[]) { return u[0]*v[0]+u[1]*v[1]+u[2]*v[2]; }
Write a main program that calls and tests (some of) your functions.
Hint: something like
double v[]={1,2,3}, u[]={3,2,1}, r[]={4,4,4};
tri_vector_add(v,u);
if( tri_vector_equal(v,r) )
printf("test 'add' passed :) \n");
else
printf("test 'add' failed :( \n");