# Find common subexpressions

### Description

This function finds common subexpressions in an expression vector so that duplicate computation can be avoided.

### Usage

1 |

### Arguments

`expr` |
An expression vector or language object. |

`simplify` |
Whether to call |

`tag` |
The prefix to use for locally created variables. |

`verbose` |
If |

`...` |
Additional parameters to pass to |

### Details

This function identifies all repeated subexpressions in an expression vector,
and stores them in locally created variables. It is used by `fnDeriv`

to share common subexpressions between expression evaluations and gradient
evaluations, for example.

If `simplify`

is `TRUE`

, the assumptions behind the simplifications done
by `Simplify`

must be valid for the result to match the input. With
the default simplifications, this means that all variables should take finite
real values.

### Value

A language object which evaluates to an expression vector which would evaluate to the same result as the original vector with less duplicated code but more storage of intermediate results.

### Author(s)

Duncan Murdoch

### See Also

`Deriv`

, `Simplify`

### Examples

1 | ```
findSubexprs(expression(x^2, x-y, y^2-x^2))
``` |