#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 r30464477 = 1;
        float r30464478 = 5;
        float r30464479 = v;
        float r30464480 = r30464479 * r30464479;
        float r30464481 = r30464478 * r30464480;
        float r30464482 = r30464477 - r30464481;
        float r30464483 = atan2(1.0, 0.0);
        float r30464484 = t;
        float r30464485 = r30464483 * r30464484;
        float r30464486 = 2;
        float r30464487 = 3;
        float r30464488 = r30464487 * r30464480;
        float r30464489 = r30464477 - r30464488;
        float r30464490 = r30464486 * r30464489;
        float r30464491 = sqrt(r30464490);
        float r30464492 = r30464485 * r30464491;
        float r30464493 = r30464477 - r30464480;
        float r30464494 = r30464492 * r30464493;
        float r30464495 = r30464482 / r30464494;
        return r30464495;
}

double f_id(double v, double t) {
        double r30464496 = 1;
        double r30464497 = 5;
        double r30464498 = v;
        double r30464499 = r30464498 * r30464498;
        double r30464500 = r30464497 * r30464499;
        double r30464501 = r30464496 - r30464500;
        double r30464502 = atan2(1.0, 0.0);
        double r30464503 = t;
        double r30464504 = r30464502 * r30464503;
        double r30464505 = 2;
        double r30464506 = 3;
        double r30464507 = r30464506 * r30464499;
        double r30464508 = r30464496 - r30464507;
        double r30464509 = r30464505 * r30464508;
        double r30464510 = sqrt(r30464509);
        double r30464511 = r30464504 * r30464510;
        double r30464512 = r30464496 - r30464499;
        double r30464513 = r30464511 * r30464512;
        double r30464514 = r30464501 / r30464513;
        return r30464514;
}


double f_of(float v, float t) {
        float r30464515 = 1;
        float r30464516 = v;
        float r30464517 = 5;
        float r30464518 = r30464516 * r30464517;
        float r30464519 = r30464518 * r30464516;
        float r30464520 = r30464515 - r30464519;
        float r30464521 = cbrt(r30464520);
        float r30464522 = r30464521 * r30464521;
        float r30464523 = t;
        float r30464524 = r30464522 / r30464523;
        float r30464525 = 3;
        float r30464526 = pow(r30464516, r30464525);
        float r30464527 = r30464526 * r30464526;
        float r30464528 = r30464515 - r30464527;
        float r30464529 = 2;
        float r30464530 = sqrt(r30464529);
        float r30464531 = r30464528 * r30464530;
        float r30464532 = r30464524 / r30464531;
        float r30464533 = atan2(1.0, 0.0);
        float r30464534 = r30464521 / r30464533;
        float r30464535 = r30464516 * r30464516;
        float r30464536 = r30464535 * r30464525;
        float r30464537 = r30464536 * r30464536;
        float r30464538 = r30464515 - r30464537;
        float r30464539 = sqrt(r30464538);
        float r30464540 = r30464534 / r30464539;
        float r30464541 = r30464532 * r30464540;
        float r30464542 = r30464525 * r30464535;
        float r30464543 = r30464515 + r30464542;
        float r30464544 = sqrt(r30464543);
        float r30464545 = r30464515 * r30464515;
        float r30464546 = r30464535 * r30464535;
        float r30464547 = r30464515 * r30464535;
        float r30464548 = r30464546 + r30464547;
        float r30464549 = r30464545 + r30464548;
        float r30464550 = r30464544 * r30464549;
        float r30464551 = r30464541 * r30464550;
        return r30464551;
}

double f_od(double v, double t) {
        double r30464552 = 1;
        double r30464553 = v;
        double r30464554 = 5;
        double r30464555 = r30464553 * r30464554;
        double r30464556 = r30464555 * r30464553;
        double r30464557 = r30464552 - r30464556;
        double r30464558 = cbrt(r30464557);
        double r30464559 = r30464558 * r30464558;
        double r30464560 = t;
        double r30464561 = r30464559 / r30464560;
        double r30464562 = 3;
        double r30464563 = pow(r30464553, r30464562);
        double r30464564 = r30464563 * r30464563;
        double r30464565 = r30464552 - r30464564;
        double r30464566 = 2;
        double r30464567 = sqrt(r30464566);
        double r30464568 = r30464565 * r30464567;
        double r30464569 = r30464561 / r30464568;
        double r30464570 = atan2(1.0, 0.0);
        double r30464571 = r30464558 / r30464570;
        double r30464572 = r30464553 * r30464553;
        double r30464573 = r30464572 * r30464562;
        double r30464574 = r30464573 * r30464573;
        double r30464575 = r30464552 - r30464574;
        double r30464576 = sqrt(r30464575);
        double r30464577 = r30464571 / r30464576;
        double r30464578 = r30464569 * r30464577;
        double r30464579 = r30464562 * r30464572;
        double r30464580 = r30464552 + r30464579;
        double r30464581 = sqrt(r30464580);
        double r30464582 = r30464552 * r30464552;
        double r30464583 = r30464572 * r30464572;
        double r30464584 = r30464552 * r30464572;
        double r30464585 = r30464583 + r30464584;
        double r30464586 = r30464582 + r30464585;
        double r30464587 = r30464581 * r30464586;
        double r30464588 = r30464578 * r30464587;
        return r30464588;
}

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 r30464589, r30464590, r30464591, r30464592, r30464593, r30464594, r30464595, r30464596, r30464597, r30464598, r30464599, r30464600, r30464601, r30464602, r30464603, r30464604, r30464605, r30464606, r30464607;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464589, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464590, "5", 10, MPFR_RNDN);
        mpfr_init(r30464591);
        mpfr_init(r30464592);
        mpfr_init(r30464593);
        mpfr_init(r30464594);
        mpfr_init(r30464595);
        mpfr_init(r30464596);
        mpfr_init(r30464597);
        mpfr_init_set_str(r30464598, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r30464599, "3", 10, MPFR_RNDN);
        mpfr_init(r30464600);
        mpfr_init(r30464601);
        mpfr_init(r30464602);
        mpfr_init(r30464603);
        mpfr_init(r30464604);
        mpfr_init(r30464605);
        mpfr_init(r30464606);
        mpfr_init(r30464607);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r30464591, v, MPFR_RNDN);
        mpfr_mul(r30464592, r30464591, r30464591, MPFR_RNDN);
        mpfr_mul(r30464593, r30464590, r30464592, MPFR_RNDN);
        mpfr_sub(r30464594, r30464589, r30464593, MPFR_RNDN);
        mpfr_const_pi(r30464595, MPFR_RNDN);
        mpfr_set_d(r30464596, t, MPFR_RNDN);
        mpfr_mul(r30464597, r30464595, r30464596, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r30464600, r30464599, r30464592, MPFR_RNDN);
        mpfr_sub(r30464601, r30464589, r30464600, MPFR_RNDN);
        mpfr_mul(r30464602, r30464598, r30464601, MPFR_RNDN);
        mpfr_sqrt(r30464603, r30464602, MPFR_RNDN);
        mpfr_mul(r30464604, r30464597, r30464603, MPFR_RNDN);
        mpfr_sub(r30464605, r30464589, r30464592, MPFR_RNDN);
        mpfr_mul(r30464606, r30464604, r30464605, MPFR_RNDN);
        mpfr_div(r30464607, r30464594, r30464606, MPFR_RNDN);
        return mpfr_get_d(r30464607, MPFR_RNDN);
}

static mpfr_t r30464608, r30464609, r30464610, r30464611, r30464612, r30464613, r30464614, r30464615, r30464616, r30464617, r30464618, r30464619, r30464620, r30464621, r30464622, r30464623, r30464624, r30464625, r30464626, r30464627, r30464628, r30464629, r30464630, r30464631, r30464632, r30464633, r30464634, r30464635, r30464636, r30464637, r30464638, r30464639, r30464640, r30464641, r30464642, r30464643, r30464644;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464608, "1", 10, MPFR_RNDN);
        mpfr_init(r30464609);
        mpfr_init_set_str(r30464610, "5", 10, MPFR_RNDN);
        mpfr_init(r30464611);
        mpfr_init(r30464612);
        mpfr_init(r30464613);
        mpfr_init(r30464614);
        mpfr_init(r30464615);
        mpfr_init(r30464616);
        mpfr_init(r30464617);
        mpfr_init_set_str(r30464618, "3", 10, MPFR_RNDN);
        mpfr_init(r30464619);
        mpfr_init(r30464620);
        mpfr_init(r30464621);
        mpfr_init_set_str(r30464622, "2", 10, MPFR_RNDN);
        mpfr_init(r30464623);
        mpfr_init(r30464624);
        mpfr_init(r30464625);
        mpfr_init(r30464626);
        mpfr_init(r30464627);
        mpfr_init(r30464628);
        mpfr_init(r30464629);
        mpfr_init(r30464630);
        mpfr_init(r30464631);
        mpfr_init(r30464632);
        mpfr_init(r30464633);
        mpfr_init(r30464634);
        mpfr_init(r30464635);
        mpfr_init(r30464636);
        mpfr_init(r30464637);
        mpfr_init(r30464638);
        mpfr_init(r30464639);
        mpfr_init(r30464640);
        mpfr_init(r30464641);
        mpfr_init(r30464642);
        mpfr_init(r30464643);
        mpfr_init(r30464644);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r30464609, v, MPFR_RNDN);
        ;
        mpfr_mul(r30464611, r30464609, r30464610, MPFR_RNDN);
        mpfr_mul(r30464612, r30464611, r30464609, MPFR_RNDN);
        mpfr_sub(r30464613, r30464608, r30464612, MPFR_RNDN);
        mpfr_cbrt(r30464614, r30464613, MPFR_RNDN);
        mpfr_mul(r30464615, r30464614, r30464614, MPFR_RNDN);
        mpfr_set_d(r30464616, t, MPFR_RNDN);
        mpfr_div(r30464617, r30464615, r30464616, MPFR_RNDN);
        ;
        mpfr_pow(r30464619, r30464609, r30464618, MPFR_RNDN);
        mpfr_mul(r30464620, r30464619, r30464619, MPFR_RNDN);
        mpfr_sub(r30464621, r30464608, r30464620, MPFR_RNDN);
        ;
        mpfr_sqrt(r30464623, r30464622, MPFR_RNDN);
        mpfr_mul(r30464624, r30464621, r30464623, MPFR_RNDN);
        mpfr_div(r30464625, r30464617, r30464624, MPFR_RNDN);
        mpfr_const_pi(r30464626, MPFR_RNDN);
        mpfr_div(r30464627, r30464614, r30464626, MPFR_RNDN);
        mpfr_mul(r30464628, r30464609, r30464609, MPFR_RNDN);
        mpfr_mul(r30464629, r30464628, r30464618, MPFR_RNDN);
        mpfr_mul(r30464630, r30464629, r30464629, MPFR_RNDN);
        mpfr_sub(r30464631, r30464608, r30464630, MPFR_RNDN);
        mpfr_sqrt(r30464632, r30464631, MPFR_RNDN);
        mpfr_div(r30464633, r30464627, r30464632, MPFR_RNDN);
        mpfr_mul(r30464634, r30464625, r30464633, MPFR_RNDN);
        mpfr_mul(r30464635, r30464618, r30464628, MPFR_RNDN);
        mpfr_add(r30464636, r30464608, r30464635, MPFR_RNDN);
        mpfr_sqrt(r30464637, r30464636, MPFR_RNDN);
        mpfr_mul(r30464638, r30464608, r30464608, MPFR_RNDN);
        mpfr_mul(r30464639, r30464628, r30464628, MPFR_RNDN);
        mpfr_mul(r30464640, r30464608, r30464628, MPFR_RNDN);
        mpfr_add(r30464641, r30464639, r30464640, MPFR_RNDN);
        mpfr_add(r30464642, r30464638, r30464641, MPFR_RNDN);
        mpfr_mul(r30464643, r30464637, r30464642, MPFR_RNDN);
        mpfr_mul(r30464644, r30464634, r30464643, MPFR_RNDN);
        return mpfr_get_d(r30464644, MPFR_RNDN);
}

static mpfr_t r30464645, r30464646, r30464647, r30464648, r30464649, r30464650, r30464651, r30464652, r30464653, r30464654, r30464655, r30464656, r30464657, r30464658, r30464659, r30464660, r30464661, r30464662, r30464663, r30464664, r30464665, r30464666, r30464667, r30464668, r30464669, r30464670, r30464671, r30464672, r30464673, r30464674, r30464675, r30464676, r30464677, r30464678, r30464679, r30464680, r30464681;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r30464645, "1", 10, MPFR_RNDN);
        mpfr_init(r30464646);
        mpfr_init_set_str(r30464647, "5", 10, MPFR_RNDN);
        mpfr_init(r30464648);
        mpfr_init(r30464649);
        mpfr_init(r30464650);
        mpfr_init(r30464651);
        mpfr_init(r30464652);
        mpfr_init(r30464653);
        mpfr_init(r30464654);
        mpfr_init_set_str(r30464655, "3", 10, MPFR_RNDN);
        mpfr_init(r30464656);
        mpfr_init(r30464657);
        mpfr_init(r30464658);
        mpfr_init_set_str(r30464659, "2", 10, MPFR_RNDN);
        mpfr_init(r30464660);
        mpfr_init(r30464661);
        mpfr_init(r30464662);
        mpfr_init(r30464663);
        mpfr_init(r30464664);
        mpfr_init(r30464665);
        mpfr_init(r30464666);
        mpfr_init(r30464667);
        mpfr_init(r30464668);
        mpfr_init(r30464669);
        mpfr_init(r30464670);
        mpfr_init(r30464671);
        mpfr_init(r30464672);
        mpfr_init(r30464673);
        mpfr_init(r30464674);
        mpfr_init(r30464675);
        mpfr_init(r30464676);
        mpfr_init(r30464677);
        mpfr_init(r30464678);
        mpfr_init(r30464679);
        mpfr_init(r30464680);
        mpfr_init(r30464681);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r30464646, v, MPFR_RNDN);
        ;
        mpfr_mul(r30464648, r30464646, r30464647, MPFR_RNDN);
        mpfr_mul(r30464649, r30464648, r30464646, MPFR_RNDN);
        mpfr_sub(r30464650, r30464645, r30464649, MPFR_RNDN);
        mpfr_cbrt(r30464651, r30464650, MPFR_RNDN);
        mpfr_mul(r30464652, r30464651, r30464651, MPFR_RNDN);
        mpfr_set_d(r30464653, t, MPFR_RNDN);
        mpfr_div(r30464654, r30464652, r30464653, MPFR_RNDN);
        ;
        mpfr_pow(r30464656, r30464646, r30464655, MPFR_RNDN);
        mpfr_mul(r30464657, r30464656, r30464656, MPFR_RNDN);
        mpfr_sub(r30464658, r30464645, r30464657, MPFR_RNDN);
        ;
        mpfr_sqrt(r30464660, r30464659, MPFR_RNDN);
        mpfr_mul(r30464661, r30464658, r30464660, MPFR_RNDN);
        mpfr_div(r30464662, r30464654, r30464661, MPFR_RNDN);
        mpfr_const_pi(r30464663, MPFR_RNDN);
        mpfr_div(r30464664, r30464651, r30464663, MPFR_RNDN);
        mpfr_mul(r30464665, r30464646, r30464646, MPFR_RNDN);
        mpfr_mul(r30464666, r30464665, r30464655, MPFR_RNDN);
        mpfr_mul(r30464667, r30464666, r30464666, MPFR_RNDN);
        mpfr_sub(r30464668, r30464645, r30464667, MPFR_RNDN);
        mpfr_sqrt(r30464669, r30464668, MPFR_RNDN);
        mpfr_div(r30464670, r30464664, r30464669, MPFR_RNDN);
        mpfr_mul(r30464671, r30464662, r30464670, MPFR_RNDN);
        mpfr_mul(r30464672, r30464655, r30464665, MPFR_RNDN);
        mpfr_add(r30464673, r30464645, r30464672, MPFR_RNDN);
        mpfr_sqrt(r30464674, r30464673, MPFR_RNDN);
        mpfr_mul(r30464675, r30464645, r30464645, MPFR_RNDN);
        mpfr_mul(r30464676, r30464665, r30464665, MPFR_RNDN);
        mpfr_mul(r30464677, r30464645, r30464665, MPFR_RNDN);
        mpfr_add(r30464678, r30464676, r30464677, MPFR_RNDN);
        mpfr_add(r30464679, r30464675, r30464678, MPFR_RNDN);
        mpfr_mul(r30464680, r30464674, r30464679, MPFR_RNDN);
        mpfr_mul(r30464681, r30464671, r30464680, MPFR_RNDN);
        return mpfr_get_d(r30464681, MPFR_RNDN);
}

