-- Decouple NAGtypes and SLPexpressions the only problem is: who exports "evaluate"? -- What slows us down? not cataloging all gates? create several examples of large circuits (1-10 sec to setup) -- Circuit creation gatePolynomial -- currently, has a naive algorithm to produce a circuit for a poly gatePolynomial(Strategy=>"optimal evaluation of the support monomials") gatePolynomial(Strategy=>"Horner") gateMatrix {list of polynomials} diff -- has to be provided for any type of Gate -- Gates of the future analytic gates (cos, sin, exp) "many-to-many" gates constant gates of non-number type (pi, algebraic numbers, described by a subroutine, ...) -- Naming questions evaluate vs value -- value is not used much (rename?) sub vs compose -- could sub be more general? ----------------- OLD TO-DO ---------------------------------------------------------------- -- functions that one may forget exist... segmentHomotopyProjective -* Expressions in M2 *** should have this as a Gate ??? maybe? Expression : Adjacent AssociativeExpression : Equation Product *** Sum *** BinaryOperation Divide ??? FunctionApplication Holder : OneExpression ??? ZeroExpression ??? MatrixExpression *** Minus *** NonAssociativeProduct ??? Parenthesize Power ??? RowExpression SparseMonomialVectorExpression SparseVectorExpression Subscript Superscript Table In addition: Det *** Submatrix ??? Minor ??? TO DO: -- decide what types of non-terminal gates we need (see above) *-