  Assembling stiffness matrices represents a significant cost in many finite
element computations. We address the question of optimizing the evaluation of
these matrices. By finding redundant computations, we are able to significantly
reduce the cost of building local stiffness matrices for the Laplace operator
and for the trilinear form for Navier-Stokes. For the Laplace operator in two
space dimensions, we have developed a heuristic graph algorithm that searches
for such redundancies and generates code for computing the local stiffness
matrices. Up to cubics, we are able to build the stiffness matrix on any
triangle in less than one multiply-add pair per entry. Up to sixth degree, we
can do it in less than about two. Preliminary low-degree results for Poisson
and Navier-Stokes operators in three dimensions are also promising.
