Function

# sparse_matrix_product_sparse_float(_:_:_:_:_:_:_:)

Multiplies the sparse matrix B by the sparse matrix A and adds the result to the dense matrix C, all with single-precision values.

## Parameters

`order`

The storage order for the dense matrix C. Must be one of CblasRowMajor or CblasColMajor.

`transa`

Specifies whether to perform the operation with A or the transpose of A. Must be one of CblasNoTrans or CblasTrans.

`alpha`

Scalar multiplier of A.

`A`

The sparse matrix, A.

`B`

The sparse matrix, B.

`C`

Pointer to the dense matrix C. The number of rows must be equal to the number of rows of A and the number of columns must be equal to the number of columns of B. Behavior undefined if this is not met. The parameter `ldc` describes how many elements to move between one row (row major) or column (column major). C is updated with the result of the operation.

`ldc`

Increment in elements between rows (row major) or columns (column major) of C. Must be greater than or equal to `B` when row major, or number of rows of A when column major.

## Return Value

On success, `SPARSE_SUCCESS` is returned and `C` has been updated with result of the operation. Will return `SPARSE_ILLEGAL_PARAMETER` if order or `transa` is not valid or the leading dimension parameters do not meet their dimension requirements. On error, `C` is unchanged.

## Discussion

Multiplies the sparse matrix B by the sparse matrix A and adds the result to the dense matrix C (C = alpha * op(A) * B + C, where op(A) is either A or the transpose of A). If A is of size M x K, then B is of size K x N and C is of size M x N.If the desired operation is C = A * B, then an efficient option is to create the C buffer of zeros and then perform the operation with the zero filled C.

`func sparse_matrix_triangular_solve_dense_double(CBLAS_ORDER, CBLAS_TRANSPOSE, sparse_dimension, Double, sparse_matrix_double!, UnsafeMutablePointer<Double>!, sparse_dimension) -> sparse_status`
`func sparse_matrix_triangular_solve_dense_float(CBLAS_ORDER, CBLAS_TRANSPOSE, sparse_dimension, Float, sparse_matrix_float!, UnsafeMutablePointer<Float>!, sparse_dimension) -> sparse_status`