-rw-r--r-- 2131 cryptattacktester-20231020/bigfloat_mpfi.h raw
#ifndef bigfloat_h
#define bigfloat_h
#include <iostream>
#include "bigint.h"
#include "bigint.h"
#include <mpfi.h>
class bigfloat {
mpfi_t x;
public:
static void set_default_precision(bigint);
static bigint get_default_precision(void);
~bigfloat() { mpfi_clear(x); }
bigfloat() { mpfi_init(x); }
bigfloat(const bigfloat &b) { mpfi_init_set(x,b.x); }
bigfloat &operator=(const bigfloat &b) { mpfi_set(x,b.x); return *this; }
bigfloat(int i) { mpfi_init_set_si(x,i); }
bigfloat(long i) { mpfi_init_set_si(x,i); }
bigfloat(unsigned int u) { mpfi_init_set_ui(x,u); }
bigfloat(unsigned long u) { mpfi_init_set_ui(x,u); }
bigfloat(double d) { mpfi_init_set_d(x,d); }
bigfloat(bigint i) { mpfi_init_set_z(x,i.unsafe_get_mpz_t()); }
bool definitely_zero();
bool definitely_positive();
bool definitely_positive_and_reasonably_precise(long = 20);
bool definitely_less(const bigfloat &);
bool maybe_between(double,double);
friend bool operator<(const bigfloat &,const bigfloat &);
friend bool operator>(const bigfloat &,const bigfloat &);
friend bigfloat operator+(const bigfloat &,const bigfloat &);
friend bigfloat operator-(const bigfloat &,const bigfloat &);
friend bigfloat operator-(const bigfloat &);
friend bigfloat operator*(const bigfloat &,const bigfloat &);
friend bigfloat operator/(const bigfloat &,const bigfloat &);
friend bigfloat& operator+=(bigfloat &,const bigfloat &);
friend bigfloat& operator*=(bigfloat &,const bigfloat &);
friend bigfloat log(const bigfloat &);
friend bigfloat log2(const bigfloat &);
friend bigfloat log1p(const bigfloat &);
friend bigfloat exp(const bigfloat &);
friend bigfloat expm1(const bigfloat &);
friend bigfloat exp2(const bigfloat &);
friend bigfloat pow(const bigfloat &,const bigfloat &);
friend bigint floor_as_bigint(const bigfloat &);
friend bigint ceil_as_bigint(const bigfloat &);
friend bigfloat bigfloat_guarantee_nonnegative(const bigfloat &);
friend bigfloat binomial_bigfloat(const bigfloat &,const bigint &);
friend std::ostream &operator<<(std::ostream &,const bigfloat &);
} ;
#endif