## Math

This library includes typical math functions you see in conventional spreadsheets, like Sqrt(), Abs(), Max(), Min(), Sum(), or Average(). These work the same way.

###### Functions are unit sensitive

Unlike conventional spreadsheets, Blockpad functions are unit sensitive. For example, `Sin(30 deg) = 0.5`, `Sum(5 ft, 12 in, 1 m) = 9.281 ft`, or `Sqrt(4 in^2) = 2 in`.

###### Trigonometry

The math library includes standard trig functions. These functions are unit sensitive, but default to radians if no unit is provided.

 Sin() Returns the sine of an angle. Cos() Returns the cosine of an angle. Tan() Returns the tangent of an angle. Asin() Returns the arcsine of a ratio as an angle between -pi/2 and pi/2. Acos() Returns the arccosine of a ratio as an angle between 0 and pi. Atan() Returns the arctangent of a number as an angle between -pi/2 and pi/2. Atan2() Returns the arctangent of given (x, y) coordinates as an angle between -pi and pi, not including -pi.
###### Built-in values

Blockpad includes built-in values. Unlike conventional spreadsheets, they are stored as values, not functions, so there's no need to follow them with parentheses.

 pi The value for pi, 3.1415... e The value for e, 2.718... i The square root of negative one
###### Functions for units
 Compatible() Tests if two numbers have compatible units (e.g. both are lengths) and returns true or talse. Magnitude() Returns the magnitude of a number with units. Unit() Returns the units stored with a number. UnitConvert() Converts a number to different units. (e.g. `UnitConvert(5 m, 1 in)`) Note the to keyword is typically preferable (e.g. `5 m to in`).
###### Matrix and vector math functions
 CrossProduct() Returns the cross product of two vectors (1 dimensional arrays). Determinant() Returns the determinant of a matrix. DotProduct() Returns the cross product of two vectors (1 dimensional arrays). Identity() Returns an identity matrix with the specified size. Inverse() Returns the inverse of a matrix or number.
###### Calculus functions

To use the calculus functions, some knowledge of user-defined functions is necessary. See custom functions in the deep dive for more information.

 Derivative() Returns the derivative of a function. Integral() Returns the definite integral of a function, given start and end points.

Note that the Derivative() function returns a function that you can use for calculations. ###### Interpolation functions
 Interpolate() Classic interpolation - returns a y value given an x value and pairs of x and y (x1, x2, y1, y2). Interpolate2D() Returns a value given a column lookup value, row lookup value, and an array or table reference. It is similar to VlookupInterpolate(), but it works in two dimensions.

Also note that VlookupInterpolate() is found in the Lookup library.

###### Logarithm functions
 Log() Returns the logarithm of a number given the base. Defaults to base 10 if none is specified. Log10() Returns the base 10 logarithm of a number. Ln() Returns the natural logarithm of a number (logarithm with base e).
###### Rounding functions
 Round() Returns a value rounded to a specified number of digits. RoundDown() Returns a value rounded down to a specified number of digits. RoundUp() Returns a value rounded up to a specified number of digits. RoundSigFigs() Returns a value rounded to the specified number of significant figures.