1. A method of identifying potentially optimal factorizations of a function, the method comprising: receiving a function to be factored; initializing a plurality of function unit circuits to implement the function, wherein each function unit circuit includes a plurality of function inputs and a function output; specifying a first factorization of the function, wherein the first factorization specifies a first portion of the plurality of function inputs of each of the plurality of function unit circuits to be held at a different one of a set of constant values and a second portion of the plurality of function inputs of each of the plurality of function unit circuits to receive a set of input values; providing the set of input values to the second portions of each the plurality of function unit circuits, thereby causing each of the plurality of function unit circuits to output a cofactor of the function; determining for each cofactor at least one attribute; comparing the plurality of attributes associated with the plurality of cofactors with at least one criteria; and outputting data specifying the first factorization in response to the plurality of attributes satisfying the criteria.