Home | History | Annotate | Download | only in platform

Lines Matching full:decimal

32 #include "platform/Decimal.h"
41 std::ostream& operator<<(std::ostream& os, const Decimal& decimal)
43 Decimal::EncodedData data = decimal.value();
47 << ", " << (data.sign() == Decimal::Negative ? "Negative" : "Positive")
48 << ")=" << decimal.toString().ascii().data();
58 Decimal maximum;
59 Decimal minimum;
60 Decimal step;
62 DecimalStepRange(const Decimal& minimum, const Decimal& maximum, const Decimal& step)
69 Decimal clampValue(Decimal value) const
71 const Decimal result = minimum + ((value - minimum) / step).round() * step;
79 typedef Decimal::Sign Sign;
80 protected: static const Sign Positive = Decimal::Positive;
81 protected: static const Sign Negative = Decimal::Negative;
83 Decimal encode(uint64_t coefficient, int exponent, Sign sign)
85 return Decimal(sign, exponent, coefficient);
88 protected: Decimal fromString(const String& string)
90 return Decimal::fromString(string);
93 protected: Decimal stepDown(const String& minimum, const String& maximum, const String& step, const String& valueString, int numberOfStepTimes)
96 Decimal value = fromString(valueString);
104 protected: Decimal stepUp(const String& minimum, const String& maximum, const String& step, const String& valueString, int numberOfStepTimes)
107 Decimal value = fromString(valueString);
116 // FIXME: We should use expectedSign without "Decimal::", however, g++ causes undefined references for DecimalTest::Positive and Negative.
117 #define EXPECT_DECIMAL_ENCODED_DATA_EQ(expectedCoefficient, expectedExponent, expectedSign, decimal) \
118 EXPECT_EQ((expectedCoefficient), (decimal).value().coefficient()); \
119 EXPECT_EQ((expectedExponent), (decimal).value().exponent()); \
120 EXPECT_EQ(Decimal::expectedSign, (decimal).value().sign());
122 #define EXPECT_DECIMAL_STREQ(expected, decimal) EXPECT_STREQ((expected), (decimal).toString().ascii().data())
159 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).abs());
160 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Negative).abs());
161 EXPECT_EQ(Decimal::nan(), Decimal::nan().abs());
166 EXPECT_EQ(encode(0, 0, Positive), Decimal(0) + Decimal(0));
167 EXPECT_EQ(Decimal(1), Decimal(2) + Decimal(-1));
168 EXPECT_EQ(Decimal(1), Decimal(-1) + Decimal(2));
169 EXPECT_EQ(encode(100, 0, Positive), Decimal(99) + Decimal(1));
170 EXPECT_EQ(encode(100, 0, Negative), Decimal(-50) + Decimal(-50));
171 EXPECT_EQ(encode(UINT64_C(1000000000000000), 35, Positive), encode(1, 50, Positive) + Decimal(1));
172 EXPECT_EQ(encode(UINT64_C(1000000000000000), 35, Positive), Decimal(1) + encode(1, 50, Positive));
173 EXPECT_EQ(encode(UINT64_C(10000000001), 0, Positive), encode(1, 10, Positive) + Decimal(1));
174 EXPECT_EQ(encode(UINT64_C(10000000001), 0, Positive), Decimal(1) + encode(1, 10, Positive));
183 EXPECT_EQ(Decimal::infinity(Positive), encode(std::numeric_limits<uint64_t>::max(), 1022, Positive) + encode(1, 0, Positive));
195 const Decimal Infinity(Decimal::infinity(Positive));
196 const Decimal MinusInfinity(Decimal::infinity(Negative));
197 const Decimal NaN(Decimal::nan());
198 const Decimal Ten(10);
222 EXPECT_EQ(Decimal(1), Decimal(1).ceiling());
223 EXPECT_EQ(Decimal(1), encode(1, -10, Positive).ceiling());
224 EXPECT_EQ(Decimal(2), encode(11, -1, Positive).ceiling());
225 EXPECT_EQ(Decimal(2), encode(13, -1, Positive).ceiling());
226 EXPECT_EQ(Decimal(2), encode(15, -1, Positive).ceiling());
227 EXPECT_EQ(Decimal(2), encode(19, -1, Positive).ceiling());
228 EXPECT_EQ(Decimal(2), encode(151, -2, Positive).ceiling());
229 EXPECT_EQ(Decimal(2), encode(101, -2, Positive).ceiling());
230 EXPECT_EQ(Decimal(1), encode(199, -3, Positive).ceiling());
231 EXPECT_EQ(Decimal(2), encode(199, -2, Positive).ceiling());
232 EXPECT_EQ(Decimal(3), encode(209, -2, Positive).ceiling());
234 EXPECT_EQ(Decimal(-1), Decimal(-1).ceiling());
235 EXPECT_EQ(Decimal(0), encode(1, -10, Negative).ceiling());
236 EXPECT_EQ(Decimal(-1), encode(11, -1, Negative).ceiling());
237 EXPECT_EQ(Decimal(-1), encode(13, -1, Negative).ceiling());
238 EXPECT_EQ(Decimal(-1), encode(15, -1, Negative).ceiling());
239 EXPECT_EQ(Decimal(-1), encode(19, -1, Negative).ceiling());
240 EXPECT_EQ(Decimal(-1), encode(151, -2, Negative).ceiling());
241 EXPECT_EQ(Decimal(-1), encode(101, -2, Negative).ceiling());
242 EXPECT_EQ(Decimal(0), encode(199, -3, Negative).ceiling());
243 EXPECT_EQ(Decimal(-1), encode(199, -2, Negative).ceiling());
244 EXPECT_EQ(Decimal(-2), encode(209, -2, Negative).ceiling());
261 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).ceiling());
262 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).ceiling());
263 EXPECT_EQ(Decimal::nan(), Decimal::nan().ceiling());
268 EXPECT_TRUE(Decimal(0) == Decimal(0));
269 EXPECT_TRUE(Decimal(0) != Decimal(1));
270 EXPECT_TRUE(Decimal(0) < Decimal(1));
271 EXPECT_TRUE(Decimal(0) <= Decimal(0));
272 EXPECT_TRUE(Decimal(0) > Decimal(-1));
273 EXPECT_TRUE(Decimal(0) >= Decimal(0));
275 EXPECT_FALSE(Decimal(1) == Decimal(2));
276 EXPECT_FALSE(Decimal(1) != Decimal(1));
277 EXPECT_FALSE(Decimal(1) < Decimal(0));
278 EXPECT_FALSE(Decimal(1) <= Decimal(0));
279 EXPECT_FALSE(Decimal(1) > Decimal(2));
280 EXPECT_FALSE(Decimal(1) >= Decimal(2));
347 const Decimal Infinity(Decimal::infinity(Positive));
348 const Decimal MinusInfinity(Decimal::infinity(Negative));
349 const Decimal NaN(Decimal::nan());
350 const Decimal Zero(Decimal::zero(Positive));
351 const Decimal MinusZero(Decimal::zero(Negative));
352 const Decimal Ten(10);
491 EXPECT_EQ(encode(0, 0, Positive), Decimal(0) / Decimal(1));
492 EXPECT_EQ(encode(2, 0, Negative), Decimal(2) / Decimal(-1));
493 EXPECT_EQ(encode(5, -1, Negative), Decimal(-1) / Decimal(2));
494 EXPECT_EQ(encode(99, 0, Positive), Decimal(99) / Decimal(1));
495 EXPECT_EQ(Decimal(1), Decimal(-50) / Decimal(-50));
496 EXPECT_EQ(encode(UINT64_C(33333333333333333), -17, Positive), Decimal(1) / Decimal(3));
497 EXPECT_EQ(encode(UINT64_C(12345678901234), -1, Positive), encode(UINT64_C(12345678901234), 0, Positive) / Decimal(10));
504 EXPECT_EQ(Decimal::infinity(Positive), encode(1, 1022, Positive) / encode(1, -1000, Positive));
515 const Decimal Infinity(Decimal::infinity(Positive));
516 const Decimal MinusInfinity(Decimal::infinity(Negative));
517 const Decimal NaN(Decimal::nan());
518 const Decimal Zero(Decimal::zero(Positive));
519 const Decimal MinusZero(Decimal::zero(Negative));
520 const Decimal Ten(10);
521 const Decimal MinusTen(-10);
562 EXPECT_EQ(Decimal(1), Decimal(1));
564 EXPECT_EQ(Decimal::infinity(Positive), encode(1, 2000, Positive));
565 EXPECT_EQ(Decimal::zero(Positive), encode(1, -2000, Positive));
570 EXPECT_EQ(Decimal(1), Decimal(1).floor());
571 EXPECT_EQ(Decimal(0), encode(1, -10, Positive).floor());
572 EXPECT_EQ(Decimal(1), encode(11, -1, Positive).floor());
573 EXPECT_EQ(Decimal(1), encode(13, -1, Positive).floor());
574 EXPECT_EQ(Decimal(1), encode(15, -1, Positive).floor());
575 EXPECT_EQ(Decimal(1), encode(19, -1, Positive).floor());
576 EXPECT_EQ(Decimal(1), encode(193332, -5, Positive).floor());
577 EXPECT_EQ(Decimal(12), encode(12002, -3, Positive).floor());
579 EXPECT_EQ(Decimal(-1), Decimal(-1).floor());
580 EXPECT_EQ(Decimal(-1), encode(1, -10, Negative).floor());
581 EXPECT_EQ(Decimal(-2), encode(11, -1, Negative).floor());
582 EXPECT_EQ(Decimal(-2), encode(13, -1, Negative).floor());
583 EXPECT_EQ(Decimal(-2), encode(15, -1, Negative).floor());
584 EXPECT_EQ(Decimal(-2), encode(19, -1, Negative).floor());
585 EXPECT_EQ(Decimal(-2), encode(193332, -5, Negative).floor());
586 EXPECT_EQ(Decimal(-13), encode(12002, -3, Negative).floor());
603 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).floor());
604 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).floor());
605 EXPECT_EQ(Decimal::nan(), Decimal::nan().floor());
610 EXPECT_EQ(encode(0, 0, Positive), Decimal::fromDouble(0.0));
611 EXPECT_EQ(encode(0, 0, Negative), Decimal::fromDouble(-0.0));
612 EXPECT_EQ(encode(1, 0, Positive), Decimal::fromDouble(1));
613 EXPECT_EQ(encode(1, 0, Negative), Decimal::fromDouble(-1));
614 EXPECT_EQ(encode(123, 0, Positive), Decimal::fromDouble(123));
615 EXPECT_EQ(encode(123, 0, Negative), Decimal::fromDouble(-123));
616 EXPECT_EQ(encode(1, -1, Positive), Decimal::fromDouble(0.1));
617 EXPECT_EQ(encode(1, -1, Negative), Decimal::fromDouble(-0.1));
622 EXPECT_EQ(encode(UINT64_C(2220446049250313), -31, Positive), Decimal::fromDouble(std::numeric_limits<double>::epsilon()));
623 EXPECT_EQ(encode(UINT64_C(2220446049250313), -31, Negative), Decimal::fromDouble(-std::numeric_limits<double>::epsilon()));
624 EXPECT_EQ(encode(UINT64_C(17976931348623157), 292, Positive), Decimal::fromDouble(std::numeric_limits<double>::max()));
625 EXPECT_EQ(encode(UINT64_C(17976931348623157), 292, Negative), Decimal::fromDouble(-std::numeric_limits<double>::max()));
626 EXPECT_EQ(encode(UINT64_C(22250738585072014), -324, Positive), Decimal::fromDouble(std::numeric_limits<double>::min()));
627 EXPECT_EQ(encode(UINT64_C(22250738585072014), -324, Negative), Decimal::fromDouble(-std::numeric_limits<double>::min()));
628 EXPECT_TRUE(Decimal::fromDouble(std::numeric_limits<double>::infinity()).isInfinity());
629 EXPECT_TRUE(Decimal::fromDouble(-std::numeric_limits<double>::infinity()).isInfinity());
630 EXPECT_TRUE(Decimal::fromDouble(std::numeric_limits<double>::quiet_NaN()).isNaN());
631 EXPECT_TRUE(Decimal::fromDouble(-std::numeric_limits<double>::quiet_NaN()).isNaN());
636 EXPECT_EQ(encode(0, 0, Positive), Decimal(0));
637 EXPECT_EQ(encode(1, 0, Positive), Decimal(1));
638 EXPECT_EQ(encode(1, 0, Negative), Decimal(-1));
639 EXPECT_EQ(encode(100, 0, Positive), Decimal(100));
640 EXPECT_EQ(encode(100, 0, Negative), Decimal(-100));
641 EXPECT_EQ(encode(0x7FFFFFFF, 0, Positive), Decimal(std::numeric_limits<int32_t>::max()));
642 EXPECT_EQ(encode(0x80000000u, 0, Negative), Decimal(std::numeric_limits<int32_t>::min()));
649 EXPECT_EQ(Decimal(1), fromString("1"));
651 EXPECT_EQ(Decimal(1), fromString("01"));
670 EXPECT_EQ(Decimal::infinity(Positive), fromString("1E20000"));
671 EXPECT_EQ(Decimal::zero(Positive), fromString("1E-20000"));
673 EXPECT_EQ(Decimal::zero(Positive), fromString("1E-1026"));
674 EXPECT_EQ(Decimal::infinity(Positive), fromString("1234567890E1036"));
684 EXPECT_EQ(Decimal::nan(), fromString(" 123 "));
685 EXPECT_EQ(Decimal::nan(), fromString("1,234"));
691 EXPECT_EQ(Decimal::nan(), fromString("INF"));
692 EXPECT_EQ(Decimal::nan(), fromString("Infinity"));
693 EXPECT_EQ(Decimal::nan(), fromString("infinity"));
694 EXPECT_EQ(Decimal::nan(), fromString("+Infinity"));
695 EXPECT_EQ(Decimal::nan(), fromString("+infinity"));
696 EXPECT_EQ(Decimal::nan(), fromString("-Infinity"));
697 EXPECT_EQ(Decimal::nan(), fromString("-infinity"));
698 EXPECT_EQ(Decimal::nan(), fromString("NaN"));
699 EXPECT_EQ(Decimal::nan(), fromString("nan"));
700 EXPECT_EQ(Decimal::nan(), fromString("+NaN"));
701 EXPECT_EQ(Decimal::nan(), fromString("+nan"));
702 EXPECT_EQ(Decimal::nan(), fromString("-NaN"));
703 EXPECT_EQ(Decimal::nan(), fromString("-nan"));
708 EXPECT_EQ(Decimal::nan(), fromString("x"));
709 EXPECT_EQ(Decimal::nan(), fromString("0."));
710 EXPECT_EQ(Decimal::nan(), fromString("1x"));
712 EXPECT_EQ(Decimal::nan(), fromString("1Ex"));
713 EXPECT_EQ(Decimal::nan(), fromString("1E2x"));
714 EXPECT_EQ(Decimal::nan(), fromString("1E+x"));
719 EXPECT_EQ(encode(0, 0, Positive), Decimal(0) * Decimal(0));
720 EXPECT_EQ(encode(2, 0, Negative), Decimal(2) * Decimal(-1));
721 EXPECT_EQ(encode(2, 0, Negative), Decimal(-1) * Decimal(2));
722 EXPECT_EQ(encode(99, 0, Positive), Decimal(99) * Decimal(1));
723 EXPECT_EQ(encode(2500, 0, Positive), Decimal(-50) * Decimal(-50));
730 EXPECT_EQ(Decimal::infinity(Positive), encode(1, 1022, Positive) * encode(1, 1022, Positive));
742 const Decimal Infinity(Decimal::infinity(Positive));
743 const Decimal MinusInfinity(Decimal::infinity(Negative));
744 const Decimal NaN(Decimal::nan());
745 const Decimal Ten(10);
746 const Decimal MinusTen(-10);
747 const Decimal Zero(Decimal::zero(Positive));
748 const Decimal MinusZero(Decimal::zero(Negative));
820 EXPECT_EQ(Decimal::infinity(Negative), -Decimal::infinity(Positive));
821 EXPECT_EQ(Decimal::infinity(Positive), -Decimal::infinity(Negative));
822 EXPECT_EQ(Decimal::nan(), -Decimal::nan());
827 EXPECT_TRUE(Decimal::zero(Positive).isFinite());
828 EXPECT_FALSE(Decimal::zero(Positive).isInfinity());
829 EXPECT_FALSE(Decimal::zero(Positive).isNaN());
830 EXPECT_TRUE(Decimal::zero(Positive).isPositive());
831 EXPECT_FALSE(Decimal::zero(Positive).isNegative());
832 EXPECT_FALSE(Decimal::zero(Positive).isSpecial());
833 EXPECT_TRUE(Decimal::zero(Positive).isZero());
835 EXPECT_TRUE(Decimal::zero(Negative).isFinite());
836 EXPECT_FALSE(Decimal::zero(Negative).isInfinity());
837 EXPECT_FALSE(Decimal::zero(Negative).isNaN());
838 EXPECT_FALSE(Decimal::zero(Negative).isPositive());
839 EXPECT_TRUE(Decimal::zero(Negative).isNegative());
840 EXPECT_FALSE(Decimal::zero(Negative).isSpecial());
841 EXPECT_TRUE(Decimal::zero(Negative).isZero());
843 EXPECT_TRUE(Decimal(123).isFinite());
844 EXPECT_FALSE(Decimal(123).isInfinity());
845 EXPECT_FALSE(Decimal(123).isNaN());
846 EXPECT_TRUE(Decimal(123).isPositive());
847 EXPECT_FALSE(Decimal(123).isNegative());
848 EXPECT_FALSE(Decimal(123).isSpecial());
849 EXPECT_FALSE(Decimal(123).isZero());
851 EXPECT_TRUE(Decimal(-123).isFinite());
852 EXPECT_FALSE(Decimal(-123).isInfinity());
853 EXPECT_FALSE(Decimal(-123).isNaN());
854 EXPECT_FALSE(Decimal(-123).isPositive());
855 EXPECT_TRUE(Decimal(-123).isNegative());
856 EXPECT_FALSE(Decimal(-123).isSpecial());
857 EXPECT_FALSE(Decimal(-123).isZero());
862 EXPECT_FALSE(Decimal::infinity(Positive).isFinite());
863 EXPECT_TRUE(Decimal::infinity(Positive).isInfinity());
864 EXPECT_FALSE(Decimal::infinity(Positive).isNaN());
865 EXPECT_TRUE(Decimal::infinity(Positive).isPositive());
866 EXPECT_FALSE(Decimal::infinity(Positive).isNegative());
867 EXPECT_TRUE(Decimal::infinity(Positive).isSpecial());
868 EXPECT_FALSE(Decimal::infinity(Positive).isZero());
870 EXPECT_FALSE(Decimal::infinity(Negative).isFinite());
871 EXPECT_TRUE(Decimal::infinity(Negative).isInfinity());
872 EXPECT_FALSE(Decimal::infinity(Negative).isNaN());
873 EXPECT_FALSE(Decimal::infinity(Negative).isPositive());
874 EXPECT_TRUE(Decimal::infinity(Negative).isNegative());
875 EXPECT_TRUE(Decimal::infinity(Negative).isSpecial());
876 EXPECT_FALSE(Decimal::infinity(Negative).isZero());
878 EXPECT_FALSE(Decimal::nan().isFinite());
879 EXPECT_FALSE(Decimal::nan().isInfinity());
880 EXPECT_TRUE(Decimal::nan().isNaN());
881 EXPECT_TRUE(Decimal::nan().isSpecial());
882 EXPECT_FALSE(Decimal::nan().isZero());
916 EXPECT_EQ(Decimal(1), Decimal(10).remainder(3));
917 EXPECT_EQ(Decimal(1), Decimal(10).remainder(-3));
918 EXPECT_EQ(encode(1, 0, Negative), Decimal(-10).remainder(3));
919 EXPECT_EQ(Decimal(-1), Decimal(-10).remainder(-3));
921 EXPECT_EQ(encode(1, -1, Positive), Decimal(10).remainder(encode(3, -1, Positive)));
922 EXPECT_EQ(Decimal(1), encode(36, -1, Positive).remainder(encode(13, -1, Positive)));
923 EXPECT_EQ(encode(1, 86, Positive), (encode(1234, 100, Positive).remainder(Decimal(3))));
924 EXPECT_EQ(Decimal(500), (Decimal(500).remainder(1000)));
925 EXPECT_EQ(Decimal(-500), (Decimal(-500).remainder(1000)));
932 EXPECT_EQ(Decimal::infinity(Positive), encode(1, 1022, Positive).remainder(encode(1, -1000, Positive)));
943 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).remainder(1));
944 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).remainder(1));
945 EXPECT_EQ(Decimal::nan(), Decimal::nan().remainder(1));
947 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Positive).remainder(-1));
948 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Negative).remainder(-1));
949 EXPECT_EQ(Decimal::nan(), Decimal::nan().remainder(-1));
951 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).remainder(3));
952 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).remainder(3));
953 EXPECT_EQ(Decimal::nan(), Decimal::nan().remainder(3));
955 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Positive).remainder(-1));
956 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Negative).remainder(-1));
957 EXPECT_EQ(Decimal::nan(), Decimal::nan().remainder(-1));
959 EXPECT_EQ(Decimal::nan(), Decimal(1).remainder(Decimal::infinity(Positive)));
960 EXPECT_EQ(Decimal::nan(), Decimal(1).remainder(Decimal::infinity(Negative)));
961 EXPECT_EQ(Decimal::nan(), Decimal(1).remainder(Decimal::nan()));
966 EXPECT_EQ(Decimal(1), (Decimal(9) / Decimal(10)).round());
967 EXPECT_EQ(Decimal(25), (Decimal(5) / fromString("0.200")).round());
968 EXPECT_EQ(Decimal(3), (Decimal(5) / Decimal(2)).round());
969 EXPECT_EQ(Decimal(1), (Decimal(2) / Decimal(3)).round());
970 EXPECT_EQ(Decimal(3), (Decimal(10) / Decimal(3)).round());
971 EXPECT_EQ(Decimal(3), (Decimal(1) / fromString("0.3")).round());
972 EXPECT_EQ(Decimal(10), (Decimal(1) / fromString("0.1")).round());
973 EXPECT_EQ(Decimal(5), (Decimal(1) / fromString("0.2")).round());
974 EXPECT_EQ(Decimal(10), (fromString("10.2") / 1).round());
977 EXPECT_EQ(Decimal(2), encode(190002, -5, Positive).round());
978 EXPECT_EQ(Decimal(2), encode(150002, -5, Positive).round());
979 EXPECT_EQ(Decimal(2), encode(150000, -5, Positive).round());
980 EXPECT_EQ(Decimal(12), encode(12492, -3, Positive).round());
981 EXPECT_EQ(Decimal(13), encode(12502, -3, Positive).round());
983 EXPECT_EQ(Decimal(-2), encode(190002, -5, Negative).round());
984 EXPECT_EQ(Decimal(-2), encode(150002, -5, Negative).round());
985 EXPECT_EQ(Decimal(-2), encode(150000, -5, Negative).round());
986 EXPECT_EQ(Decimal(-12), encode(12492, -3, Negative).round());
987 EXPECT_EQ(Decimal(-13), encode(12502, -3, Negative).round());
992 EXPECT_EQ(Decimal::infinity(Positive), Decimal::infinity(Positive).round());
993 EXPECT_EQ(Decimal::infinity(Negative), Decimal::infinity(Negative).round());
994 EXPECT_EQ(Decimal::nan(), Decimal::nan().round());
999 EXPECT_EQ(encode(0, 0, Positive), Decimal(0) - Decimal(0));
1000 EXPECT_EQ(encode(3, 0, Positive), Decimal(2) - Decimal(-1));
1001 EXPECT_EQ(encode(3, 0, Negative), Decimal(-1) - Decimal(2));
1002 EXPECT_EQ(encode(98, 0, Positive), Decimal(99) - Decimal(1));
1003 EXPECT_EQ(encode(0, 0, Positive), Decimal(-50) - Decimal(-50));
1004 EXPECT_EQ(encode(UINT64_C(1000000000000000), 35, Positive), encode(1, 50, Positive) - Decimal(1));
1005 EXPECT_EQ(encode(UINT64_C(1000000000000000), 35, Negative), Decimal(1) - encode(1, 50, Positive));
1023 const Decimal Infinity(Decimal::infinity(Positive));
1024 const Decimal MinusInfinity(Decimal::infinity(Negative));
1025 const Decimal NaN(Decimal::nan());
1026 const Decimal Ten(10);
1079 EXPECT_TRUE(std::isinf(Decimal::infinity(Decimal::Positive).toDouble()));
1080 EXPECT_TRUE(std::isinf(Decimal::infinity(Decimal::Negative).toDouble()));
1081 EXPECT_TRUE(std::isnan(Decimal::nan().toDouble()));
1086 EXPECT_DECIMAL_STREQ("0", Decimal::zero(Positive));
1087 EXPECT_DECIMAL_STREQ("-0", Decimal::zero(Negative));
1088 EXPECT_DECIMAL_STREQ("1", Decimal(1));
1089 EXPECT_DECIMAL_STREQ("-1", Decimal(-1));
1090 EXPECT_DECIMAL_STREQ("1234567", Decimal(1234567));
1091 EXPECT_DECIMAL_STREQ("-1234567", Decimal(-1234567));
1120 EXPECT_DECIMAL_STREQ("Infinity", Decimal::infinity(Positive));
1121 EXPECT_DECIMAL_STREQ("-Infinity", Decimal::infinity(Negative));
1122 EXPECT_DECIMAL_STREQ("NaN", Decimal::nan());