class Ratio

Defined at line 17 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

Public Members

static const int64_t kOverflow
static const int64_t kUnderflow

Public Methods

void Reduce ()

Reduce the ratio instance, in-place.

Defined at line 41 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

Ratio Product (Ratio a, Ratio b, Exact exact)

Returns the product of the ratios. If exact is true, ASSERTs on loss of

precision.

Defined at line 56 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

void Ratio ()

Defined at line 64 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

void Ratio (uint32_t numerator, uint32_t denominator)

Defined at line 65 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

uint32_t numerator ()

Defined at line 70 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

uint32_t denominator ()

Defined at line 71 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

bool invertible ()

Defined at line 72 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

Ratio Inverse ()

Defined at line 74 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

template <Round kRoundBehavior = Round::Down>
int64_t Scale (int64_t value)

Defined at line 80 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

template <typename T>
void Reduce (T * numerator, T * denominator)

Reduces the ratio of N/D

Defined only for uint32_t and uint64_t

Defined at line 114 of file ../../zircon/system/ulib/affine/ratio.cc

void Product (uint32_t a_numerator, uint32_t a_denominator, uint32_t b_numerator, uint32_t b_denominator, uint32_t * product_numerator, uint32_t * product_denominator, Exact exact)

Produces the product two 32 bit ratios. If exact is true, ASSERTs on loss

of precision.

Defined at line 135 of file ../../zircon/system/ulib/affine/ratio.cc

template <Round kRoundBehavior = Round::Down>
int64_t Scale (int64_t value, uint32_t numerator, uint32_t denominator)

Produces the product of a 32 bit ratio and the int64_t as an int64_t. Returns

a saturated value (either kOverflow or kUnderflow) on overflow/underflow.

Defined at line 200 of file ../../zircon/system/ulib/affine/ratio.cc

Enumerations

enum Exact
Name Value
No 0
Yes 1

Defined at line 19 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h

enum Round
Name Value
Down 0
Up 1
TowardsZero 2
AwayFromZero 3

Rounding Behaviors used when scaling.

val | N | D | Down | Up | TowardsZero | AwayFromZero

-----+---+---+------+----+-------------+--------------

7 | 1 | 2 | 3 | 4 | 3 | 4

-7 | 1 | 2 | -4 | -3 | -3 | -4

Defined at line 28 of file ../../zircon/system/ulib/affine/include/lib/affine/ratio.h