Function

sparse_insert_block_float(_:_:_:_:_:_:)

Inserts a dense block of entries into a single-precision matrix.

Declaration

func sparse_insert_block_float(_ A: sparse_matrix_float!, _ val: UnsafePointer<Float>!, _ row_stride: sparse_dimension, _ col_stride: sparse_dimension, _ bi: sparse_index, _ bj: sparse_index) -> sparse_status

Parameters

A

The sparse matrix, A, which must have been created with sparse_matrix_block_create_float(_:_:_:_:) or sparse_matrix_variable_block_create_float(_:_:_:_:). SPARSE_ILLEGAL_PARAMETER is returned if not met. A holds block dimensions (fixed or variable) set with matrix object creation routine.

val

Pointer to block to be inserted at block index location A[bi,bj]. The block is of dimension k * l where k and l are set for bi,bj at object creation time. The strides between elements for rows and columns are provided in row_stride and col_stride.

row_stride

The row stride in number of elements to move from one row to the next for the block val.

col_stride

The column stride in number of elements to move from one column to the next for the block val.

bi

The block row index where val is to be inserted. Indexing is zero based, the first block is located at 0,0. Index is assumed to be within the bounds of the matrix object, undefined behavior if not met.

bj

The block column index where val is to be inserted. Indexing is zero based, the first block is located at 0,0. Index is assumed to be within the bounds of the matrix object, undefined behavior if not met.

Return Value

On successful insertion, A has been updated with the value and SPARSE_SUCCESS is returned. If A creation requirements are not met, SPARSE_ILLEGAL_PARAMETER is returned and A is unchanged.

Discussion

Use to build a sparse matrix by providing a dense block for entry at block location A[bi,bj]. Block size is determined at object creation time. Given a block dimension of k * l and for location bi,bj, update as: A[bi,bj][i,j] = val[i*row_stride + j*col_stride] for each i in k and each j in l.

Note that matrix properties cannot be modified after value insertion begins.This includes properties such as specifying a triangular matrix.Insertion can be expensive, generally speaking it is best to do a batch update. Inserted values may be temporarily held internally within the object and only inserted into the sparse format when a later computation triggers a need to insert.

See Also

Matrix Creation and Population

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software