SugarBLAS.jl lets you write BLAS functions in a more aesthetic form. This way anytime someone reads a BLAS call they don’t have to look up for the order of the positional arguments to understand what it does.
julia> macroexpand(:(@blas! Y += X))
:(Base.LinAlg.axpy!(1.0,X,Y))
julia> macroexpand(:(@blas! X = (a+c)*X))
:(scale!(a + c,X))
julia> macroexpand(:(SugarBLAS.@gemm! C -= alpha*A*B))
:(Base.LinAlg.BLAS.gemm!('N','N',-alpha,A,B,1.0,C))
The package only uses Base
definitions so you can extend each function however you want.