#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 r10553 = 1.0f;
        float r10554 = 5.0f;
        float r10555 = v;
        float r10556 = r10555 * r10555;
        float r10557 = r10554 * r10556;
        float r10558 = r10553 - r10557;
        float r10559 = atan2(1.0, 0.0);
        float r10560 = t;
        float r10561 = r10559 * r10560;
        float r10562 = 2.0f;
        float r10563 = 3.0f;
        float r10564 = r10563 * r10556;
        float r10565 = r10553 - r10564;
        float r10566 = r10562 * r10565;
        float r10567 = sqrt(r10566);
        float r10568 = r10561 * r10567;
        float r10569 = r10553 - r10556;
        float r10570 = r10568 * r10569;
        float r10571 = r10558 / r10570;
        return r10571;
}

double f_id(double v, double t) {
        double r10572 = 1.0;
        double r10573 = 5.0;
        double r10574 = v;
        double r10575 = r10574 * r10574;
        double r10576 = r10573 * r10575;
        double r10577 = r10572 - r10576;
        double r10578 = atan2(1.0, 0.0);
        double r10579 = t;
        double r10580 = r10578 * r10579;
        double r10581 = 2.0;
        double r10582 = 3.0;
        double r10583 = r10582 * r10575;
        double r10584 = r10572 - r10583;
        double r10585 = r10581 * r10584;
        double r10586 = sqrt(r10585);
        double r10587 = r10580 * r10586;
        double r10588 = r10572 - r10575;
        double r10589 = r10587 * r10588;
        double r10590 = r10577 / r10589;
        return r10590;
}


double f_of(float v, float t) {
        float r10591 = v;
        float r10592 = 5.0f;
        float r10593 = r10591 * r10592;
        float r10594 = -r10591;
        float r10595 = 1.0f;
        float r10596 = fma(r10593, r10594, r10595);
        float r10597 = cbrt(r10596);
        float r10598 = r10597 * r10597;
        float r10599 = t;
        float r10600 = r10598 / r10599;
        float r10601 = 2.0f;
        float r10602 = 3.0f;
        float r10603 = r10602 * r10591;
        float r10604 = fma(r10603, r10594, r10595);
        float r10605 = r10601 * r10604;
        float r10606 = sqrt(r10605);
        float r10607 = r10591 * r10591;
        float r10608 = r10595 - r10607;
        float r10609 = r10606 * r10608;
        float r10610 = atan2(1.0, 0.0);
        float r10611 = r10597 / r10610;
        float r10612 = r10609 / r10611;
        float r10613 = r10600 / r10612;
        return r10613;
}

double f_od(double v, double t) {
        double r10614 = v;
        double r10615 = 5.0;
        double r10616 = r10614 * r10615;
        double r10617 = -r10614;
        double r10618 = 1.0;
        double r10619 = fma(r10616, r10617, r10618);
        double r10620 = cbrt(r10619);
        double r10621 = r10620 * r10620;
        double r10622 = t;
        double r10623 = r10621 / r10622;
        double r10624 = 2.0;
        double r10625 = 3.0;
        double r10626 = r10625 * r10614;
        double r10627 = fma(r10626, r10617, r10618);
        double r10628 = r10624 * r10627;
        double r10629 = sqrt(r10628);
        double r10630 = r10614 * r10614;
        double r10631 = r10618 - r10630;
        double r10632 = r10629 * r10631;
        double r10633 = atan2(1.0, 0.0);
        double r10634 = r10620 / r10633;
        double r10635 = r10632 / r10634;
        double r10636 = r10623 / r10635;
        return r10636;
}

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 r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10637, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10638, "5", 10, MPFR_RNDN);
        mpfr_init(r10639);
        mpfr_init(r10640);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init_set_str(r10646, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10647, "3", 10, MPFR_RNDN);
        mpfr_init(r10648);
        mpfr_init(r10649);
        mpfr_init(r10650);
        mpfr_init(r10651);
        mpfr_init(r10652);
        mpfr_init(r10653);
        mpfr_init(r10654);
        mpfr_init(r10655);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r10639, v, MPFR_RNDN);
        mpfr_mul(r10640, r10639, r10639, MPFR_RNDN);
        mpfr_mul(r10641, r10638, r10640, MPFR_RNDN);
        mpfr_sub(r10642, r10637, r10641, MPFR_RNDN);
        mpfr_const_pi(r10643, MPFR_RNDN);
        mpfr_set_d(r10644, t, MPFR_RNDN);
        mpfr_mul(r10645, r10643, r10644, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10648, r10647, r10640, MPFR_RNDN);
        mpfr_sub(r10649, r10637, r10648, MPFR_RNDN);
        mpfr_mul(r10650, r10646, r10649, MPFR_RNDN);
        mpfr_sqrt(r10651, r10650, MPFR_RNDN);
        mpfr_mul(r10652, r10645, r10651, MPFR_RNDN);
        mpfr_sub(r10653, r10637, r10640, MPFR_RNDN);
        mpfr_mul(r10654, r10652, r10653, MPFR_RNDN);
        mpfr_div(r10655, r10642, r10654, MPFR_RNDN);
        return mpfr_get_d(r10655, MPFR_RNDN);
}

static mpfr_t r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666, r10667, r10668, r10669, r10670, r10671, r10672, r10673, r10674, r10675, r10676, r10677, r10678;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10656);
        mpfr_init_set_str(r10657, "5", 10, MPFR_RNDN);
        mpfr_init(r10658);
        mpfr_init(r10659);
        mpfr_init_set_str(r10660, "1", 10, MPFR_RNDN);
        mpfr_init(r10661);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init_set_str(r10666, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10667, "3", 10, MPFR_RNDN);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init(r10670);
        mpfr_init(r10671);
        mpfr_init(r10672);
        mpfr_init(r10673);
        mpfr_init(r10674);
        mpfr_init(r10675);
        mpfr_init(r10676);
        mpfr_init(r10677);
        mpfr_init(r10678);
}

double f_fm(double v, double t) {
        mpfr_set_d(r10656, v, MPFR_RNDN);
        ;
        mpfr_mul(r10658, r10656, r10657, MPFR_RNDN);
        mpfr_neg(r10659, r10656, MPFR_RNDN);
        ;
        mpfr_fma(r10661, r10658, r10659, r10660, MPFR_RNDN);
        mpfr_cbrt(r10662, r10661, MPFR_RNDN);
        mpfr_mul(r10663, r10662, r10662, MPFR_RNDN);
        mpfr_set_d(r10664, t, MPFR_RNDN);
        mpfr_div(r10665, r10663, r10664, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10668, r10667, r10656, MPFR_RNDN);
        mpfr_fma(r10669, r10668, r10659, r10660, MPFR_RNDN);
        mpfr_mul(r10670, r10666, r10669, MPFR_RNDN);
        mpfr_sqrt(r10671, r10670, MPFR_RNDN);
        mpfr_mul(r10672, r10656, r10656, MPFR_RNDN);
        mpfr_sub(r10673, r10660, r10672, MPFR_RNDN);
        mpfr_mul(r10674, r10671, r10673, MPFR_RNDN);
        mpfr_const_pi(r10675, MPFR_RNDN);
        mpfr_div(r10676, r10662, r10675, MPFR_RNDN);
        mpfr_div(r10677, r10674, r10676, MPFR_RNDN);
        mpfr_div(r10678, r10665, r10677, MPFR_RNDN);
        return mpfr_get_d(r10678, MPFR_RNDN);
}

static mpfr_t r10679, r10680, r10681, r10682, r10683, r10684, r10685, r10686, r10687, r10688, r10689, r10690, r10691, r10692, r10693, r10694, r10695, r10696, r10697, r10698, r10699, r10700, r10701;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10679);
        mpfr_init_set_str(r10680, "5", 10, MPFR_RNDN);
        mpfr_init(r10681);
        mpfr_init(r10682);
        mpfr_init_set_str(r10683, "1", 10, MPFR_RNDN);
        mpfr_init(r10684);
        mpfr_init(r10685);
        mpfr_init(r10686);
        mpfr_init(r10687);
        mpfr_init(r10688);
        mpfr_init_set_str(r10689, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10690, "3", 10, MPFR_RNDN);
        mpfr_init(r10691);
        mpfr_init(r10692);
        mpfr_init(r10693);
        mpfr_init(r10694);
        mpfr_init(r10695);
        mpfr_init(r10696);
        mpfr_init(r10697);
        mpfr_init(r10698);
        mpfr_init(r10699);
        mpfr_init(r10700);
        mpfr_init(r10701);
}

double f_dm(double v, double t) {
        mpfr_set_d(r10679, v, MPFR_RNDN);
        ;
        mpfr_mul(r10681, r10679, r10680, MPFR_RNDN);
        mpfr_neg(r10682, r10679, MPFR_RNDN);
        ;
        mpfr_fma(r10684, r10681, r10682, r10683, MPFR_RNDN);
        mpfr_cbrt(r10685, r10684, MPFR_RNDN);
        mpfr_mul(r10686, r10685, r10685, MPFR_RNDN);
        mpfr_set_d(r10687, t, MPFR_RNDN);
        mpfr_div(r10688, r10686, r10687, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10691, r10690, r10679, MPFR_RNDN);
        mpfr_fma(r10692, r10691, r10682, r10683, MPFR_RNDN);
        mpfr_mul(r10693, r10689, r10692, MPFR_RNDN);
        mpfr_sqrt(r10694, r10693, MPFR_RNDN);
        mpfr_mul(r10695, r10679, r10679, MPFR_RNDN);
        mpfr_sub(r10696, r10683, r10695, MPFR_RNDN);
        mpfr_mul(r10697, r10694, r10696, MPFR_RNDN);
        mpfr_const_pi(r10698, MPFR_RNDN);
        mpfr_div(r10699, r10685, r10698, MPFR_RNDN);
        mpfr_div(r10700, r10697, r10699, MPFR_RNDN);
        mpfr_div(r10701, r10688, r10700, MPFR_RNDN);
        return mpfr_get_d(r10701, MPFR_RNDN);
}

