#include <stdio.h>
#include <oski/oski.h>
#define DIM 3
#define NUM_STORED_NZ 2
int Aptr[ DIM+1 ] = { 0, 0, 1, 2 };
int Aind[ NUM_STORED_NZ ] = { 0, 0 };
double Aval[ NUM_STORED_NZ ] = { -2, 0.5 };
double x[ DIM ] = { .25, .45, .65 };
double y[ DIM ] = { 1, 1, 1 };
int
main( int argc, char** argv )
{
oski_matrix_t A_tunable;
oski_vecview_t x_view, y_view;
oski_Init();
A_tunable = oski_CreateMatCSR( Aptr, Aind, Aval, DIM, DIM, SHARE_INPUTMAT,
3, INDEX_ZERO_BASED, MAT_TRI_LOWER, MAT_UNIT_DIAG_IMPLICIT );
x_view = oski_CreateVecView( x, DIM, STRIDE_UNIT );
y_view = oski_CreateVecView( y, DIM, STRIDE_UNIT );
oski_MatMult( A_tunable, OP_NORMAL, -1, x_view, 1, y_view );
oski_DestroyMat( A_tunable );
oski_DestroyVecView( x_view );
oski_DestroyVecView( y_view );
printf( "Answer: y = [ %f ; %f ; %f ]\n", y[0], y[1], y[2] );
oski_Close();
return 0;
}