37 lines
924 B
C
37 lines
924 B
C
#pragma once
|
|
|
|
#include <gmp.h>
|
|
|
|
struct mpz_field
|
|
{
|
|
int length;
|
|
mpz_t values[0];
|
|
};
|
|
typedef struct mpz_field mpz_field_t;
|
|
|
|
|
|
|
|
|
|
#define mpz_field_value(f, i) (f->values[i])
|
|
|
|
static inline void __tools_mpz_cleanup(mpz_t *mpz){
|
|
// printf("__tools_mpz_clenaup(%x)\n", mpz);
|
|
mpz_clear(*mpz);
|
|
}
|
|
|
|
void mpz_random_mod( mpz_t rop, mpz_t p);
|
|
char* mpz_to_string(mpz_t i, int base);
|
|
|
|
#define mpz_cleanup(name) mpz_t name __attribute__ (( __cleanup__(__tools_mpz_cleanup))); mpz_init( name );
|
|
#define mpz_t_cleanup_set(name, value) mpz_t name __attribute__ (( __cleanup__(__tools_mpz_cleanup))); mpz_init_set( name, value );
|
|
|
|
mpz_t* mpz_field_init(int length);
|
|
void mpz_field_clear(mpz_t *field);
|
|
|
|
static inline void __tools_mpz_field_cleanup(mpz_t **f){
|
|
mpz_field_clear(*f);
|
|
}
|
|
|
|
#define mpz_field_cleanup(name, length) mpz_t* name __attribute__ (( __cleanup__(__tools_mpz_field_cleanup))) = mpz_field_init( length );
|
|
|