int main()
{
    int n = 4;
    double pr[7]  = { 1.,-1.,  1.,-1.,  1.,-1.,  1. };
    int col[7]    = { 0,  1,   1,  2,   2,  3,   3  };
    int ptr[5]    = { 0, 2, 4, 6, 7 };
    csr_t A = { n, pr, col, ptr };
    double x[4] = {1., 3., 8., 12.};
    double result[4];
    sparse_multiply(&A, x, result);

    /*
     * Should compute
     * [-1,  1,  0,  0 ]   [ 1  ]
     * [ 0, -1,  1,  0 ] * [ 3  ]
     * [ 0,  0, -1,  1 ]   [ 8  ]
     * [ 0,  0,  0,  1 ]   [ 12 ]
     */
    for (int i = 0; i < n; ++i)
        printf(" %g\n", result[i]);
}
static void test_sparse() {

    int *col_ind[MAXPROC];
    double *values[MAXPROC], *vec[MAXPROC], *svec[MAXPROC]/*, start_time*/;
    int n, non_zero, *row_ind;

    sparse_initialize(&n, &non_zero, &row_ind, col_ind, values, vec, svec);
    armci_msg_barrier();

    /*start_time = armci_timer();*/
    sparse_multiply(n, non_zero, row_ind, col_ind, values, vec, svec);
    /* printf("%d: Timetaken = %f\n", me, armci_timer()-start_time); */
    armci_msg_barrier();

    if(me==0) gather_solution_vector(svec);

    if(me==0) {
        printf("O.K.\n");
        fflush(stdout);
    }
    destroy_array((void **)vec);
}