## Simplification Modes

The current simplification mode controls how numbers and formulas are "normalized" when being taken from or pushed onto the stack. Some normalizations are unavoidable, such as rounding floating-point results to the current precision, and reducing fractions to simplest form. Others, such as simplifying a formula like a+a (or 2+3), are done by default but can be turned off when necessary.

When you press a key like + when 2 and 3 are on the stack, Calc pops these numbers, normalizes them, creates the formula 2+3, normalizes it, and pushes the result. Of course the standard rules for normalizing 2+3 will produce the result 5.

Simplification mode commands consist of the lower-case m prefix key followed by a shifted letter.

The m O (`calc-no-simplify-mode`) command turns off all optional simplifications. These would leave a formula like 2+3 alone. In fact, nothing except simple numbers are ever affected by normalization in this mode.

The m N (`calc-num-simplify-mode`) command turns off simplification of any formulas except those for which all arguments are constants. For example, 1+2 is simplified to 3, and a+(2-2) is simplified to a+0 but no further, since one argument of the sum is not a constant. Unfortunately, (a+2)-2 is not simplified because the top-level `-' operator's arguments are not both constant numbers (one of them is the formula a+2). A constant is a number or other numeric object (such as a constant error form or modulo form), or a vector all of whose elements are constant.

The m D (`calc-default-simplify-mode`) command restores the default simplifications for all formulas. This includes many easy and fast algebraic simplifications such as a+0 to a, and a + 2 a to 3 a, as well as evaluating functions like deriv(x^2, x) to 2 x.

The m B (`calc-bin-simplify-mode`) mode applies the default simplifications to a result and then, if the result is an integer, uses the b c (`calc-clip`) command to clip the integer according to the current binary word size. See section Binary Number Functions. Real numbers are rounded to the nearest integer and then clipped; other kinds of results (after the default simplifications) are left alone.

The m A (`calc-alg-simplify-mode`) mode does algebraic simplification; it applies all the default simplifications, and also the more powerful (and slower) simplifications made by a s (`calc-simplify`). See section Algebraic Simplifications.

The m E (`calc-ext-simplify-mode`) mode does "extended" algebraic simplification, as by the a e (`calc-simplify-extended`) command. See section "Unsafe" Simplifications.

The m U (`calc-units-simplify-mode`) mode does units simplification; it applies the command u s (`calc-simplify-units`), which in turn is a superset of a s. In this mode, variable names which are identifiable as unit names (like `mm' for "millimeters") are simplified with their unit definitions in mind.

A common technique is to set the simplification mode down to the lowest amount of simplification you will allow to be applied automatically, then use manual commands like a s and c c (`calc-clean`) to perform higher types of simplifications on demand. See section Programming with Formulas, for another sample use of no-simplification mode.