#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 r27508 = 1;
        float r27509 = 5;
        float r27510 = v;
        float r27511 = r27510 * r27510;
        float r27512 = r27509 * r27511;
        float r27513 = r27508 - r27512;
        float r27514 = atan2(1.0, 0.0);
        float r27515 = t;
        float r27516 = r27514 * r27515;
        float r27517 = 2;
        float r27518 = 3;
        float r27519 = r27518 * r27511;
        float r27520 = r27508 - r27519;
        float r27521 = r27517 * r27520;
        float r27522 = sqrt(r27521);
        float r27523 = r27516 * r27522;
        float r27524 = r27508 - r27511;
        float r27525 = r27523 * r27524;
        float r27526 = r27513 / r27525;
        return r27526;
}

double f_id(double v, double t) {
        double r27527 = 1;
        double r27528 = 5;
        double r27529 = v;
        double r27530 = r27529 * r27529;
        double r27531 = r27528 * r27530;
        double r27532 = r27527 - r27531;
        double r27533 = atan2(1.0, 0.0);
        double r27534 = t;
        double r27535 = r27533 * r27534;
        double r27536 = 2;
        double r27537 = 3;
        double r27538 = r27537 * r27530;
        double r27539 = r27527 - r27538;
        double r27540 = r27536 * r27539;
        double r27541 = sqrt(r27540);
        double r27542 = r27535 * r27541;
        double r27543 = r27527 - r27530;
        double r27544 = r27542 * r27543;
        double r27545 = r27532 / r27544;
        return r27545;
}


double f_of(float v, float t) {
        float r27546 = 1;
        float r27547 = v;
        float r27548 = 5;
        float r27549 = r27547 * r27548;
        float r27550 = r27547 * r27549;
        float r27551 = r27546 - r27550;
        float r27552 = t;
        float r27553 = r27551 / r27552;
        float r27554 = atan2(1.0, 0.0);
        float r27555 = r27547 * r27547;
        float r27556 = r27555 * r27555;
        float r27557 = r27546 - r27556;
        float r27558 = r27554 * r27557;
        float r27559 = 2;
        float r27560 = 3;
        float r27561 = r27560 * r27555;
        float r27562 = r27546 - r27561;
        float r27563 = r27559 * r27562;
        float r27564 = sqrt(r27563);
        float r27565 = r27558 * r27564;
        float r27566 = r27553 / r27565;
        float r27567 = r27546 + r27555;
        float r27568 = r27566 * r27567;
        return r27568;
}

double f_od(double v, double t) {
        double r27569 = 1;
        double r27570 = v;
        double r27571 = 5;
        double r27572 = r27570 * r27571;
        double r27573 = r27570 * r27572;
        double r27574 = r27569 - r27573;
        double r27575 = t;
        double r27576 = r27574 / r27575;
        double r27577 = atan2(1.0, 0.0);
        double r27578 = r27570 * r27570;
        double r27579 = r27578 * r27578;
        double r27580 = r27569 - r27579;
        double r27581 = r27577 * r27580;
        double r27582 = 2;
        double r27583 = 3;
        double r27584 = r27583 * r27578;
        double r27585 = r27569 - r27584;
        double r27586 = r27582 * r27585;
        double r27587 = sqrt(r27586);
        double r27588 = r27581 * r27587;
        double r27589 = r27576 / r27588;
        double r27590 = r27569 + r27578;
        double r27591 = r27589 * r27590;
        return r27591;
}

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 r27592, r27593, r27594, r27595, r27596, r27597, r27598, r27599, r27600, r27601, r27602, r27603, r27604, r27605, r27606, r27607, r27608, r27609, r27610;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27592, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27593, "5", 10, MPFR_RNDN);
        mpfr_init(r27594);
        mpfr_init(r27595);
        mpfr_init(r27596);
        mpfr_init(r27597);
        mpfr_init(r27598);
        mpfr_init(r27599);
        mpfr_init(r27600);
        mpfr_init_set_str(r27601, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27602, "3", 10, MPFR_RNDN);
        mpfr_init(r27603);
        mpfr_init(r27604);
        mpfr_init(r27605);
        mpfr_init(r27606);
        mpfr_init(r27607);
        mpfr_init(r27608);
        mpfr_init(r27609);
        mpfr_init(r27610);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r27594, v, MPFR_RNDN);
        mpfr_mul(r27595, r27594, r27594, MPFR_RNDN);
        mpfr_mul(r27596, r27593, r27595, MPFR_RNDN);
        mpfr_sub(r27597, r27592, r27596, MPFR_RNDN);
        mpfr_const_pi(r27598, MPFR_RNDN);
        mpfr_set_d(r27599, t, MPFR_RNDN);
        mpfr_mul(r27600, r27598, r27599, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r27603, r27602, r27595, MPFR_RNDN);
        mpfr_sub(r27604, r27592, r27603, MPFR_RNDN);
        mpfr_mul(r27605, r27601, r27604, MPFR_RNDN);
        mpfr_sqrt(r27606, r27605, MPFR_RNDN);
        mpfr_mul(r27607, r27600, r27606, MPFR_RNDN);
        mpfr_sub(r27608, r27592, r27595, MPFR_RNDN);
        mpfr_mul(r27609, r27607, r27608, MPFR_RNDN);
        mpfr_div(r27610, r27597, r27609, MPFR_RNDN);
        return mpfr_get_d(r27610, MPFR_RNDN);
}

static mpfr_t r27611, r27612, r27613, r27614, r27615, r27616, r27617, r27618, r27619, r27620, r27621, r27622, r27623, r27624, r27625, r27626, r27627, r27628, r27629, r27630, r27631, r27632, r27633;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27611, "1", 10, MPFR_RNDN);
        mpfr_init(r27612);
        mpfr_init_set_str(r27613, "5", 10, MPFR_RNDN);
        mpfr_init(r27614);
        mpfr_init(r27615);
        mpfr_init(r27616);
        mpfr_init(r27617);
        mpfr_init(r27618);
        mpfr_init(r27619);
        mpfr_init(r27620);
        mpfr_init(r27621);
        mpfr_init(r27622);
        mpfr_init(r27623);
        mpfr_init_set_str(r27624, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27625, "3", 10, MPFR_RNDN);
        mpfr_init(r27626);
        mpfr_init(r27627);
        mpfr_init(r27628);
        mpfr_init(r27629);
        mpfr_init(r27630);
        mpfr_init(r27631);
        mpfr_init(r27632);
        mpfr_init(r27633);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r27612, v, MPFR_RNDN);
        ;
        mpfr_mul(r27614, r27612, r27613, MPFR_RNDN);
        mpfr_mul(r27615, r27612, r27614, MPFR_RNDN);
        mpfr_sub(r27616, r27611, r27615, MPFR_RNDN);
        mpfr_set_d(r27617, t, MPFR_RNDN);
        mpfr_div(r27618, r27616, r27617, MPFR_RNDN);
        mpfr_const_pi(r27619, MPFR_RNDN);
        mpfr_mul(r27620, r27612, r27612, MPFR_RNDN);
        mpfr_mul(r27621, r27620, r27620, MPFR_RNDN);
        mpfr_sub(r27622, r27611, r27621, MPFR_RNDN);
        mpfr_mul(r27623, r27619, r27622, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r27626, r27625, r27620, MPFR_RNDN);
        mpfr_sub(r27627, r27611, r27626, MPFR_RNDN);
        mpfr_mul(r27628, r27624, r27627, MPFR_RNDN);
        mpfr_sqrt(r27629, r27628, MPFR_RNDN);
        mpfr_mul(r27630, r27623, r27629, MPFR_RNDN);
        mpfr_div(r27631, r27618, r27630, MPFR_RNDN);
        mpfr_add(r27632, r27611, r27620, MPFR_RNDN);
        mpfr_mul(r27633, r27631, r27632, MPFR_RNDN);
        return mpfr_get_d(r27633, MPFR_RNDN);
}

static mpfr_t r27634, r27635, r27636, r27637, r27638, r27639, r27640, r27641, r27642, r27643, r27644, r27645, r27646, r27647, r27648, r27649, r27650, r27651, r27652, r27653, r27654, r27655, r27656;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27634, "1", 10, MPFR_RNDN);
        mpfr_init(r27635);
        mpfr_init_set_str(r27636, "5", 10, MPFR_RNDN);
        mpfr_init(r27637);
        mpfr_init(r27638);
        mpfr_init(r27639);
        mpfr_init(r27640);
        mpfr_init(r27641);
        mpfr_init(r27642);
        mpfr_init(r27643);
        mpfr_init(r27644);
        mpfr_init(r27645);
        mpfr_init(r27646);
        mpfr_init_set_str(r27647, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27648, "3", 10, MPFR_RNDN);
        mpfr_init(r27649);
        mpfr_init(r27650);
        mpfr_init(r27651);
        mpfr_init(r27652);
        mpfr_init(r27653);
        mpfr_init(r27654);
        mpfr_init(r27655);
        mpfr_init(r27656);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r27635, v, MPFR_RNDN);
        ;
        mpfr_mul(r27637, r27635, r27636, MPFR_RNDN);
        mpfr_mul(r27638, r27635, r27637, MPFR_RNDN);
        mpfr_sub(r27639, r27634, r27638, MPFR_RNDN);
        mpfr_set_d(r27640, t, MPFR_RNDN);
        mpfr_div(r27641, r27639, r27640, MPFR_RNDN);
        mpfr_const_pi(r27642, MPFR_RNDN);
        mpfr_mul(r27643, r27635, r27635, MPFR_RNDN);
        mpfr_mul(r27644, r27643, r27643, MPFR_RNDN);
        mpfr_sub(r27645, r27634, r27644, MPFR_RNDN);
        mpfr_mul(r27646, r27642, r27645, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r27649, r27648, r27643, MPFR_RNDN);
        mpfr_sub(r27650, r27634, r27649, MPFR_RNDN);
        mpfr_mul(r27651, r27647, r27650, MPFR_RNDN);
        mpfr_sqrt(r27652, r27651, MPFR_RNDN);
        mpfr_mul(r27653, r27646, r27652, MPFR_RNDN);
        mpfr_div(r27654, r27641, r27653, MPFR_RNDN);
        mpfr_add(r27655, r27634, r27643, MPFR_RNDN);
        mpfr_mul(r27656, r27654, r27655, MPFR_RNDN);
        return mpfr_get_d(r27656, MPFR_RNDN);
}

