#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 r32675 = 4;
        float r32676 = 3;
        float r32677 = atan2(1.0, 0.0);
        float r32678 = r32676 * r32677;
        float r32679 = 1;
        float r32680 = v;
        float r32681 = r32680 * r32680;
        float r32682 = r32679 - r32681;
        float r32683 = r32678 * r32682;
        float r32684 = 2;
        float r32685 = 6;
        float r32686 = r32685 * r32681;
        float r32687 = r32684 - r32686;
        float r32688 = sqrt(r32687);
        float r32689 = r32683 * r32688;
        float r32690 = r32675 / r32689;
        return r32690;
}

double f_id(double v) {
        double r32691 = 4;
        double r32692 = 3;
        double r32693 = atan2(1.0, 0.0);
        double r32694 = r32692 * r32693;
        double r32695 = 1;
        double r32696 = v;
        double r32697 = r32696 * r32696;
        double r32698 = r32695 - r32697;
        double r32699 = r32694 * r32698;
        double r32700 = 2;
        double r32701 = 6;
        double r32702 = r32701 * r32697;
        double r32703 = r32700 - r32702;
        double r32704 = sqrt(r32703);
        double r32705 = r32699 * r32704;
        double r32706 = r32691 / r32705;
        return r32706;
}


double f_of(float v) {
        float r32707 = 4;
        float r32708 = 3;
        float r32709 = r32707 / r32708;
        float r32710 = atan2(1.0, 0.0);
        float r32711 = v;
        float r32712 = r32710 * r32711;
        float r32713 = r32712 * r32711;
        float r32714 = r32710 - r32713;
        float r32715 = r32709 / r32714;
        float r32716 = 2;
        float r32717 = 6;
        float r32718 = r32711 * r32711;
        float r32719 = r32717 * r32718;
        float r32720 = r32716 - r32719;
        float r32721 = sqrt(r32720);
        float r32722 = r32715 / r32721;
        return r32722;
}

double f_od(double v) {
        double r32723 = 4;
        double r32724 = 3;
        double r32725 = r32723 / r32724;
        double r32726 = atan2(1.0, 0.0);
        double r32727 = v;
        double r32728 = r32726 * r32727;
        double r32729 = r32728 * r32727;
        double r32730 = r32726 - r32729;
        double r32731 = r32725 / r32730;
        double r32732 = 2;
        double r32733 = 6;
        double r32734 = r32727 * r32727;
        double r32735 = r32733 * r32734;
        double r32736 = r32732 - r32735;
        double r32737 = sqrt(r32736);
        double r32738 = r32731 / r32737;
        return r32738;
}

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 r32739, r32740, r32741, r32742, r32743, r32744, r32745, r32746, r32747, r32748, r32749, r32750, r32751, r32752, r32753, r32754;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32739, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32740, "3", 10, MPFR_RNDN);
        mpfr_init(r32741);
        mpfr_init(r32742);
        mpfr_init_set_str(r32743, "1", 10, MPFR_RNDN);
        mpfr_init(r32744);
        mpfr_init(r32745);
        mpfr_init(r32746);
        mpfr_init(r32747);
        mpfr_init_set_str(r32748, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32749, "6", 10, MPFR_RNDN);
        mpfr_init(r32750);
        mpfr_init(r32751);
        mpfr_init(r32752);
        mpfr_init(r32753);
        mpfr_init(r32754);
}

double f_im(double v) {
        ;
        ;
        mpfr_const_pi(r32741, MPFR_RNDN);
        mpfr_mul(r32742, r32740, r32741, MPFR_RNDN);
        ;
        mpfr_set_d(r32744, v, MPFR_RNDN);
        mpfr_mul(r32745, r32744, r32744, MPFR_RNDN);
        mpfr_sub(r32746, r32743, r32745, MPFR_RNDN);
        mpfr_mul(r32747, r32742, r32746, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32750, r32749, r32745, MPFR_RNDN);
        mpfr_sub(r32751, r32748, r32750, MPFR_RNDN);
        mpfr_sqrt(r32752, r32751, MPFR_RNDN);
        mpfr_mul(r32753, r32747, r32752, MPFR_RNDN);
        mpfr_div(r32754, r32739, r32753, MPFR_RNDN);
        return mpfr_get_d(r32754, MPFR_RNDN);
}

static mpfr_t r32755, r32756, r32757, r32758, r32759, r32760, r32761, r32762, r32763, r32764, r32765, r32766, r32767, r32768, r32769, r32770;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32755, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32756, "3", 10, MPFR_RNDN);
        mpfr_init(r32757);
        mpfr_init(r32758);
        mpfr_init(r32759);
        mpfr_init(r32760);
        mpfr_init(r32761);
        mpfr_init(r32762);
        mpfr_init(r32763);
        mpfr_init_set_str(r32764, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32765, "6", 10, MPFR_RNDN);
        mpfr_init(r32766);
        mpfr_init(r32767);
        mpfr_init(r32768);
        mpfr_init(r32769);
        mpfr_init(r32770);
}

double f_fm(double v) {
        ;
        ;
        mpfr_div(r32757, r32755, r32756, MPFR_RNDN);
        mpfr_const_pi(r32758, MPFR_RNDN);
        mpfr_set_d(r32759, v, MPFR_RNDN);
        mpfr_mul(r32760, r32758, r32759, MPFR_RNDN);
        mpfr_mul(r32761, r32760, r32759, MPFR_RNDN);
        mpfr_sub(r32762, r32758, r32761, MPFR_RNDN);
        mpfr_div(r32763, r32757, r32762, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32766, r32759, r32759, MPFR_RNDN);
        mpfr_mul(r32767, r32765, r32766, MPFR_RNDN);
        mpfr_sub(r32768, r32764, r32767, MPFR_RNDN);
        mpfr_sqrt(r32769, r32768, MPFR_RNDN);
        mpfr_div(r32770, r32763, r32769, MPFR_RNDN);
        return mpfr_get_d(r32770, MPFR_RNDN);
}

static mpfr_t r32771, r32772, r32773, r32774, r32775, r32776, r32777, r32778, r32779, r32780, r32781, r32782, r32783, r32784, r32785, r32786;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r32771, "4", 10, MPFR_RNDN);
        mpfr_init_set_str(r32772, "3", 10, MPFR_RNDN);
        mpfr_init(r32773);
        mpfr_init(r32774);
        mpfr_init(r32775);
        mpfr_init(r32776);
        mpfr_init(r32777);
        mpfr_init(r32778);
        mpfr_init(r32779);
        mpfr_init_set_str(r32780, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r32781, "6", 10, MPFR_RNDN);
        mpfr_init(r32782);
        mpfr_init(r32783);
        mpfr_init(r32784);
        mpfr_init(r32785);
        mpfr_init(r32786);
}

double f_dm(double v) {
        ;
        ;
        mpfr_div(r32773, r32771, r32772, MPFR_RNDN);
        mpfr_const_pi(r32774, MPFR_RNDN);
        mpfr_set_d(r32775, v, MPFR_RNDN);
        mpfr_mul(r32776, r32774, r32775, MPFR_RNDN);
        mpfr_mul(r32777, r32776, r32775, MPFR_RNDN);
        mpfr_sub(r32778, r32774, r32777, MPFR_RNDN);
        mpfr_div(r32779, r32773, r32778, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r32782, r32775, r32775, MPFR_RNDN);
        mpfr_mul(r32783, r32781, r32782, MPFR_RNDN);
        mpfr_sub(r32784, r32780, r32783, MPFR_RNDN);
        mpfr_sqrt(r32785, r32784, MPFR_RNDN);
        mpfr_div(r32786, r32779, r32785, MPFR_RNDN);
        return mpfr_get_d(r32786, MPFR_RNDN);
}

