# collect function

(Shortest import: `from brian2.codegen.optimisation import collect)`

brian2.codegen.optimisation.collect(node)

  Attempts to collect commutative operations into one and simplifies them.

  For example, if x and y are scalars, and z is a vector, then (x*z)*y should be rewritten as (x*y)*z to minimise the number of vector operations. Similarly, ((x*2)*3)*4 should be rewritten as x*24.

  Works for either multiplication/division or addition/subtraction nodes.

  The final output is a subexpression of the following maximal form:

  > (((numerical_value*(product of scalars))/(product of scalars))*(product of vectors))/(product of vectors)

  Any possible cancellations will have been done.

  Parameters:

    node : Brian AST node

    > The node to be collected/simplified.

  Returns:

    node : Brian AST node

    > Simplified node.