예제 #1
0
	BigInteger& operator -- () {
		return *this -= BigInteger(1);
	}
예제 #2
0
TEST(BigInteger, CorrectlySubtractsMixedPositiveAndNegative2) {
    ASSERT_EQ(17, BigInteger(5) - (-12));
}
예제 #3
0
TEST(BigInteger, CorrectlySubtractsMixedPositiveAndNegative4) {
    ASSERT_EQ(-17, BigInteger(-5) - 12);
}
예제 #4
0
TEST(BigInteger, CorrectlySubtractsPositiveAndNegative1) {
    ASSERT_EQ(-17, BigInteger(-12) - BigInteger(5));
}
예제 #5
0
TEST(BigInteger, CorrectlyParsesNegativeNumberWithZeroes) {
    ASSERT_EQ(-12040, BigInteger(-12040));
}
예제 #6
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers3) {
    ASSERT_EQ(-999, 1 - BigInteger(1000));
}
예제 #7
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers5) {
    ASSERT_EQ(10, 21 - BigInteger(11));
}
예제 #8
0
TEST(BigInteger, CorrectlyAddsTwoNegativeNumbers3) {
    ASSERT_EQ(-1000, BigInteger(-999) + BigInteger(-1));
}
예제 #9
0
TEST(BigInteger, CorrectlyParsesNumberWithZeroes) {
    ASSERT_EQ(12040, BigInteger(12040));
}
예제 #10
0
파일: bigint.cpp 프로젝트: eyqs/alg
BigInteger operator<<(const BigInteger& obj, int value) {
    BigInteger res = BigInteger(obj.get_msb() + value);
    for (int i = 0; i < obj.get_msb(); ++i)
        res.set(value + i, obj.at(i));
    return res;
}
예제 #11
0
//-------------------------------------------------------------
// returns the absolute value
BigInteger BigInteger::absolute()
{
	return BigInteger( getNumber() ); // +ve by default
}
예제 #12
0
파일: bigint.cpp 프로젝트: eyqs/alg
    while (i > 0)
        output[j++] = data[--i];
    output[j] = '\0';
}

BigInteger operator<<(const BigInteger& obj, int value) {
    BigInteger res = BigInteger(obj.get_msb() + value);
    for (int i = 0; i < obj.get_msb(); ++i)
        res.set(value + i, obj.at(i));
    return res;
}

BigInteger operator>>(const BigInteger& obj, int value) {
    if (obj.get_msb() <= value)
        return BigInteger();
    BigInteger res = BigInteger(obj.get_msb() - value);
    for (int i = value; i < obj.get_msb(); ++i)
        res.set(i - value, obj.at(i));
    return res;
}

bool operator<(const BigInteger& lhs, const BigInteger& rhs) {
    if (lhs.get_sign() && !rhs.get_sign())
        return false;
    if (rhs.get_sign() && !lhs.get_sign())
        return true;
    switch (absolute_less(lhs, rhs)) {
    case 'l':
        return lhs.get_sign();
    case 'r':
        return !lhs.get_sign();
예제 #13
0
BigInteger stringToBigInteger(const std::string &s) {
	// Recognize a sign followed by a BigUnsigned.
	return (s[0] == '-') ? BigInteger(stringToBigUnsigned(s.substr(1, s.length() - 1)), BigInteger::negative)
		: (s[0] == '+') ? BigInteger(stringToBigUnsigned(s.substr(1, s.length() - 1)))
		: BigInteger(stringToBigUnsigned(s));
}
예제 #14
0
	BigInteger& operator = (intmax_t v) {
		return *this = BigInteger(v);
	}
예제 #15
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers1) {
    ASSERT_EQ(-1265, 34 - BigInteger(1299));
}
예제 #16
0
TEST(BigInteger, CorrectlyAddsTwoMixedNegativeNumbers1) {
    ASSERT_EQ(-1333, -34 + BigInteger(-1299));
}
예제 #17
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers2) {
    ASSERT_EQ(1265, BigInteger(1299) - 34);
}
예제 #18
0
TEST(BigInteger, CorrectlyAddsTwoMixedNegativeNumbers2) {
    ASSERT_EQ(-1333, BigInteger(-1299) + (-34));
}
예제 #19
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers4) {
    ASSERT_EQ(999, BigInteger(1000) - 1);
}
예제 #20
0
TEST(BigInteger, CorrectlyAddsTwoMixedNegativeNumbers3) {
    ASSERT_EQ(-1000, -999 + BigInteger(-1));
}
예제 #21
0
TEST(BigInteger, CorrectlySubtractsTwoMixedPositiveNumbers6) {
    ASSERT_EQ(0, BigInteger(11) - 11);
}
예제 #22
0
TEST(BigInteger, CorrectlyAddsTwoMixedNegativeNumbers4) {
    ASSERT_EQ(-1000, BigInteger(-1) + (-999));
}
예제 #23
0
TEST(BigInteger, CorrectlySubtractsPositiveAndNegative3) {
    ASSERT_EQ(17, BigInteger(12) - BigInteger(-5));
}
예제 #24
0
TEST(BigInteger, CorrectlySubtractsTwoPositiveNumbers1) {
    ASSERT_EQ(-1265, BigInteger(34) - BigInteger(1299));
}
예제 #25
0
TEST(BigInteger, CorrectlySubtractsMixedPositiveAndNegative1) {
    ASSERT_EQ(-17, -12 - BigInteger(5));
}
예제 #26
0
TEST(BigInteger, CorrectlySubtractsTwoPositiveNumbers5) {
    ASSERT_EQ(10, BigInteger(21) - BigInteger(11));
}
예제 #27
0
TEST(BigInteger, CorrectlySubtractsMixedPositiveAndNegative3) {
    ASSERT_EQ(17, 12 - BigInteger(-5));
}
예제 #28
0
TEST(BigInteger, CorrectlyParsesNegativeNumberWithoutZeroes) {
    ASSERT_EQ(-12345, BigInteger(-12345));
}
예제 #29
0
TEST(BigInteger, CorrectlySubtractsTwoNegativeNumbers1) {
    ASSERT_EQ(1265, BigInteger(-34) - BigInteger(-1299));
}
예제 #30
0
	BigInteger& operator ++() {
		return *this += BigInteger(1);
	}