#include #include #include #include #include "quern.h" int QUERN_convert_column_format_to_row_format(int num_rows, int num_columns, const int* A0_column_start, const int* A0_row_index, const double* A0_value, int* A1_row_start, int* A1_column_index, double* A1_value) { // check input if(num_rows<=0 || num_columns<=0) return QUERN_INPUT_ERROR; if(!A0_column_start || !A0_row_index || !A0_value) return QUERN_INPUT_ERROR; if(!A1_row_start || !A1_column_index || !A1_value) return QUERN_INPUT_ERROR; // figure out number of entries in each row std::memset(A1_row_start, 0, (num_rows+1)*sizeof(int)); for(int i=0; iA0_column_start[i+1]) return QUERN_INPUT_ERROR; for(int j=A0_column_start[i]; j=num_rows) return QUERN_INPUT_ERROR; ++A1_row_start[A0_row_index[j]+1]; } } // cumulative sum to get row_start for(int i=0; i