cherry picking conflict merge
add a cholesky implementation