#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 r10522 = 1.0f;
        float r10523 = 5.0f;
        float r10524 = v;
        float r10525 = r10524 * r10524;
        float r10526 = r10523 * r10525;
        float r10527 = r10522 - r10526;
        float r10528 = atan2(1.0, 0.0);
        float r10529 = t;
        float r10530 = r10528 * r10529;
        float r10531 = 2.0f;
        float r10532 = 3.0f;
        float r10533 = r10532 * r10525;
        float r10534 = r10522 - r10533;
        float r10535 = r10531 * r10534;
        float r10536 = sqrt(r10535);
        float r10537 = r10530 * r10536;
        float r10538 = r10522 - r10525;
        float r10539 = r10537 * r10538;
        float r10540 = r10527 / r10539;
        return r10540;
}

double f_id(double v, double t) {
        double r10541 = 1.0;
        double r10542 = 5.0;
        double r10543 = v;
        double r10544 = r10543 * r10543;
        double r10545 = r10542 * r10544;
        double r10546 = r10541 - r10545;
        double r10547 = atan2(1.0, 0.0);
        double r10548 = t;
        double r10549 = r10547 * r10548;
        double r10550 = 2.0;
        double r10551 = 3.0;
        double r10552 = r10551 * r10544;
        double r10553 = r10541 - r10552;
        double r10554 = r10550 * r10553;
        double r10555 = sqrt(r10554);
        double r10556 = r10549 * r10555;
        double r10557 = r10541 - r10544;
        double r10558 = r10556 * r10557;
        double r10559 = r10546 / r10558;
        return r10559;
}


double f_of(float v, float t) {
        float r10560 = v;
        float r10561 = 5.0f;
        float r10562 = r10560 * r10561;
        float r10563 = -r10560;
        float r10564 = 1.0f;
        float r10565 = fma(r10562, r10563, r10564);
        float r10566 = cbrt(r10565);
        float r10567 = r10566 * r10566;
        float r10568 = t;
        float r10569 = r10567 / r10568;
        float r10570 = 2.0f;
        float r10571 = 3.0f;
        float r10572 = r10571 * r10560;
        float r10573 = fma(r10572, r10563, r10564);
        float r10574 = r10570 * r10573;
        float r10575 = sqrt(r10574);
        float r10576 = r10560 * r10560;
        float r10577 = r10564 - r10576;
        float r10578 = r10575 * r10577;
        float r10579 = atan2(1.0, 0.0);
        float r10580 = r10566 / r10579;
        float r10581 = r10578 / r10580;
        float r10582 = r10569 / r10581;
        return r10582;
}

double f_od(double v, double t) {
        double r10583 = v;
        double r10584 = 5.0;
        double r10585 = r10583 * r10584;
        double r10586 = -r10583;
        double r10587 = 1.0;
        double r10588 = fma(r10585, r10586, r10587);
        double r10589 = cbrt(r10588);
        double r10590 = r10589 * r10589;
        double r10591 = t;
        double r10592 = r10590 / r10591;
        double r10593 = 2.0;
        double r10594 = 3.0;
        double r10595 = r10594 * r10583;
        double r10596 = fma(r10595, r10586, r10587);
        double r10597 = r10593 * r10596;
        double r10598 = sqrt(r10597);
        double r10599 = r10583 * r10583;
        double r10600 = r10587 - r10599;
        double r10601 = r10598 * r10600;
        double r10602 = atan2(1.0, 0.0);
        double r10603 = r10589 / r10602;
        double r10604 = r10601 / r10603;
        double r10605 = r10592 / r10604;
        return r10605;
}

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 r10606, r10607, r10608, r10609, r10610, r10611, r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10606, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10607, "5", 10, MPFR_RNDN);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init(r10611);
        mpfr_init(r10612);
        mpfr_init(r10613);
        mpfr_init(r10614);
        mpfr_init_set_str(r10615, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10616, "3", 10, MPFR_RNDN);
        mpfr_init(r10617);
        mpfr_init(r10618);
        mpfr_init(r10619);
        mpfr_init(r10620);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r10608, v, MPFR_RNDN);
        mpfr_mul(r10609, r10608, r10608, MPFR_RNDN);
        mpfr_mul(r10610, r10607, r10609, MPFR_RNDN);
        mpfr_sub(r10611, r10606, r10610, MPFR_RNDN);
        mpfr_const_pi(r10612, MPFR_RNDN);
        mpfr_set_d(r10613, t, MPFR_RNDN);
        mpfr_mul(r10614, r10612, r10613, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10617, r10616, r10609, MPFR_RNDN);
        mpfr_sub(r10618, r10606, r10617, MPFR_RNDN);
        mpfr_mul(r10619, r10615, r10618, MPFR_RNDN);
        mpfr_sqrt(r10620, r10619, MPFR_RNDN);
        mpfr_mul(r10621, r10614, r10620, MPFR_RNDN);
        mpfr_sub(r10622, r10606, r10609, MPFR_RNDN);
        mpfr_mul(r10623, r10621, r10622, MPFR_RNDN);
        mpfr_div(r10624, r10611, r10623, MPFR_RNDN);
        return mpfr_get_d(r10624, MPFR_RNDN);
}

static mpfr_t r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632, r10633, r10634, r10635, r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10625);
        mpfr_init_set_str(r10626, "5", 10, MPFR_RNDN);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init_set_str(r10629, "1", 10, MPFR_RNDN);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
        mpfr_init(r10633);
        mpfr_init(r10634);
        mpfr_init_set_str(r10635, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10636, "3", 10, MPFR_RNDN);
        mpfr_init(r10637);
        mpfr_init(r10638);
        mpfr_init(r10639);
        mpfr_init(r10640);
        mpfr_init(r10641);
        mpfr_init(r10642);
        mpfr_init(r10643);
        mpfr_init(r10644);
        mpfr_init(r10645);
        mpfr_init(r10646);
        mpfr_init(r10647);
}

double f_fm(double v, double t) {
        mpfr_set_d(r10625, v, MPFR_RNDN);
        ;
        mpfr_mul(r10627, r10625, r10626, MPFR_RNDN);
        mpfr_neg(r10628, r10625, MPFR_RNDN);
        ;
        mpfr_fma(r10630, r10627, r10628, r10629, MPFR_RNDN);
        mpfr_cbrt(r10631, r10630, MPFR_RNDN);
        mpfr_mul(r10632, r10631, r10631, MPFR_RNDN);
        mpfr_set_d(r10633, t, MPFR_RNDN);
        mpfr_div(r10634, r10632, r10633, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10637, r10636, r10625, MPFR_RNDN);
        mpfr_fma(r10638, r10637, r10628, r10629, MPFR_RNDN);
        mpfr_mul(r10639, r10635, r10638, MPFR_RNDN);
        mpfr_sqrt(r10640, r10639, MPFR_RNDN);
        mpfr_mul(r10641, r10625, r10625, MPFR_RNDN);
        mpfr_sub(r10642, r10629, r10641, MPFR_RNDN);
        mpfr_mul(r10643, r10640, r10642, MPFR_RNDN);
        mpfr_const_pi(r10644, MPFR_RNDN);
        mpfr_div(r10645, r10631, r10644, MPFR_RNDN);
        mpfr_div(r10646, r10643, r10645, MPFR_RNDN);
        mpfr_div(r10647, r10634, r10646, MPFR_RNDN);
        return mpfr_get_d(r10647, MPFR_RNDN);
}

static mpfr_t r10648, r10649, r10650, r10651, r10652, r10653, r10654, r10655, r10656, r10657, r10658, r10659, r10660, r10661, r10662, r10663, r10664, r10665, r10666, r10667, r10668, r10669, r10670;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10648);
        mpfr_init_set_str(r10649, "5", 10, MPFR_RNDN);
        mpfr_init(r10650);
        mpfr_init(r10651);
        mpfr_init_set_str(r10652, "1", 10, MPFR_RNDN);
        mpfr_init(r10653);
        mpfr_init(r10654);
        mpfr_init(r10655);
        mpfr_init(r10656);
        mpfr_init(r10657);
        mpfr_init_set_str(r10658, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10659, "3", 10, MPFR_RNDN);
        mpfr_init(r10660);
        mpfr_init(r10661);
        mpfr_init(r10662);
        mpfr_init(r10663);
        mpfr_init(r10664);
        mpfr_init(r10665);
        mpfr_init(r10666);
        mpfr_init(r10667);
        mpfr_init(r10668);
        mpfr_init(r10669);
        mpfr_init(r10670);
}

double f_dm(double v, double t) {
        mpfr_set_d(r10648, v, MPFR_RNDN);
        ;
        mpfr_mul(r10650, r10648, r10649, MPFR_RNDN);
        mpfr_neg(r10651, r10648, MPFR_RNDN);
        ;
        mpfr_fma(r10653, r10650, r10651, r10652, MPFR_RNDN);
        mpfr_cbrt(r10654, r10653, MPFR_RNDN);
        mpfr_mul(r10655, r10654, r10654, MPFR_RNDN);
        mpfr_set_d(r10656, t, MPFR_RNDN);
        mpfr_div(r10657, r10655, r10656, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10660, r10659, r10648, MPFR_RNDN);
        mpfr_fma(r10661, r10660, r10651, r10652, MPFR_RNDN);
        mpfr_mul(r10662, r10658, r10661, MPFR_RNDN);
        mpfr_sqrt(r10663, r10662, MPFR_RNDN);
        mpfr_mul(r10664, r10648, r10648, MPFR_RNDN);
        mpfr_sub(r10665, r10652, r10664, MPFR_RNDN);
        mpfr_mul(r10666, r10663, r10665, MPFR_RNDN);
        mpfr_const_pi(r10667, MPFR_RNDN);
        mpfr_div(r10668, r10654, r10667, MPFR_RNDN);
        mpfr_div(r10669, r10666, r10668, MPFR_RNDN);
        mpfr_div(r10670, r10657, r10669, MPFR_RNDN);
        return mpfr_get_d(r10670, MPFR_RNDN);
}

