getset.c File Reference


Detailed Description

Get/set matrix values.

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <oski/oski.h>
#include "abort_prog.h"
#include "testvec.h"
#include "rand_util.h"

Defines

#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 Returns the larger of two input arguments.
#define MIN(a, b)   ((a) < (b) ? (a) : (b))
 Returns the smaller of two input arguments.

Functions

static void scatter (const oski_index_t *ind, const oski_value_t *val, oski_index_t len, oski_index_t index_base, oski_value_t *dest)
 Scatters the non-zero values in a compressed sparse vector representation into a dense (full) vector.
static void scatter_zero (const oski_index_t *ind, oski_index_t len, oski_index_t index_base, oski_value_t *dest)
 Scatters the value '0' into a dense vector from a compressed sparse index vector.
static void check_values (const oski_value_t a, const oski_value_t b, oski_index_t row, oski_index_t col)
 Looks at the absolute difference in magnitude between two scalar values, and aborts the program if they exceed (constant) * (machine epsilon).
static void compare_row (const oski_matrix_t A, oski_index_t row, const oski_index_t *indp, oski_index_t len, oski_index_t index_base, const oski_value_t *full_row)
 Check that all the non-zeros physically stored in the raw CSR representation are correctly returned by oski_GetMatEntry().
static void compare_row_transimage (const oski_matrix_t A, oski_index_t row, const oski_index_t *indp, oski_index_t len, oski_inmatprop_t shape, oski_index_t index_base, const oski_value_t *full_row)
 Given a symmetric or Hermitian matrix for which A(i,j) is stored, checks that calling oski_GetMatEntry() to retrieve the (j, i) element returns the correct value.
static void spot_check_row_read (const oski_matrix_t A, oski_index_t row, oski_index_t n, const oski_index_t *indp, oski_index_t len, oski_inmatprop_t shape, oski_index_t index_base, const oski_value_t *full_row)
 Randomly selects entries from the specified row of the given matrix and confirms that they correspond to the correct raw representation value.
static void expand_full_row (const oski_index_t *indp, const oski_value_t *valp, oski_index_t len, oski_index_t index_base, oski_index_t implicit_diag, oski_index_t row, oski_index_t max_row_len, oski_value_t *full_row)
 Expands a sparse vector to a dense vector representation.
static void zero_full_row (const oski_index_t *indp, oski_index_t len, oski_index_t index_base, oski_index_t implicit_diag, oski_index_t row, oski_index_t max_row_len, oski_value_t *full_row)
 Zeros the elements of a dense vector (full row) representation based on the sparse pattern.
static void check_case_row_read (const oski_matrix_t A, oski_index_t row, const oski_index_t *ptr, const oski_index_t *ind, const oski_value_t *val, oski_index_t m, oski_index_t n, oski_inmatprop_t shape, int implicit_diag, int index_base, oski_value_t *full_row)
 Performs a number of correctness tests related to reading entries in a given row of a matrix and its raw CSR representation.
static void check_row_write (oski_matrix_t A, oski_matrix_t A_copy, oski_index_t row, const oski_index_t *indp, oski_index_t len, oski_index_t index_base, oski_value_t *full_row)
 Checks that all stored values in a given row are changed correctly.
static void check_case_row_write (oski_matrix_t A, oski_matrix_t A_copy, oski_index_t row, const oski_index_t *ptr, const oski_index_t *ind, oski_index_t m, oski_index_t n, oski_inmatprop_t shape, int implicit_diag, int index_base, oski_value_t *full_row)
 Performs a number of correctness tests related to modifying entries in a given row of a matrix and its raw CSR representation.
static const char * tostring_shape (oski_inmatprop_t shape)
static void run_read_write_test_battery (oski_matrix_t A, oski_matrix_t A_copy, const oski_index_t *ptr, const oski_index_t *ind, oski_value_t *val, oski_index_t m, oski_index_t n, oski_inmatprop_t shape, int implicit_diag, int index_base)
 Given a matrix object and its corresponding raw CSR representation, executes a battery of tests to exercise oski_GetMatEntry() and oski_SetMatEntry().
static void check_case (oski_index_t m, oski_index_t n, oski_index_t max_nnz_row, oski_inmatprop_t shape, int implicit_diag, int index_base, const char *xform)
static void check_cases (oski_index_t max_rows, oski_index_t max_cols, oski_index_t max_nnz_row, const char *xform)
 Checks oski_GetMatEntry() and oski_SetMatEntry() for a variety of randomly generated input matrices.
int main (int argc, char *argv[])


Function Documentation

static void check_case_row_read const oski_matrix_t  A,
oski_index_t  row,
const oski_index_t *  ptr,
const oski_index_t *  ind,
const oski_value_t *  val,
oski_index_t  m,
oski_index_t  n,
oski_inmatprop_t  shape,
int  implicit_diag,
int  index_base,
oski_value_t *  full_row
[static]
 

Performs a number of correctness tests related to reading entries in a given row of a matrix and its raw CSR representation.

full_row is a temporary storage buffer of length at least 'n'. It must be initialized to zero, and on return from this routine, will be returned to a state of containing all zeros.

static void check_case_row_write oski_matrix_t  A,
oski_matrix_t  A_copy,
oski_index_t  row,
const oski_index_t *  ptr,
const oski_index_t *  ind,
oski_index_t  m,
oski_index_t  n,
oski_inmatprop_t  shape,
int  implicit_diag,
int  index_base,
oski_value_t *  full_row
[static]
 

Performs a number of correctness tests related to modifying entries in a given row of a matrix and its raw CSR representation.

full_row is a temporary storage buffer of length at least 'n'. It must be initialized to zero, and on return from this routine, will be returned to a state of containing all zeros.

static void check_row_write oski_matrix_t  A,
oski_matrix_t  A_copy,
oski_index_t  row,
const oski_index_t *  indp,
oski_index_t  len,
oski_index_t  index_base,
oski_value_t *  full_row
[static]
 

Checks that all stored values in a given row are changed correctly.

Leaves new values in full_row.

static void expand_full_row const oski_index_t *  indp,
const oski_value_t *  valp,
oski_index_t  len,
oski_index_t  index_base,
oski_index_t  implicit_diag,
oski_index_t  row,
oski_index_t  max_row_len,
oski_value_t *  full_row
[static]
 

Expands a sparse vector to a dense vector representation.

Assumes indp has base given by index_base, but that row is always 1-based.

static void scatter const oski_index_t *  ind,
const oski_value_t *  val,
oski_index_t  len,
oski_index_t  index_base,
oski_value_t *  dest
[static]
 

Scatters the non-zero values in a compressed sparse vector representation into a dense (full) vector.

For all 0 <= k < len, sets dest[ind[k]-b] = val[k], where b is the index base for values in ind.

static void scatter_zero const oski_index_t *  ind,
oski_index_t  len,
oski_index_t  index_base,
oski_value_t *  dest
[static]
 

Scatters the value '0' into a dense vector from a compressed sparse index vector.

For all 0 <= k < len, sets dest[ind[k]-b] = 0, where b is the index base for values in ind.

static void zero_full_row const oski_index_t *  indp,
oski_index_t  len,
oski_index_t  index_base,
oski_index_t  implicit_diag,
oski_index_t  row,
oski_index_t  max_row_len,
oski_value_t *  full_row
[static]
 

Zeros the elements of a dense vector (full row) representation based on the sparse pattern.

Assumes indp has base given by index_base, but that row is always 1-based.


Generated on Wed Sep 19 16:41:22 2007 for BeBOP Optimized Sparse Kernel Interface Library by  doxygen 1.4.6