Symbolic Generation of an Optimal Crout Algorithm for Sparse Systems of Linear Equations