Multiply an XFL floating point by a non-XFL numerator and denominator

Concepts

Behaviour

  • Compute the multiplication of an XFL (xls17) floating point number and the quotient of two integers
  • Return a new XFL as an int64_t

Definition

int64_t float_multiply (
    int64_t float1,
    uint32_t round_up,
    uint32_t numerator,
    uint32_t denominator
);

Example

int64_t max_vault_pusd =
    float_mulratio(max_vault_pusd, 0,
        COLLATERALIZATION_NUMERATOR, COLLATERALIZATION_DENOMINATOR);

Parameters

Name

Type

Description

float1

int64_t

An XFL floating point enclosing number representing the first operand to the multiplication

round_up

uint32_t

If non-zero all computations will be rounded up

numerator

uint32_t

The numerator of the quotient that the float will be multiplied by

denominator

uint32_t

The denominator of the quotient that the float will be multiplied by

🚧

Caution

Certain multiplications may overflow, which return with an INVALID_FLOAT error. However an underflow returns as XFL Canonical Zero (i.e. enclosing number = 0).

Return Code

Type

Description

int64_t

The XFL (xls17) enclosing number

If negative, an error:
INVALID_FLOAT

  • one of the supplied parameters was not a valid XFL enclosing number

OVERFLOW

  • the result of the multiplication was too large to store in an XFL.

DIVISION_BY_ZERO

  • the supplied denominator was zero.