# Numeric Functions

## Integer Functions

The following standard functions (defined in the `ArithmeticPackage` but excluded if using a raw `Engine`) operate on integers only.

FunctionDescription
`is_odd` method and propertyreturns `true` if the value is an odd number, otherwise `false`
`is_even` method and propertyreturns `true` if the value is an even number, otherwise `false`

The following standard functions (defined in the `BasicMathPackage` but excluded if using a raw `Engine`) operate on integers only.

FunctionNot available underDescription
`to_float``no_float`convert the value into `f64` (`f32` under `f32_float`)
`to_decimal`non-`decimal`convert the value into `Decimal`

## Signed Numeric Functions

The following standard functions (defined in the `ArithmeticPackage` but excluded if using a raw `Engine`) operate on `i8`, `i16`, `i32`, `i64`, `f32`, `f64` and `Decimal` (requires `decimal`) only.

FunctionDescription
`abs`absolute value
`sign`returns (`INT`) −1 if negative, +1 if positive, 0 if zero
`is_zero` method and propertyreturns `true` if the value is zero, otherwise `false`

## Floating-Point Functions

The following standard functions (defined in the `BasicMathPackage` but excluded if using a raw `Engine`) operate on `f64` (`f32` under `f32_float`) and `Decimal` (requires `decimal`) only.

CategorySupports `Decimal`Functions
Trigonometryyes`sin`, `cos`, `tan`
Trigonometryno`sinh`, `cosh`, `tanh` in radians, `hypot(`x`,`y`)`
Arc-trigonometryno`asin`, `acos`, `atan(`v`)`, `atan(`x`,`y`)`, `asinh`, `acosh`, `atanh` in radians
Square rootyes`sqrt`
Exponentialyes`exp` (base e)
Logarithmicyes`ln` (base e)
Logarithmicyes`log` (base 10)
Logarithmicno`log(`x`,`base`)`
Roundingyes`floor`, `ceiling`, `round`, `int`, `fraction` methods and properties
Conversionyes`to_int`, `to_decimal` (requires `decimal`), `to_float` (not under `no_float`)
Conversionno`to_degrees`, `to_radians`
Testingno`is_nan`, `is_finite`, `is_infinite` methods and properties

## Decimal Rounding Functions

The following rounding methods (defined in the `BasicMathPackage` but excluded if using a raw `Engine`) operate on `Decimal` only, which requires the `decimal` feature.

Rounding typeBehaviorMethods
None`floor`, `ceiling`, `int`, `fraction` methods and properties
Banker’s roundinground to integer`round` method and property
Banker’s roundinground to specified number of decimal points`round(`decimal points`)`
Round upaway from zero`round_up(`decimal points`)`
Round downtowards zero`round_down(`decimal points`)`
Round half-upmid-point away from zero`round_half_up(`decimal points`)`
Round half-downmid-point towards zero`round_half_down(`decimal points`)`

## Parsing Functions

The following standard functions (defined in the `BasicMathPackage` but excluded if using a raw `Engine`) parse numbers.

FunctionNo available underDescription
`parse_int`converts a string to `INT` with an optional radix
`parse_float``no_float` and non-`decimal`converts a string to `FLOAT` (`Decimal` under `no_float` and `decimal`)
`parse_decimal`non-`decimal`converts a string to `Decimal`

## Formatting Functions

The following standard functions (defined in the `BasicStringPackage` but excluded if using a raw `Engine`) convert integer numbers into a string of hex, octal or binary representations.

FunctionDescription
`to_binary`converts an integer number to binary
`to_octal`converts an integer number to octal
`to_hex`converts an integer number to hex

These formatting functions are defined for all available integer numbers – i.e. `INT`, `u8`, `i8`, `u16`, `i16`, `u32`, `i32`, `u64`, `i64`, `u128` and `i128` unless disabled by feature flags.

## Floating-point Constants

The following functions return standard mathematical constants.

FunctionDescription
`PI`returns the value of π
`E`returns the value of e