## Algorithms for triangle counting * [Burkhardt](https://journals.sagepub.com/doi/10.1177/1473871616666393) : `sum_reduce( (A^2) .* A ) / 6` * [Cohen](https://doi.org/10.1109/MCSE.2009.120) : `sum_reduce( (L * U) .* A ) / 2` * [Sandia](https://dx.doi.org/10.1109/HPEC.2017.8091043) : `sum_reduce( (T * T) .* T )` * T being either the lower (L) or upper (U) triangle matrix of A ### Routines implied * Out-of-place matrix-matrix multiplication (_required_, implemented) * Out-of-place masked matrix-matrix multiplication (_optimal_, __not implemented__) * Out-of-place masked matrix power-2 kernel (_optimal_, __not implemented__) * Haddamard product (_required_, implemented) * L/U matrix split (_required_, __not implemented__) * Matrix-to-scalar sum reduction (_required_, __see [this issue](https://github.com/Algebraic-Programming/ALP/issues/187__) . * Check if a matrix is symmetric (_optimal_, __not implemented__) * All-but-diagonal matrix mask (_optimal_, __not implemented__)
Algorithms for triangle counting
sum_reduce( (A^2) .* A ) / 6sum_reduce( (L * U) .* A ) / 2sum_reduce( (T * T) .* T )Routines implied