According to the specification section 9.1.3:
INT|FLT: ADD/SUB/MUL/DIV/CDIV/POW/MOD(INT|FLT: a, INT|FLT: b) = MUST implement, respectively, addition, subtraction, multiplication, division, ceiling division, exponentiation, and remainder. Except where an operator explicitly states otherwise, a and b MUST have the same numeric type. Division by zero MUST raise a runtime error.
INT: IADD/ISUB/IMUL/IDIV/IPOW/IROOT(INT|FLT: a, INT|FLT: b) and FLT: FADD/FSUB/FMUL/FDIV/FPOW/FROOT(INT|FLT: a, INT|FLT: b) = MUST first coerce both operands to the target numeric type and then perform the corresponding arithmetic operation. Failed coercion MUST raise a runtime error.
passing/fdiv.pre, however, requires that FDIV with zero as the denominator returns INF, rather than erroring.
According to the specification section 9.1.3:
passing/fdiv.pre, however, requires thatFDIVwith zero as the denominator returnsINF, rather than erroring.