#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 r11113 = 1;
        float r11114 = 5;
        float r11115 = v;
        float r11116 = r11115 * r11115;
        float r11117 = r11114 * r11116;
        float r11118 = r11113 - r11117;
        float r11119 = atan2(1.0, 0.0);
        float r11120 = t;
        float r11121 = r11119 * r11120;
        float r11122 = 2;
        float r11123 = 3;
        float r11124 = r11123 * r11116;
        float r11125 = r11113 - r11124;
        float r11126 = r11122 * r11125;
        float r11127 = sqrt(r11126);
        float r11128 = r11121 * r11127;
        float r11129 = r11113 - r11116;
        float r11130 = r11128 * r11129;
        float r11131 = r11118 / r11130;
        return r11131;
}

double f_id(double v, double t) {
        double r11132 = 1;
        double r11133 = 5;
        double r11134 = v;
        double r11135 = r11134 * r11134;
        double r11136 = r11133 * r11135;
        double r11137 = r11132 - r11136;
        double r11138 = atan2(1.0, 0.0);
        double r11139 = t;
        double r11140 = r11138 * r11139;
        double r11141 = 2;
        double r11142 = 3;
        double r11143 = r11142 * r11135;
        double r11144 = r11132 - r11143;
        double r11145 = r11141 * r11144;
        double r11146 = sqrt(r11145);
        double r11147 = r11140 * r11146;
        double r11148 = r11132 - r11135;
        double r11149 = r11147 * r11148;
        double r11150 = r11137 / r11149;
        return r11150;
}


double f_of(float v, float t) {
        float r11151 = v;
        float r11152 = r11151 * r11151;
        float r11153 = 5;
        float r11154 = -r11153;
        float r11155 = 1;
        float r11156 = fma(r11152, r11154, r11155);
        float r11157 = 3;
        float r11158 = pow(r11151, r11157);
        float r11159 = -r11151;
        float r11160 = fma(r11158, r11159, r11155);
        float r11161 = atan2(1.0, 0.0);
        float r11162 = r11160 * r11161;
        float r11163 = r11156 / r11162;
        float r11164 = 2;
        float r11165 = -r11157;
        float r11166 = fma(r11152, r11165, r11155);
        float r11167 = r11164 * r11166;
        float r11168 = sqrt(r11167);
        float r11169 = cbrt(r11168);
        float r11170 = r11169 * r11169;
        float r11171 = t;
        float r11172 = r11169 * r11171;
        float r11173 = r11170 * r11172;
        float r11174 = r11163 / r11173;
        float r11175 = r11155 + r11152;
        float r11176 = r11174 * r11175;
        return r11176;
}

double f_od(double v, double t) {
        double r11177 = v;
        double r11178 = r11177 * r11177;
        double r11179 = 5;
        double r11180 = -r11179;
        double r11181 = 1;
        double r11182 = fma(r11178, r11180, r11181);
        double r11183 = 3;
        double r11184 = pow(r11177, r11183);
        double r11185 = -r11177;
        double r11186 = fma(r11184, r11185, r11181);
        double r11187 = atan2(1.0, 0.0);
        double r11188 = r11186 * r11187;
        double r11189 = r11182 / r11188;
        double r11190 = 2;
        double r11191 = -r11183;
        double r11192 = fma(r11178, r11191, r11181);
        double r11193 = r11190 * r11192;
        double r11194 = sqrt(r11193);
        double r11195 = cbrt(r11194);
        double r11196 = r11195 * r11195;
        double r11197 = t;
        double r11198 = r11195 * r11197;
        double r11199 = r11196 * r11198;
        double r11200 = r11189 / r11199;
        double r11201 = r11181 + r11178;
        double r11202 = r11200 * r11201;
        return r11202;
}

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 r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211, r11212, r11213, r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11203, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11204, "5", 10, MPFR_RNDN);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
        mpfr_init_set_str(r11212, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11213, "3", 10, MPFR_RNDN);
        mpfr_init(r11214);
        mpfr_init(r11215);
        mpfr_init(r11216);
        mpfr_init(r11217);
        mpfr_init(r11218);
        mpfr_init(r11219);
        mpfr_init(r11220);
        mpfr_init(r11221);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r11205, v, MPFR_RNDN);
        mpfr_mul(r11206, r11205, r11205, MPFR_RNDN);
        mpfr_mul(r11207, r11204, r11206, MPFR_RNDN);
        mpfr_sub(r11208, r11203, r11207, MPFR_RNDN);
        mpfr_const_pi(r11209, MPFR_RNDN);
        mpfr_set_d(r11210, t, MPFR_RNDN);
        mpfr_mul(r11211, r11209, r11210, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r11214, r11213, r11206, MPFR_RNDN);
        mpfr_sub(r11215, r11203, r11214, MPFR_RNDN);
        mpfr_mul(r11216, r11212, r11215, MPFR_RNDN);
        mpfr_sqrt(r11217, r11216, MPFR_RNDN);
        mpfr_mul(r11218, r11211, r11217, MPFR_RNDN);
        mpfr_sub(r11219, r11203, r11206, MPFR_RNDN);
        mpfr_mul(r11220, r11218, r11219, MPFR_RNDN);
        mpfr_div(r11221, r11208, r11220, MPFR_RNDN);
        return mpfr_get_d(r11221, MPFR_RNDN);
}

static mpfr_t r11222, r11223, r11224, r11225, r11226, r11227, r11228, r11229, r11230, r11231, r11232, r11233, r11234, r11235, r11236, r11237, r11238, r11239, r11240, r11241, r11242, r11243, r11244, r11245, r11246, r11247;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11222);
        mpfr_init(r11223);
        mpfr_init_set_str(r11224, "5", 10, MPFR_RNDN);
        mpfr_init(r11225);
        mpfr_init_set_str(r11226, "1", 10, MPFR_RNDN);
        mpfr_init(r11227);
        mpfr_init_set_str(r11228, "3", 10, MPFR_RNDN);
        mpfr_init(r11229);
        mpfr_init(r11230);
        mpfr_init(r11231);
        mpfr_init(r11232);
        mpfr_init(r11233);
        mpfr_init(r11234);
        mpfr_init_set_str(r11235, "2", 10, MPFR_RNDN);
        mpfr_init(r11236);
        mpfr_init(r11237);
        mpfr_init(r11238);
        mpfr_init(r11239);
        mpfr_init(r11240);
        mpfr_init(r11241);
        mpfr_init(r11242);
        mpfr_init(r11243);
        mpfr_init(r11244);
        mpfr_init(r11245);
        mpfr_init(r11246);
        mpfr_init(r11247);
}

double f_fm(double v, double t) {
        mpfr_set_d(r11222, v, MPFR_RNDN);
        mpfr_mul(r11223, r11222, r11222, MPFR_RNDN);
        ;
        mpfr_neg(r11225, r11224, MPFR_RNDN);
        ;
        mpfr_fma(r11227, r11223, r11225, r11226, MPFR_RNDN);
        ;
        mpfr_pow(r11229, r11222, r11228, MPFR_RNDN);
        mpfr_neg(r11230, r11222, MPFR_RNDN);
        mpfr_fma(r11231, r11229, r11230, r11226, MPFR_RNDN);
        mpfr_const_pi(r11232, MPFR_RNDN);
        mpfr_mul(r11233, r11231, r11232, MPFR_RNDN);
        mpfr_div(r11234, r11227, r11233, MPFR_RNDN);
        ;
        mpfr_neg(r11236, r11228, MPFR_RNDN);
        mpfr_fma(r11237, r11223, r11236, r11226, MPFR_RNDN);
        mpfr_mul(r11238, r11235, r11237, MPFR_RNDN);
        mpfr_sqrt(r11239, r11238, MPFR_RNDN);
        mpfr_cbrt(r11240, r11239, MPFR_RNDN);
        mpfr_mul(r11241, r11240, r11240, MPFR_RNDN);
        mpfr_set_d(r11242, t, MPFR_RNDN);
        mpfr_mul(r11243, r11240, r11242, MPFR_RNDN);
        mpfr_mul(r11244, r11241, r11243, MPFR_RNDN);
        mpfr_div(r11245, r11234, r11244, MPFR_RNDN);
        mpfr_add(r11246, r11226, r11223, MPFR_RNDN);
        mpfr_mul(r11247, r11245, r11246, MPFR_RNDN);
        return mpfr_get_d(r11247, MPFR_RNDN);
}

static mpfr_t r11248, r11249, r11250, r11251, r11252, r11253, r11254, r11255, r11256, r11257, r11258, r11259, r11260, r11261, r11262, r11263, r11264, r11265, r11266, r11267, r11268, r11269, r11270, r11271, r11272, r11273;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11248);
        mpfr_init(r11249);
        mpfr_init_set_str(r11250, "5", 10, MPFR_RNDN);
        mpfr_init(r11251);
        mpfr_init_set_str(r11252, "1", 10, MPFR_RNDN);
        mpfr_init(r11253);
        mpfr_init_set_str(r11254, "3", 10, MPFR_RNDN);
        mpfr_init(r11255);
        mpfr_init(r11256);
        mpfr_init(r11257);
        mpfr_init(r11258);
        mpfr_init(r11259);
        mpfr_init(r11260);
        mpfr_init_set_str(r11261, "2", 10, MPFR_RNDN);
        mpfr_init(r11262);
        mpfr_init(r11263);
        mpfr_init(r11264);
        mpfr_init(r11265);
        mpfr_init(r11266);
        mpfr_init(r11267);
        mpfr_init(r11268);
        mpfr_init(r11269);
        mpfr_init(r11270);
        mpfr_init(r11271);
        mpfr_init(r11272);
        mpfr_init(r11273);
}

double f_dm(double v, double t) {
        mpfr_set_d(r11248, v, MPFR_RNDN);
        mpfr_mul(r11249, r11248, r11248, MPFR_RNDN);
        ;
        mpfr_neg(r11251, r11250, MPFR_RNDN);
        ;
        mpfr_fma(r11253, r11249, r11251, r11252, MPFR_RNDN);
        ;
        mpfr_pow(r11255, r11248, r11254, MPFR_RNDN);
        mpfr_neg(r11256, r11248, MPFR_RNDN);
        mpfr_fma(r11257, r11255, r11256, r11252, MPFR_RNDN);
        mpfr_const_pi(r11258, MPFR_RNDN);
        mpfr_mul(r11259, r11257, r11258, MPFR_RNDN);
        mpfr_div(r11260, r11253, r11259, MPFR_RNDN);
        ;
        mpfr_neg(r11262, r11254, MPFR_RNDN);
        mpfr_fma(r11263, r11249, r11262, r11252, MPFR_RNDN);
        mpfr_mul(r11264, r11261, r11263, MPFR_RNDN);
        mpfr_sqrt(r11265, r11264, MPFR_RNDN);
        mpfr_cbrt(r11266, r11265, MPFR_RNDN);
        mpfr_mul(r11267, r11266, r11266, MPFR_RNDN);
        mpfr_set_d(r11268, t, MPFR_RNDN);
        mpfr_mul(r11269, r11266, r11268, MPFR_RNDN);
        mpfr_mul(r11270, r11267, r11269, MPFR_RNDN);
        mpfr_div(r11271, r11260, r11270, MPFR_RNDN);
        mpfr_add(r11272, r11252, r11249, MPFR_RNDN);
        mpfr_mul(r11273, r11271, r11272, MPFR_RNDN);
        return mpfr_get_d(r11273, MPFR_RNDN);
}

