module: vec3_matrix_mult
description: 
timing_sensitivity: 
parameters:  int num_out_sig
inputs:  Vector in_vec
outputs:  Vector out_vec
set_output_vector_lengths: out_vec=num_out_sig
classes:  Matrix mul_matrix()
static_variables:  
init:  
int num_in_sig, num_mat_rows, num_mat_cols;

if (num_out_sig < 1)
   {
    printf("error in 'vec3_matrix_mult':  num_out_sig must be >= 1\n");
    printf("   -> in this case, num_out_sig = %d\n", num_out_sig);
    exit(1);
   }  
num_in_sig = in_vec.get_length();

mul_matrix.load("vec3_matrix_mult.dat");
num_mat_rows = mul_matrix.get_rows();
num_mat_cols = mul_matrix.get_cols();
if (num_mat_cols != num_in_sig)
   {
    printf("error in 'vec3_matrix_mult': number of mat cols must equal in_vec length\n"); 
    printf("   -> in this case, number of mat cols = %d\n", num_mat_cols);
    printf("      in_vec length = %d\n", num_in_sig);
    exit(1);   
   }
if (num_mat_rows != num_out_sig)
   {
    printf("error in 'vec3_matrix_mult': number of mat rows must equal out_vec length\n"); 
    printf("   -> in this case, number of mat rows = %d\n", num_mat_rows);
    printf("      out_vec length = %d\n", num_out_sig);
    exit(1);   
   }

end:  
code:  
mul(mul_matrix,in_vec,out_vec);
