fdiv
Operation
Divide float
Forms
fdiv = 110 (0x6e)
Stack
..., value1, value2
..., result
Description
Both value1 and value2 must be of type float
. The values are popped from the operand stack. The float
result is value1 / value2. The result is pushed onto the operand stack.
The result of an fdiv instruction is governed by the rules of IEEE arithmetic:
- If either value is NaN, the result is NaN.
- If neither value is NaN, the sign of the result is positive if both values have the same sign, negative if the values have different signs.
- Division of an infinity by an infinity results in NaN.
- Division of an infinity by a finite value results in a signed infinity, with the sign-producing rule just given.
- Division of a finite value by an infinity results in a signed zero, with the sign-producing rule just given.
- Division of a zero by a zero results in NaN; division of zero by any other finite value results in a signed zero, with the sign-producing rule just given.
- Division of a nonzero finite value by a zero results in a signed infinity, with the sign-producing rule just given.
- In the remaining cases, where neither an infinity, nor a zero, nor NaN is involved, the quotient is computed and rounded to the nearest
float
using IEEE 754 round-to-nearest mode. If the magnitude is too large to represent as a float
, we say the operation overflows; the result is then an infinity of appropriate sign. If the magnitude is too small to represent as a float
, we say the operation underflows; the result is then a zero of appropriate sign.
The Java Virtual Machine requires support of gradual underflow as defined by IEEE 754. Despite the fact that overflow, underflow, division by zero, or loss of precision may occur, execution of an fdiv instruction never throws a runtime exception.