C++ class for creating and computing arbitrary-length integers
C++ CMake
Switch branches/tags
Nothing to show
Latest commit 4a65e2d May 25, 2017 @Limeoats committed on GitHub Fix README formatting

README.md

BigNumber

BigNumber build License

BigNumber is a C++ class that allows for the creation and computation of arbitrary-length integers.

The maximum possible length of a BigNumber is std::string::max_size.

Installation

To add BigNumber to your C++ project, you can download the bin folder from this repository, which contains the library and include files.

Then, simply include the header file in whichever file you need a BigNumber and link to the library file.

#include "bignumber.h"

Usage

BigNumber(string)

You can also use the = operator to set a BigNumber equal to an existing BigNumber, a number, or a string of numbers.

Examples:

BigNumber b("5");       //BigNumber b is created with value 5.
BigNumber c("-20");     //BigNumber c is created with value -20.
BigNumber d("0");       //BigNumber d is created with value 0.
BigNumber e = b;        //BigNumber e is created with value 5.
BigNumber f = 30;       //BigNumber f is created with value 30.
BigNumber g = "2060";   //BigNumber g is created with value 2060.
BigNumber h(22);        //BigNumber h is created with value 22.

Methods

add(BigNumber other)

Adds another BigNumber to the current instance

BigNumber("4").add(BigNumber("20")) => BigNumber("24")

subtract(BigNumber other)

Subtracts another BigNumber from the current instance

BigNumber("30").subtract(BigNumber("45")) => BigNumber("-15")

multiply(BigNumber other)

Multiplies the BigNumber by another BigNumber

BigNumber("12").multiply(BigNumber("4")) => BigNumber("48")

divide(BigNumber other)

Divides the BigNumber by another BigNumber

BigNumber("30").divide(BigNumber("5")) => BigNumber("6")

pow(int exponent)

Raises the BigNumber to the power of the exponent

BigNumber("2").pow(3) => BigNumber("8")

getString()

Returns the BigNumber as an std::string

BigNumber("3824").getString() => "3824"

setString(std::string newStr)

Sets the BigNumber's internal number string to a new string

BigNumber("2847").setString("38") => BigNumber("38")

negate()

Changes the sign of the BigNumber

BigNumber("3").negate() => BigNumber("-3")
BigNumber("-27").negate() => BigNumber("27")

equals(BigNumber other)

Checks if the other BigNumber is equal to this one

BigNumber("24").equals(BigNumber("28")) => false

digits()

Returns the number of digits in the BigNumber

BigNumber("28374").digits() => 5

isNegative()

Determines whether a BigNumber is negative

BigNumber("-278").isNegative() => true

isPositive()

Determines whether a BigNumber is positive

BigNumber("-3").isPositive() => false

isEven()

Determines whether a BigNumber is even

BigNumber("28472310").isEven() => true

isOdd()

Determines whether a BigNumber is odd

BigNumber("283427").isOdd() => true

abs()

Gets the absolute value of the BigNumber

BigNumber("-26").abs() => BigNumber("26")

Operator overloads

The following operators have been overloaded to work with BigNumbers:

<<

Output stream operator

std::cout << BigNumber("26") << std::endl => 26

+

Addition operator

BigNumber("2") + BigNumber("4") => BigNumber("6")

-

Subtraction operator

BigNumber("0") - BigNumber("2000") => BigNumber("-2000")

*

Multiplication operator

BigNumber("-20") * BigNumber("-5") => BigNumber("100")

/

Division operator

BigNumber("10") / BigNumber("-2") => BigNumber("-5")

==

Equal to operator

BigNumber("24") == BigNumber("24") => true

>

Greater than operator

BigNumber("2") > BigNumber("6") => false

<

Less than operator

BigNumber("2") < BigNumber("6") => true

>=

Greater than or equal to operator

BigNumber("34") >= BigNumber("22") => true

<=

Less than or equal to operator

BigNumber("383") <= BigNumber("383") => true

=

Assignment operator

BigNumber c("3") = BigNumber("8") => BigNumber("8")

+=

Adds and assigns to the BigNumber

BigNumber c("4") += BigNumber("3") => BigNumber("7")

-=

Subtracts and assigns to the BigNumber

BigNumber c("28") -= BigNumber("3") => BigNumber("25")

*=

Multiplies and assigns to the BigNumber

BigNumber c("3") *= BigNumber("4") => BigNumber("12")

/=

Divides and assigns to the BigNumber

BigNumber c("30") /= BigNumber("30") => BigNumer("1")

++ (Prefix)

Increments the BigNumber and returns the newly incremented number

++BigNumber("10") => BigNumber("11")

-- (Prefix)

Decrements the BigNumber and returns the newly decremented number

--BigNumber("34") => BigNumber("33")

++ (Postfix)

Increments the BigNumber but returns the original value

BigNumber("20")++ => BigNumber("20")

-- (Postfix)

Decrements the BigNumber but returns the original value

BigNumber("14")-- => BigNumber("14")

[]

Indexing operator

BigNumber d("26")[1] => 6

License

This project is under the Apache License.

Credit

The BigNumber class was created by Mark Guerra. Visit Limeoats.com for more information.