BallisticLA / RandBLAS

A header-only C++ library for sketching in randomized linear algebra
https://randblas.readthedocs.io/en/stable/
Other
75 stars 6 forks source link

wrapper functions for distribution-agnostic sketching #45

Closed rileyjmurray closed 1 year ago

rileyjmurray commented 1 year ago

This PR introduces the namespace RandBLAS::ramm. There are two functions of interest in this namespace:

These correspond to applying a sketching operator to the left or right of a general matrix. Each of these functions has three signatures that differ in the type of the sketching operator. One signature uses an abstract SKOP (for documentation purposes), one uses DenseSkOp<T, RNG>, and one uses SparseSkOp<T, RNG>.

The names of these functions aren't final. I've created a place to discuss naming conventions here: https://github.com/BallisticLA/RandBLAS/discussions/47.

This PR doesn't change the function names lskges, lskge3, rskges, rskge3. However, it does change the unit tests to use the ramm_general_left and ramm_general_right API. So right now the [l/r]skge[3/s] API is only used in the ramm_general_left and ramm_general_right functions.