https://github.com/basemax/bignumberc
The Big Number C library is a C library for arbitrary precision arithmetic. It can be used to perform arithmetic operations on numbers of arbitrary size. It is written in C and is designed to be portable and efficient. You can work with numbers of any size, and the library will automatically allocate memory as needed.
https://github.com/basemax/bignumberc
big-number big-number-calculation big-number-multiplication big-numbers bignumber bignumbers c c-library number-converter
Last synced: 10 months ago
JSON representation
The Big Number C library is a C library for arbitrary precision arithmetic. It can be used to perform arithmetic operations on numbers of arbitrary size. It is written in C and is designed to be portable and efficient. You can work with numbers of any size, and the library will automatically allocate memory as needed.
- Host: GitHub
- URL: https://github.com/basemax/bignumberc
- Owner: BaseMax
- License: gpl-3.0
- Created: 2022-11-01T17:17:27.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-11-11T10:00:45.000Z (over 3 years ago)
- Last Synced: 2025-07-30T08:29:25.604Z (11 months ago)
- Topics: big-number, big-number-calculation, big-number-multiplication, big-numbers, bignumber, bignumbers, c, c-library, number-converter
- Language: C
- Homepage:
- Size: 62.5 KB
- Stars: 6
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Big Number C (BigNumberC)
The Big Number C library is a C library for arbitrary precision arithmetic. It can be used to perform arithmetic operations on numbers of arbitrary size. It is written in C and is designed to be portable and efficient. You can work with numbers of any size, and the library will automatically allocate memory as needed.
## BigNumber Functions
- `BigNumber* createBigNumber(int size)`: Create a Big Number object
- `void setBigNumber(BigNumber *bn, int *digits, int size)`: Set the Big Number object
- `BigNumber* createAndSetBigNumber(int *digits, int size)`: Create a Big Number object and set it digits
- `void destroyBigNumber(BigNumber *bn)`: Destroy the Big Number object
- `void printBigNumber(BigNumber *bn)`: Print the Big Number object
- `BigNumber* addBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Add two Big Numbers
- `BigNumber* multiplyBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Multiply two Big Numbers
- `BigNumber* copyBigNumber(BigNumber *bn)`: Deep copy a Big Number
- `BigNumber* minusBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Minus two Big Numbers
- `BigNumber* divideBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Divide two Big Numbers
- `BigNumber* remainderBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Remainder two Big Numbers
- `int compareBigNumbers(BigNumber *bn1, BigNumber *bn2)`: Compare two Big Numbers
## BigNumber Header
```c
#include
#include
typedef struct {
int *digits;
int size;
} BigNumber;
/**
Create a Big Number object
*
* @param size
* @return BigNumber*
*/
BigNumber* createBigNumber(int size)
/**
Set the Big Number object
*
* @param bn
* @param digits
* @param size
*/
void setBigNumber(BigNumber *bn, int *digits, int size)
/**
Create a Big Number object and set it digits
*
* @param digits
* @param size
* @return BigNumber*
*/
BigNumber* createAndSetBigNumber(int *digits, int size)
/**
Destroy the Big Number object
*
* @param bn
*/
void destroyBigNumber(BigNumber *bn)
/**
Print the Big Number object
*
* @param bn
*/
void printBigNumber(BigNumber *bn)
/**
Add two Big Numbers
*
* @param bn1
* @param bn2
* @return BigNumber*
*/
BigNumber* addBigNumbers(BigNumber *bn1, BigNumber *bn2)
/**
Multiply two Big Numbers
*
* @param bn1
* @param bn2
* @return BigNumber*
*/
BigNumber* multiplyBigNumbers(BigNumber *bn1, BigNumber *bn2)
/**
Deep copy a Big Number
*
* @param bn
* @return BigNumber*
*/
BigNumber* copyBigNumber(BigNumber *bn)
/**
Minus two Big Numbers
*
* @param bn1
* @param bn2
* @return BigNumber*
*/
BigNumber* minusBigNumbers(BigNumber *bn1, BigNumber *bn2)
/**
Divide two Big Numbers
*
* @param bn1
* @param bn2
* @return BigNumber*
*/
BigNumber* divideBigNumbers(BigNumber *bn1, BigNumber *bn2)
/**
Remainder two Big Numbers
*
* @param bn1
* @param bn2
* @return BigNumber*
*/
BigNumber* remainderBigNumbers(BigNumber *bn1, BigNumber *bn2)
/**
Compare two Big Numbers
*
* @param bn1
* @param bn2
* @return int
*/
int compareBigNumbers(BigNumber *bn1, BigNumber *bn2)
```
## TODO
- [ ] Memory optimization
- [ ] Add more functions
- [ ] Add more tests
- [ ] Add more documentation
© Copyright 2022, Max Base