# 2.5.8. Double¶

TODO.

## 2.5.8.1. Instruction¶

`target = ``double.add`` op1 op2`` [double_::Add]`
Target: double double double

Calculates the sum of the two operands. If the sum overflows the range of the double type, the result in undefined.

`target = ``double.as_interval`` op1`` [double_::AsInterval]`
Target: interval double

Converts the double op1 into an interval value, interpreting it as seconds.

`target = ``double.as_sint`` op1`` [double_::AsSInt]`
Target: int<*> double

Converts the double op1 into a signed integer value, rounding to the nearest value.

`target = ``double.as_time`` op1`` [double_::AsTime]`
Target: time double

Converts the double op1 into a time value, interpreting it as seconds since the epoch.

`target = ``double.as_uint`` op1`` [double_::AsUInt]`
Target: int<*> double

Converts the double op1 into an unsigned integer value, rounding to the nearest value.

`target = ``double.div`` op1 op2`` [double_::Div]`
Target: double double double

Divides op1 by op2, flooring the result. Throws `DivisionByZero` if op2 is zero.

`target = ``double.eq`` op1 op2`` [double_::Eq]`
Target: bool double double

Returns true iff op1 equals op2.

`target = ``double.geq`` op1 op2`` [double_::Geq]`
Target: bool double double

Returns true iff op1 is greater or equal than op2.

`target = ``double.gt`` op1 op2`` [double_::Gt]`
Target: bool double double

Returns true iff op1 is greater than op2.

`target = ``double.leq`` op1 op2`` [double_::Leq]`
Target: bool double double

Returns true iff op1 is less or equal than op2.

`target = ``double.lt`` op1 op2`` [double_::Lt]`
Target: bool double double

Returns true iff op1 is less than op2.

`target = ``double.mod`` op1 op2`` [double_::Mod]`
Target: double double double

Calculates op1 modulo op2. Throws `DivisionByZero` if op2 is zero.

`target = ``double.mul`` op1 op2`` [double_::Mul]`
Target: double double double

Multiplies op1 with op2. If the product overflows the range of the double type, the result in undefined.

`target = ``double.pow`` op1 op2`` [double_::PowDouble]`
Target: double double double

Raises op1 to the power op2. If the product overflows the range of the double type, the result in undefined.

`target = ``double.sub`` op1 op2`` [double_::Sub]`
Target: double double double

Subtracts op1 one from op2. If the difference underflows the range of the double type, the result in undefined.