#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 r10513 = 1.0f;
        float r10514 = 5.0f;
        float r10515 = v;
        float r10516 = r10515 * r10515;
        float r10517 = r10514 * r10516;
        float r10518 = r10513 - r10517;
        float r10519 = atan2(1.0, 0.0);
        float r10520 = t;
        float r10521 = r10519 * r10520;
        float r10522 = 2.0f;
        float r10523 = 3.0f;
        float r10524 = r10523 * r10516;
        float r10525 = r10513 - r10524;
        float r10526 = r10522 * r10525;
        float r10527 = sqrt(r10526);
        float r10528 = r10521 * r10527;
        float r10529 = r10513 - r10516;
        float r10530 = r10528 * r10529;
        float r10531 = r10518 / r10530;
        return r10531;
}

double f_id(double v, double t) {
        double r10532 = 1.0;
        double r10533 = 5.0;
        double r10534 = v;
        double r10535 = r10534 * r10534;
        double r10536 = r10533 * r10535;
        double r10537 = r10532 - r10536;
        double r10538 = atan2(1.0, 0.0);
        double r10539 = t;
        double r10540 = r10538 * r10539;
        double r10541 = 2.0;
        double r10542 = 3.0;
        double r10543 = r10542 * r10535;
        double r10544 = r10532 - r10543;
        double r10545 = r10541 * r10544;
        double r10546 = sqrt(r10545);
        double r10547 = r10540 * r10546;
        double r10548 = r10532 - r10535;
        double r10549 = r10547 * r10548;
        double r10550 = r10537 / r10549;
        return r10550;
}


double f_of(float v, float t) {
        float r10551 = v;
        float r10552 = 5.0f;
        float r10553 = r10551 * r10552;
        float r10554 = -r10551;
        float r10555 = 1.0f;
        float r10556 = fma(r10553, r10554, r10555);
        float r10557 = 2.0f;
        float r10558 = r10551 * r10551;
        float r10559 = 3.0f;
        float r10560 = r10559 * r10557;
        float r10561 = r10558 * r10560;
        float r10562 = r10557 - r10561;
        float r10563 = sqrt(r10562);
        float r10564 = r10556 / r10563;
        float r10565 = atan2(1.0, 0.0);
        float r10566 = r10555 / r10565;
        float r10567 = t;
        float r10568 = r10566 / r10567;
        float r10569 = r10555 - r10558;
        float r10570 = r10568 / r10569;
        float r10571 = r10564 * r10570;
        return r10571;
}

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

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 r10593, r10594, r10595, r10596, r10597, r10598, r10599, r10600, r10601, r10602, r10603, r10604, r10605, r10606, r10607, r10608, r10609, r10610, r10611;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r10593, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r10594, "5", 10, MPFR_RNDN);
        mpfr_init(r10595);
        mpfr_init(r10596);
        mpfr_init(r10597);
        mpfr_init(r10598);
        mpfr_init(r10599);
        mpfr_init(r10600);
        mpfr_init(r10601);
        mpfr_init_set_str(r10602, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r10603, "3", 10, MPFR_RNDN);
        mpfr_init(r10604);
        mpfr_init(r10605);
        mpfr_init(r10606);
        mpfr_init(r10607);
        mpfr_init(r10608);
        mpfr_init(r10609);
        mpfr_init(r10610);
        mpfr_init(r10611);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r10595, v, MPFR_RNDN);
        mpfr_mul(r10596, r10595, r10595, MPFR_RNDN);
        mpfr_mul(r10597, r10594, r10596, MPFR_RNDN);
        mpfr_sub(r10598, r10593, r10597, MPFR_RNDN);
        mpfr_const_pi(r10599, MPFR_RNDN);
        mpfr_set_d(r10600, t, MPFR_RNDN);
        mpfr_mul(r10601, r10599, r10600, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r10604, r10603, r10596, MPFR_RNDN);
        mpfr_sub(r10605, r10593, r10604, MPFR_RNDN);
        mpfr_mul(r10606, r10602, r10605, MPFR_RNDN);
        mpfr_sqrt(r10607, r10606, MPFR_RNDN);
        mpfr_mul(r10608, r10601, r10607, MPFR_RNDN);
        mpfr_sub(r10609, r10593, r10596, MPFR_RNDN);
        mpfr_mul(r10610, r10608, r10609, MPFR_RNDN);
        mpfr_div(r10611, r10598, r10610, MPFR_RNDN);
        return mpfr_get_d(r10611, MPFR_RNDN);
}

static mpfr_t r10612, r10613, r10614, r10615, r10616, r10617, r10618, r10619, r10620, r10621, r10622, r10623, r10624, r10625, r10626, r10627, r10628, r10629, r10630, r10631, r10632;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r10612);
        mpfr_init_set_str(r10613, "5", 10, MPFR_RNDN);
        mpfr_init(r10614);
        mpfr_init(r10615);
        mpfr_init_set_str(r10616, "1", 10, MPFR_RNDN);
        mpfr_init(r10617);
        mpfr_init_set_str(r10618, "2", 10, MPFR_RNDN);
        mpfr_init(r10619);
        mpfr_init_set_str(r10620, "3", 10, MPFR_RNDN);
        mpfr_init(r10621);
        mpfr_init(r10622);
        mpfr_init(r10623);
        mpfr_init(r10624);
        mpfr_init(r10625);
        mpfr_init(r10626);
        mpfr_init(r10627);
        mpfr_init(r10628);
        mpfr_init(r10629);
        mpfr_init(r10630);
        mpfr_init(r10631);
        mpfr_init(r10632);
}

double f_fm(double v, double t) {
        mpfr_set_d(r10612, v, MPFR_RNDN);
        ;
        mpfr_mul(r10614, r10612, r10613, MPFR_RNDN);
        mpfr_neg(r10615, r10612, MPFR_RNDN);
        ;
        mpfr_fma(r10617, r10614, r10615, r10616, MPFR_RNDN);
        ;
        mpfr_mul(r10619, r10612, r10612, MPFR_RNDN);
        ;
        mpfr_mul(r10621, r10620, r10618, MPFR_RNDN);
        mpfr_mul(r10622, r10619, r10621, MPFR_RNDN);
        mpfr_sub(r10623, r10618, r10622, MPFR_RNDN);
        mpfr_sqrt(r10624, r10623, MPFR_RNDN);
        mpfr_div(r10625, r10617, r10624, MPFR_RNDN);
        mpfr_const_pi(r10626, MPFR_RNDN);
        mpfr_div(r10627, r10616, r10626, MPFR_RNDN);
        mpfr_set_d(r10628, t, MPFR_RNDN);
        mpfr_div(r10629, r10627, r10628, MPFR_RNDN);
        mpfr_sub(r10630, r10616, r10619, MPFR_RNDN);
        mpfr_div(r10631, r10629, r10630, MPFR_RNDN);
        mpfr_mul(r10632, r10625, r10631, MPFR_RNDN);
        return mpfr_get_d(r10632, MPFR_RNDN);
}

static mpfr_t r10633, r10634, r10635, r10636, r10637, r10638, r10639, r10640, r10641, r10642, r10643, r10644, r10645, r10646, r10647, r10648, r10649, r10650, r10651, r10652, r10653;

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

double f_dm(double v, double t) {
        mpfr_set_d(r10633, v, MPFR_RNDN);
        ;
        mpfr_mul(r10635, r10633, r10634, MPFR_RNDN);
        mpfr_neg(r10636, r10633, MPFR_RNDN);
        ;
        mpfr_fma(r10638, r10635, r10636, r10637, MPFR_RNDN);
        ;
        mpfr_mul(r10640, r10633, r10633, MPFR_RNDN);
        ;
        mpfr_mul(r10642, r10641, r10639, MPFR_RNDN);
        mpfr_mul(r10643, r10640, r10642, MPFR_RNDN);
        mpfr_sub(r10644, r10639, r10643, MPFR_RNDN);
        mpfr_sqrt(r10645, r10644, MPFR_RNDN);
        mpfr_div(r10646, r10638, r10645, MPFR_RNDN);
        mpfr_const_pi(r10647, MPFR_RNDN);
        mpfr_div(r10648, r10637, r10647, MPFR_RNDN);
        mpfr_set_d(r10649, t, MPFR_RNDN);
        mpfr_div(r10650, r10648, r10649, MPFR_RNDN);
        mpfr_sub(r10651, r10637, r10640, MPFR_RNDN);
        mpfr_div(r10652, r10650, r10651, MPFR_RNDN);
        mpfr_mul(r10653, r10646, r10652, MPFR_RNDN);
        return mpfr_get_d(r10653, MPFR_RNDN);
}

