-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