For symmetric matrix, its storage and multiplication can be optimized.
For example, in BLAS, AA^T can be computed in syrk routine result in a upper traingle matrix representing the symmetric matrix.
However, there may be some work to be done to realized the following. for symmetric matrix T, C and T, computing TCT results in another symmetric matrix. It saves memory to store T and C as triangle matrix; it might be helpful to have a interface implying it means for symmetric matrix. And with the information of TCT is symmetric , It is helpful to have a function to just compute upper triangle elements in T and CT.