#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Falkner and Boettcher, Equation (22+)";

double f_if(float v) {
        float r32635 = 4;
        float r32636 = 3;
        float r32637 = atan2(1.0, 0.0);
        float r32638 = r32636 * r32637;
        float r32639 = 1;
        float r32640 = v;
        float r32641 = r32640 * r32640;
        float r32642 = r32639 - r32641;
        float r32643 = r32638 * r32642;
        float r32644 = 2;
        float r32645 = 6;
        float r32646 = r32645 * r32641;
        float r32647 = r32644 - r32646;
        float r32648 = sqrt(r32647);
        float r32649 = r32643 * r32648;
        float r32650 = r32635 / r32649;
        return r32650;
}

double f_id(double v) {
        double r32651 = 4;
        double r32652 = 3;
        double r32653 = atan2(1.0, 0.0);
        double r32654 = r32652 * r32653;
        double r32655 = 1;
        double r32656 = v;
        double r32657 = r32656 * r32656;
        double r32658 = r32655 - r32657;
        double r32659 = r32654 * r32658;
        double r32660 = 2;
        double r32661 = 6;
        double r32662 = r32661 * r32657;
        double r32663 = r32660 - r32662;
        double r32664 = sqrt(r32663);
        double r32665 = r32659 * r32664;
        double r32666 = r32651 / r32665;
        return r32666;
}


double f_of(float v) {
        float r32667 = 4;
        float r32668 = 3;
        float r32669 = r32667 / r32668;
        float r32670 = atan2(1.0, 0.0);
        float r32671 = v;
        float r32672 = r32670 * r32671;
        float r32673 = r32672 * r32671;
        float r32674 = r32670 - r32673;
        float r32675 = r32669 / r32674;
        float r32676 = 2;
        float r32677 = 6;
        float r32678 = r32671 * r32671;
        float r32679 = r32677 * r32678;
        float r32680 = r32676 - r32679;
        float r32681 = sqrt(r32680);
        float r32682 = r32675 / r32681;
        return r32682;
}

double f_od(double v) {
        double r32683 = 4;
        double r32684 = 3;
        double r32685 = r32683 / r32684;
        double r32686 = atan2(1.0, 0.0);
        double r32687 = v;
        double r32688 = r32686 * r32687;
        double r32689 = r32688 * r32687;
        double r32690 = r32686 - r32689;
        double r32691 = r32685 / r32690;
        double r32692 = 2;
        double r32693 = 6;
        double r32694 = r32687 * r32687;
        double r32695 = r32693 * r32694;
        double r32696 = r32692 - r32695;
        double r32697 = sqrt(r32696);
        double r32698 = r32691 / r32697;
        return r32698;
}

void mpfr_fmod2(mpfr_t r, mpfr_t n, mpfr_t d, mpfr_rnd_t rmd) {
        mpfr_fmod(r, n, d, rmd);
        if (mpfr_cmp_ui(r, 0) < 0) mpfr_add(r, r, d, rmd);
}


static mpfr_t r32699, r32700, r32701, r32702, r32703, r32704, r32705, r32706, r32707, r32708, r32709, r32710, r32711, r32712, r32713, r32714;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32699, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32700, "3", 10, MPFR_RNDN);
        mpfr_init(r32701);
        mpfr_init(r32702);
        mpfr_init_set_str(r32703, "1", 10, MPFR_RNDN);
        mpfr_init(r32704);
        mpfr_init(r32705);
        mpfr_init(r32706);
        mpfr_init(r32707);
        mpfr_init_set_str(r32708, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32709, "6", 10, MPFR_RNDN);
        mpfr_init(r32710);
        mpfr_init(r32711);
        mpfr_init(r32712);
        mpfr_init(r32713);
        mpfr_init(r32714);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r32701, MPFR_RNDN);
        mpfr_mul(r32702, r32700, r32701, MPFR_RNDN);
        ;
        mpfr_set_d(r32704, v, MPFR_RNDN);
        mpfr_mul(r32705, r32704, r32704, MPFR_RNDN);
        mpfr_sub(r32706, r32703, r32705, MPFR_RNDN);
        mpfr_mul(r32707, r32702, r32706, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32710, r32709, r32705, MPFR_RNDN);
        mpfr_sub(r32711, r32708, r32710, MPFR_RNDN);
        mpfr_sqrt(r32712, r32711, MPFR_RNDN);
        mpfr_mul(r32713, r32707, r32712, MPFR_RNDN);
        mpfr_div(r32714, r32699, r32713, MPFR_RNDN);
        return mpfr_get_d(r32714, MPFR_RNDN);
}

static mpfr_t r32715, r32716, r32717, r32718, r32719, r32720, r32721, r32722, r32723, r32724, r32725, r32726, r32727, r32728, r32729, r32730;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32715, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32716, "3", 10, MPFR_RNDN);
        mpfr_init(r32717);
        mpfr_init(r32718);
        mpfr_init(r32719);
        mpfr_init(r32720);
        mpfr_init(r32721);
        mpfr_init(r32722);
        mpfr_init(r32723);
        mpfr_init_set_str(r32724, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32725, "6", 10, MPFR_RNDN);
        mpfr_init(r32726);
        mpfr_init(r32727);
        mpfr_init(r32728);
        mpfr_init(r32729);
        mpfr_init(r32730);
}

double f_fm(double v) {
        ;
        ;
        mpfr_div(r32717, r32715, r32716, MPFR_RNDN);
        mpfr_const_pi(r32718, MPFR_RNDN);
        mpfr_set_d(r32719, v, MPFR_RNDN);
        mpfr_mul(r32720, r32718, r32719, MPFR_RNDN);
        mpfr_mul(r32721, r32720, r32719, MPFR_RNDN);
        mpfr_sub(r32722, r32718, r32721, MPFR_RNDN);
        mpfr_div(r32723, r32717, r32722, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32726, r32719, r32719, MPFR_RNDN);
        mpfr_mul(r32727, r32725, r32726, MPFR_RNDN);
        mpfr_sub(r32728, r32724, r32727, MPFR_RNDN);
        mpfr_sqrt(r32729, r32728, MPFR_RNDN);
        mpfr_div(r32730, r32723, r32729, MPFR_RNDN);
        return mpfr_get_d(r32730, MPFR_RNDN);
}

static mpfr_t r32731, r32732, r32733, r32734, r32735, r32736, r32737, r32738, r32739, r32740, r32741, r32742, r32743, r32744, r32745, r32746;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32731, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32732, "3", 10, MPFR_RNDN);
        mpfr_init(r32733);
        mpfr_init(r32734);
        mpfr_init(r32735);
        mpfr_init(r32736);
        mpfr_init(r32737);
        mpfr_init(r32738);
        mpfr_init(r32739);
        mpfr_init_set_str(r32740, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32741, "6", 10, MPFR_RNDN);
        mpfr_init(r32742);
        mpfr_init(r32743);
        mpfr_init(r32744);
        mpfr_init(r32745);
        mpfr_init(r32746);
}

double f_dm(double v) {
        ;
        ;
        mpfr_div(r32733, r32731, r32732, MPFR_RNDN);
        mpfr_const_pi(r32734, MPFR_RNDN);
        mpfr_set_d(r32735, v, MPFR_RNDN);
        mpfr_mul(r32736, r32734, r32735, MPFR_RNDN);
        mpfr_mul(r32737, r32736, r32735, MPFR_RNDN);
        mpfr_sub(r32738, r32734, r32737, MPFR_RNDN);
        mpfr_div(r32739, r32733, r32738, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32742, r32735, r32735, MPFR_RNDN);
        mpfr_mul(r32743, r32741, r32742, MPFR_RNDN);
        mpfr_sub(r32744, r32740, r32743, MPFR_RNDN);
        mpfr_sqrt(r32745, r32744, MPFR_RNDN);
        mpfr_div(r32746, r32739, r32745, MPFR_RNDN);
        return mpfr_get_d(r32746, MPFR_RNDN);
}

