Implemented Karatsuba's algorithm and fixed many critical bugs
This commit is contained in:
592
src/bignum.c
592
src/bignum.c
File diff suppressed because it is too large
Load Diff
15
src/bignum.h
15
src/bignum.h
@@ -14,11 +14,11 @@
|
|||||||
typedef enum { false = 0x0, true } bool;
|
typedef enum { false = 0x0, true } bool;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
BIGNUM_OK = 0x0,
|
BIGINT_OK = 0x0,
|
||||||
BIGNUM_ERR_ALLOCATE,
|
BIGINT_ERR_ALLOCATE,
|
||||||
BIGNUM_ERR_DIV_BY_ZERO,
|
BIGINT_ERR_DIV_BY_ZERO,
|
||||||
BIGNUM_ERR_INVALID
|
BIGINT_ERR_INVALID
|
||||||
} bignum_status_t;
|
} bigint_status_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
vector_t *digits;
|
vector_t *digits;
|
||||||
@@ -26,11 +26,11 @@ typedef struct {
|
|||||||
} bigint_t;
|
} bigint_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bignum_status_t status;
|
bigint_status_t status;
|
||||||
uint8_t message[RESULT_MSG_SIZE];
|
uint8_t message[RESULT_MSG_SIZE];
|
||||||
union {
|
union {
|
||||||
bigint_t *number;
|
bigint_t *number;
|
||||||
uint8_t compare_status;
|
int8_t compare_status;
|
||||||
char *string_num;
|
char *string_num;
|
||||||
} value;
|
} value;
|
||||||
} bigint_result_t;
|
} bigint_result_t;
|
||||||
@@ -45,6 +45,7 @@ bigint_result_t bigint_clone(const bigint_t *number);
|
|||||||
bigint_result_t bigint_compare(const bigint_t *x, const bigint_t *y);
|
bigint_result_t bigint_compare(const bigint_t *x, const bigint_t *y);
|
||||||
bigint_result_t bigint_add(const bigint_t *x, const bigint_t *y);
|
bigint_result_t bigint_add(const bigint_t *x, const bigint_t *y);
|
||||||
bigint_result_t bigint_sub(const bigint_t *x, const bigint_t *y);
|
bigint_result_t bigint_sub(const bigint_t *x, const bigint_t *y);
|
||||||
|
bigint_result_t bigint_prod(const bigint_t *x, const bigint_t *y);
|
||||||
bigint_result_t bigint_destroy(bigint_t *number);
|
bigint_result_t bigint_destroy(bigint_t *number);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
Reference in New Issue
Block a user