Computes the outer product of the dense vector *x* and the sparse vector *y*, with both operands containing single-precision values.

SDKs

- iOS 9.0+
- macOS 10.11+
- Mac Catalyst 13.0+
- tvOS 9.0+
- watchOS 3.0+

Framework

- Accelerate

## Declaration

## Parameters

`M`

The number of rows of

*x*and the resulting matrix.`N`

The number of columns of the resulting matrix. The number of nonzero values must be less than or equal to

`N`

.`nz`

The number of nonzero values in the sparse vector

*y*. Must be less than or equal to`N`

.`alpha`

Scalar multiplier of

*x*.`x`

Pointer to the dense vector

*x*. Must be`M`

number of elements. Negative strides are supported. Note, unlike dense BLAS routines, the pointer points to the last element when stride is negative.`incx`

Increment between valid values in the dense vector

*x*. Negative strides are supported.`y`

Pointer to the dense storage for the values of the sparse vector

*y*. The corresponding entry in`indy`

holds the index of the value. Contains`nz`

values.`indy`

Pointer to the dense storage for the index values of the sparse vector y. The corresponding entry in

*y*holds the values of the vector. Contains`nz`

values.`C`

Pointer to an uninitialized sparse matrix object. On success a newly allocated sparse matrix object is returned in this pointer. On error, this set to

`NULL`

.You are responsible for calling`sparse`

on this matrix object._matrix _destroy

## Return Value

On success `SPARSE`

is returned an `C`

is valid matrix object. The caller is responsible for cleaning up the sparse matrix object with `sparse`

.

Will return `SPARSE`

if `nz > N`

, and `C`

will be unchanged.

## Discussion

Compute the outer product of the dense vector x and the sparse vector y and return a new sparse matrix in the uninitialized pointer sparse matrix pointer `C`

. `C = alpha * x * y'`

. You are responsible for calling `sparse`

on the returned matrix.The matrix object returned on success is a point wise based sparse matrix.

Indices in `indx`

are always assumed to be stored in ascending order. Additionally, indices are assumed to be unique. The behavior of this function is undefined if either of these assumptions are not met.

All indices are 0 based (the first element of a pointer is `ptr[0]`

).