Module: LongDecimalRoundingMode

Included in:
LongDecimalBase, LongMath
Defined in:
lib/long-decimal.rb

Overview

define rounding modes to be used for LongDecimal this serves the purpose of an “enum” in C/C++/Java

Defined Under Namespace

Classes: RoundingModeClass, ZeroRoundingModeClass

Constant Summary collapse

ROUND_UP =

rounding modes as constants

RoundingModeClass.new(:ROUND_UP, 0)
ROUND_DOWN =
RoundingModeClass.new(:ROUND_DOWN, 1)
ROUND_CEILING =
RoundingModeClass.new(:ROUND_CEILING, 2)
ROUND_FLOOR =
RoundingModeClass.new(:ROUND_FLOOR, 3)
ROUND_HALF_UP =
RoundingModeClass.new(:ROUND_HALF_UP, 4)
ROUND_HALF_DOWN =
RoundingModeClass.new(:ROUND_HALF_DOWN, 5)
ROUND_HALF_CEILING =
RoundingModeClass.new(:ROUND_HALF_CEILING, 6)
ROUND_HALF_FLOOR =
RoundingModeClass.new(:ROUND_HALF_FLOOR, 7)
ROUND_HALF_EVEN =
RoundingModeClass.new(:ROUND_HALF_EVEN, 8)
ROUND_UNNECESSARY =
RoundingModeClass.new(:ROUND_UNNECESSARY, 9)
MUL_INVERSE_MODE =

which mode is to be used instead when we do an multiplicative inversion?

{
  ROUND_UP           =>   ROUND_DOWN,
  ROUND_DOWN         =>   ROUND_UP,
  ROUND_CEILING      =>   ROUND_FLOOR,
  ROUND_FLOOR        =>   ROUND_CEILING,
  ROUND_HALF_UP      =>   ROUND_HALF_DOWN,
  ROUND_HALF_DOWN    =>   ROUND_HALF_UP,
  ROUND_HALF_CEILING =>   ROUND_HALF_FLOOR,
  ROUND_HALF_FLOOR   =>   ROUND_HALF_CEILING,
  ROUND_HALF_EVEN    =>   ROUND_HALF_EVEN,
  ROUND_UNNECESSARY  =>   ROUND_UNNECESSARY
}
ADD_INVERSE_MODE =

which mode is to be used instead when we do an additive inversion?

{
  ROUND_UP           =>   ROUND_UP,
  ROUND_DOWN         =>   ROUND_DOWN,
  ROUND_CEILING      =>   ROUND_FLOOR,
  ROUND_FLOOR        =>   ROUND_CEILING,
  ROUND_HALF_UP      =>   ROUND_HALF_UP,
  ROUND_HALF_DOWN    =>   ROUND_HALF_DOWN,
  ROUND_HALF_CEILING =>   ROUND_HALF_FLOOR,
  ROUND_HALF_FLOOR   =>   ROUND_HALF_CEILING,
  ROUND_HALF_EVEN    =>   ROUND_HALF_EVEN,
  ROUND_UNNECESSARY  =>   ROUND_UNNECESSARY
}
ZERO_ROUND_TO_PLUS =

rounding modes as constants

ZeroRoundingModeClass.new(:ZERO_ROUND_TO_PLUS, 0)
ZERO_ROUND_TO_MINUS =
ZeroRoundingModeClass.new(:ZERO_ROUND_TO_MINUS, 1)
ZERO_ROUND_TO_CLOSEST_PREFER_PLUS =
ZeroRoundingModeClass.new(:ZERO_ROUND_TO_CLOSEST_PREFER_PLUS, 2)
ZERO_ROUND_TO_CLOSEST_PREFER_MINUS =
ZeroRoundingModeClass.new(:ZERO_ROUND_TO_CLOSEST_PREFER_MINUS, 3)
ZERO_ROUND_UNNECESSARY =
ZeroRoundingModeClass.new(:ZERO_ROUND_UNNECESSARY, 4)