# Bignum

## Bignum¶

This module provides function and classes to operate on arbitrary precision integers. It is based on the very high performance library TomMath slightly modified to be compatible with Zerynth memory manager.

## The Bignum class¶

### class `BigNum`¶

``````BigNum(val=0)
``````

This class represents a big integer number with arbitrary precision. A big number instance can be initialized with a value val. val can be a standard integer or a string representing the number. The string is accepted if it is in base 16 prefixed with '0x' or in base 10. Signed number are accepted. At the moment, bytearray or bytes representation are not supported.

BigNum instances are compatible with streams and, if printed, are automatically converted to the base 10 string format.

BigNum instances are easy to use: ::

``````from bignum import bignum as bg
import streams

streams.serial()

big = bg.BigNum("1234567890987654321")
one = bg.BigNum(1)

while True:
print(big)
big.iadd(one)
sleep(1000)
``````

### method `add`¶

``````add(b)
``````

Return a new big number instance equal to the addition of the current instance and b.

### method `iadd`¶

``````iadd(b)
``````

Add to the current instance the big number b. Return `None`

### method `sub`¶

``````sub(b)
``````

Return a new big number instance equal to the difference of the current instance and b.

### method `isub`¶

``````isub(b)
``````

Subtracts to the current instance the big number b. Return `None`

### method `mul`¶

``````mul(b)
``````

Return a new big number instance equal to the multiplication of the current instance and b.

### method `imul`¶

``````imul(,b)
``````

Multiply the current instance for the big number b. Return `None`

### method `div`¶

``````div(b)
``````

Return a new big number instance equal to the division of the current instance by b.

### method `idiv`¶

``````idiv(b)
``````

Divides the current instance for the big number b. Return `None`

### method `mod`¶

``````mod(b)
``````

Return a new big number instance equal to the remainder of the division of the current instance by b.

### method `imod`¶

``````imod(b)
``````

Set the current instance to the remainder of the division by b. Return `None`

### method `divmod`¶

``````divmod(b)
``````

Return a tuple (q,r) of new big number instances representing the quotient q and the remainder r of the division of the current instance by b.

### method `eq`¶

``````eq(b)
``````

Return True if the current instance is equal to the big number b, False otherwise.

### method `lt`¶

``````lt(b)
``````

Return True if the current instance is less than the big number b, False otherwise.

### method `gt`¶

``````gt(b)
``````

Return True if the current instance is greater than the big number b, False otherwise.

### method `lte`¶

``````lte(b)
``````

Return True if the current instance is less than or equal to the big number b, False otherwise.

### method `gte`¶

``````gte(b)
``````

Return True if the current instance is greater than or equal to the big number b, False otherwise.

### method `sign`¶

``````sign()
``````

Return 1 if the current instance is a positive number, -1 if the current instance is a negative number, 0 if it is equal to zero.

### method `to_base`¶

``````to_base(base)
``````

Return a string representation of the big number in base base. Allowed values for base are in the range 2..64.