update QEXT to new dynamic version

This commit is contained in:
Florian Stecker
2022-06-11 17:36:32 +02:00
parent 2e516e718d
commit 1a85a5ef14
6 changed files with 106 additions and 64 deletions

16
qext.h
View File

@@ -3,21 +3,31 @@
#include <gmp.h>
struct qext_type {
int rank;
const int *integer_coeffs;
mpq_t *coeffs;
};
struct qext_number_internal {
int rk;
struct qext_type *type;
mpq_t *a;
};
typedef struct qext_number_internal qext_number[1];
void qext_setup(int rank, const int *coeffs);
void qext_init(qext_number x);
extern struct qext_type *QT_TRIVIAL;
extern struct qext_type *QT_SQRT5;
struct qext_type *qext_newtype(int rank, const int *coeffs);
void qext_init(qext_number x, struct qext_type *type);
void qext_clear(qext_number x);
void qext_set(qext_number x, qext_number y);
void qext_set_int(qext_number x, int y);
void qext_set_q(qext_number x, mpq_t y);
void qext_add(qext_number result, qext_number x, qext_number y);
void qext_sub(qext_number result, qext_number x, qext_number y);
void qext_neg(qext_number result, qext_number x);
void qext_mul(qext_number out, qext_number x, qext_number y);
void qext_div(qext_number out, qext_number x, qext_number y);
int qext_cmp(qext_number x, qext_number y);