API

Data Structures

BLASFEO.BlasfeoDmatType

Single precision panel major matrix which is a subtype of AbstractMatrix{Cdouble}. The matrix uses the BLASFEO allocation utilities to allocate memory, and therefore uses a finalizer.

source
BLASFEO.BlasfeoSmatType

Single precision panel major matrix which is a subtype of AbstractMatrix{Cfloat} The matrix uses the BLASFEO allocation utilities to allocate memory, and therefore uses a finalizer.

source
BLASFEO.BlasfeoDvecType

Double precision vector which is a subtype of AbstractVector{Cdouble}. The matrix uses the BLASFEO allocation utilities to allocate memory, and therefore uses a finalizer.

source
BLASFEO.BlasfeoSvecType

Single precision vector which is a subtype of AbstractVector{Cfloat}. The matrix uses the BLASFEO allocation utilities to allocate memory, and therefore uses a finalizer.

source

"Level 1" API

The level 1 API corresponds to the $O(n)$ operations available over BLASFEO objects. We list only the operaions which are currently specialized, other

BLASFEO.vecmul!Function
vecmul!(x, y, z)

Performs indexwise multiplication of x and y and stores it in z. It produces equivalent results to z .= x .* y.

source
BLASFEO.vecmulacc!Function
vecmulacc!(x, y, z)

Performs indexwise multiplication of x and y and adds it elementwise to z. It produces equivalent results to z .+= x .* y.

source
BLASFEO.vecmuldot!Function
vecmuldot!(x, y, z)

Performs indexwise multiplication of x and y and stores it to z. It produces equivalent results to z .+= x .* y. Additionally this returns the dot product of x and y: x^T * y.

source
LinearAlgebra.axpby!Function
axpy!(α, x, β, y, z)

Along with the standard 2 argument axpby!(α, x, β, y), BLASFEO.jl uses the 3 argument style of the BLASFEO api.

This allows a separate output vector z rather than overwriting y. This results in z = α * x + β * y.

source
LinearAlgebra.axpy!Function
axpy!(α, x, y, z)

Along with the standard 2 argument axpy!(α, x, y), BLASFEO.jl uses the 3 argument style of the BLASFEO api.

This allows a separate output vector z rather than overwriting y. This results in z = α * x + y.

source

"Level 2" API

The "level 2" API currently only consists of the in place three argument LinearAlgebra.mul! operation for matrix-vector operations, and matrix-vector multiplication via Base.:*. These operate as expected on both BLASFEO matricies and Transpose matricies with BLASFEO parents.