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

char *name = "Falkner and Boettcher, Equation (20:1,3)";

double f_if(float v, float t) {
        float r10679 = 1.0f;
        float r10680 = 5.0f;
        float r10681 = v;
        float r10682 = r10681 * r10681;
        float r10683 = r10680 * r10682;
        float r10684 = r10679 - r10683;
        float r10685 = atan2(1.0, 0.0);
        float r10686 = t;
        float r10687 = r10685 * r10686;
        float r10688 = 2.0f;
        float r10689 = 3.0f;
        float r10690 = r10689 * r10682;
        float r10691 = r10679 - r10690;
        float r10692 = r10688 * r10691;
        float r10693 = sqrt(r10692);
        float r10694 = r10687 * r10693;
        float r10695 = r10679 - r10682;
        float r10696 = r10694 * r10695;
        float r10697 = r10684 / r10696;
        return r10697;
}

double f_id(double v, double t) {
        double r10698 = 1.0;
        double r10699 = 5.0;
        double r10700 = v;
        double r10701 = r10700 * r10700;
        double r10702 = r10699 * r10701;
        double r10703 = r10698 - r10702;
        double r10704 = atan2(1.0, 0.0);
        double r10705 = t;
        double r10706 = r10704 * r10705;
        double r10707 = 2.0;
        double r10708 = 3.0;
        double r10709 = r10708 * r10701;
        double r10710 = r10698 - r10709;
        double r10711 = r10707 * r10710;
        double r10712 = sqrt(r10711);
        double r10713 = r10706 * r10712;
        double r10714 = r10698 - r10701;
        double r10715 = r10713 * r10714;
        double r10716 = r10703 / r10715;
        return r10716;
}


double f_of(float v, float t) {
        float r10717 = 1.0f;
        float r10718 = v;
        float r10719 = r10718 * r10718;
        float r10720 = 5.0f;
        float r10721 = r10719 * r10720;
        float r10722 = r10717 - r10721;
        float r10723 = cbrt(r10722);
        float r10724 = r10723 * r10723;
        float r10725 = t;
        float r10726 = r10724 / r10725;
        float r10727 = 3.0f;
        float r10728 = r10727 * r10718;
        float r10729 = r10718 * r10728;
        float r10730 = r10717 - r10729;
        float r10731 = 2.0f;
        float r10732 = r10730 * r10731;
        float r10733 = sqrt(r10732);
        float r10734 = r10717 - r10719;
        float r10735 = r10733 * r10734;
        float r10736 = atan2(1.0, 0.0);
        float r10737 = r10723 / r10736;
        float r10738 = r10735 / r10737;
        float r10739 = r10726 / r10738;
        return r10739;
}

double f_od(double v, double t) {
        double r10740 = 1.0;
        double r10741 = v;
        double r10742 = r10741 * r10741;
        double r10743 = 5.0;
        double r10744 = r10742 * r10743;
        double r10745 = r10740 - r10744;
        double r10746 = cbrt(r10745);
        double r10747 = r10746 * r10746;
        double r10748 = t;
        double r10749 = r10747 / r10748;
        double r10750 = 3.0;
        double r10751 = r10750 * r10741;
        double r10752 = r10741 * r10751;
        double r10753 = r10740 - r10752;
        double r10754 = 2.0;
        double r10755 = r10753 * r10754;
        double r10756 = sqrt(r10755);
        double r10757 = r10740 - r10742;
        double r10758 = r10756 * r10757;
        double r10759 = atan2(1.0, 0.0);
        double r10760 = r10746 / r10759;
        double r10761 = r10758 / r10760;
        double r10762 = r10749 / r10761;
        return r10762;
}

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 r10763, r10764, r10765, r10766, r10767, r10768, r10769, r10770, r10771, r10772, r10773, r10774, r10775, r10776, r10777, r10778, r10779, r10780, r10781;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10763, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10764, "5", 10, MPFR_RNDN);
        mpfr_init(r10765);
        mpfr_init(r10766);
        mpfr_init(r10767);
        mpfr_init(r10768);
        mpfr_init(r10769);
        mpfr_init(r10770);
        mpfr_init(r10771);
        mpfr_init_set_str(r10772, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10773, "3", 10, MPFR_RNDN);
        mpfr_init(r10774);
        mpfr_init(r10775);
        mpfr_init(r10776);
        mpfr_init(r10777);
        mpfr_init(r10778);
        mpfr_init(r10779);
        mpfr_init(r10780);
        mpfr_init(r10781);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r10765, v, MPFR_RNDN);
        mpfr_mul(r10766, r10765, r10765, MPFR_RNDN);
        mpfr_mul(r10767, r10764, r10766, MPFR_RNDN);
        mpfr_sub(r10768, r10763, r10767, MPFR_RNDN);
        mpfr_const_pi(r10769, MPFR_RNDN);
        mpfr_set_d(r10770, t, MPFR_RNDN);
        mpfr_mul(r10771, r10769, r10770, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10774, r10773, r10766, MPFR_RNDN);
        mpfr_sub(r10775, r10763, r10774, MPFR_RNDN);
        mpfr_mul(r10776, r10772, r10775, MPFR_RNDN);
        mpfr_sqrt(r10777, r10776, MPFR_RNDN);
        mpfr_mul(r10778, r10771, r10777, MPFR_RNDN);
        mpfr_sub(r10779, r10763, r10766, MPFR_RNDN);
        mpfr_mul(r10780, r10778, r10779, MPFR_RNDN);
        mpfr_div(r10781, r10768, r10780, MPFR_RNDN);
        return mpfr_get_d(r10781, MPFR_RNDN);
}

static mpfr_t r10782, r10783, r10784, r10785, r10786, r10787, r10788, r10789, r10790, r10791, r10792, r10793, r10794, r10795, r10796, r10797, r10798, r10799, r10800, r10801, r10802, r10803, r10804;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10782, "1", 10, MPFR_RNDN);
        mpfr_init(r10783);
        mpfr_init(r10784);
        mpfr_init_set_str(r10785, "5", 10, MPFR_RNDN);
        mpfr_init(r10786);
        mpfr_init(r10787);
        mpfr_init(r10788);
        mpfr_init(r10789);
        mpfr_init(r10790);
        mpfr_init(r10791);
        mpfr_init_set_str(r10792, "3", 10, MPFR_RNDN);
        mpfr_init(r10793);
        mpfr_init(r10794);
        mpfr_init(r10795);
        mpfr_init_set_str(r10796, "2", 10, MPFR_RNDN);
        mpfr_init(r10797);
        mpfr_init(r10798);
        mpfr_init(r10799);
        mpfr_init(r10800);
        mpfr_init(r10801);
        mpfr_init(r10802);
        mpfr_init(r10803);
        mpfr_init(r10804);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r10783, v, MPFR_RNDN);
        mpfr_mul(r10784, r10783, r10783, MPFR_RNDN);
        ;
        mpfr_mul(r10786, r10784, r10785, MPFR_RNDN);
        mpfr_sub(r10787, r10782, r10786, MPFR_RNDN);
        mpfr_cbrt(r10788, r10787, MPFR_RNDN);
        mpfr_mul(r10789, r10788, r10788, MPFR_RNDN);
        mpfr_set_d(r10790, t, MPFR_RNDN);
        mpfr_div(r10791, r10789, r10790, MPFR_RNDN);
        ;
        mpfr_mul(r10793, r10792, r10783, MPFR_RNDN);
        mpfr_mul(r10794, r10783, r10793, MPFR_RNDN);
        mpfr_sub(r10795, r10782, r10794, MPFR_RNDN);
        ;
        mpfr_mul(r10797, r10795, r10796, MPFR_RNDN);
        mpfr_sqrt(r10798, r10797, MPFR_RNDN);
        mpfr_sub(r10799, r10782, r10784, MPFR_RNDN);
        mpfr_mul(r10800, r10798, r10799, MPFR_RNDN);
        mpfr_const_pi(r10801, MPFR_RNDN);
        mpfr_div(r10802, r10788, r10801, MPFR_RNDN);
        mpfr_div(r10803, r10800, r10802, MPFR_RNDN);
        mpfr_div(r10804, r10791, r10803, MPFR_RNDN);
        return mpfr_get_d(r10804, MPFR_RNDN);
}

static mpfr_t r10805, r10806, r10807, r10808, r10809, r10810, r10811, r10812, r10813, r10814, r10815, r10816, r10817, r10818, r10819, r10820, r10821, r10822, r10823, r10824, r10825, r10826, r10827;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10805, "1", 10, MPFR_RNDN);
        mpfr_init(r10806);
        mpfr_init(r10807);
        mpfr_init_set_str(r10808, "5", 10, MPFR_RNDN);
        mpfr_init(r10809);
        mpfr_init(r10810);
        mpfr_init(r10811);
        mpfr_init(r10812);
        mpfr_init(r10813);
        mpfr_init(r10814);
        mpfr_init_set_str(r10815, "3", 10, MPFR_RNDN);
        mpfr_init(r10816);
        mpfr_init(r10817);
        mpfr_init(r10818);
        mpfr_init_set_str(r10819, "2", 10, MPFR_RNDN);
        mpfr_init(r10820);
        mpfr_init(r10821);
        mpfr_init(r10822);
        mpfr_init(r10823);
        mpfr_init(r10824);
        mpfr_init(r10825);
        mpfr_init(r10826);
        mpfr_init(r10827);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r10806, v, MPFR_RNDN);
        mpfr_mul(r10807, r10806, r10806, MPFR_RNDN);
        ;
        mpfr_mul(r10809, r10807, r10808, MPFR_RNDN);
        mpfr_sub(r10810, r10805, r10809, MPFR_RNDN);
        mpfr_cbrt(r10811, r10810, MPFR_RNDN);
        mpfr_mul(r10812, r10811, r10811, MPFR_RNDN);
        mpfr_set_d(r10813, t, MPFR_RNDN);
        mpfr_div(r10814, r10812, r10813, MPFR_RNDN);
        ;
        mpfr_mul(r10816, r10815, r10806, MPFR_RNDN);
        mpfr_mul(r10817, r10806, r10816, MPFR_RNDN);
        mpfr_sub(r10818, r10805, r10817, MPFR_RNDN);
        ;
        mpfr_mul(r10820, r10818, r10819, MPFR_RNDN);
        mpfr_sqrt(r10821, r10820, MPFR_RNDN);
        mpfr_sub(r10822, r10805, r10807, MPFR_RNDN);
        mpfr_mul(r10823, r10821, r10822, MPFR_RNDN);
        mpfr_const_pi(r10824, MPFR_RNDN);
        mpfr_div(r10825, r10811, r10824, MPFR_RNDN);
        mpfr_div(r10826, r10823, r10825, MPFR_RNDN);
        mpfr_div(r10827, r10814, r10826, MPFR_RNDN);
        return mpfr_get_d(r10827, MPFR_RNDN);
}

