#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 r11127 = 1;
        float r11128 = 5;
        float r11129 = v;
        float r11130 = r11129 * r11129;
        float r11131 = r11128 * r11130;
        float r11132 = r11127 - r11131;
        float r11133 = atan2(1.0, 0.0);
        float r11134 = t;
        float r11135 = r11133 * r11134;
        float r11136 = 2;
        float r11137 = 3;
        float r11138 = r11137 * r11130;
        float r11139 = r11127 - r11138;
        float r11140 = r11136 * r11139;
        float r11141 = sqrt(r11140);
        float r11142 = r11135 * r11141;
        float r11143 = r11127 - r11130;
        float r11144 = r11142 * r11143;
        float r11145 = r11132 / r11144;
        return r11145;
}

double f_id(double v, double t) {
        double r11146 = 1;
        double r11147 = 5;
        double r11148 = v;
        double r11149 = r11148 * r11148;
        double r11150 = r11147 * r11149;
        double r11151 = r11146 - r11150;
        double r11152 = atan2(1.0, 0.0);
        double r11153 = t;
        double r11154 = r11152 * r11153;
        double r11155 = 2;
        double r11156 = 3;
        double r11157 = r11156 * r11149;
        double r11158 = r11146 - r11157;
        double r11159 = r11155 * r11158;
        double r11160 = sqrt(r11159);
        double r11161 = r11154 * r11160;
        double r11162 = r11146 - r11149;
        double r11163 = r11161 * r11162;
        double r11164 = r11151 / r11163;
        return r11164;
}


double f_of(float v, float t) {
        float r11165 = v;
        float r11166 = r11165 * r11165;
        float r11167 = 5;
        float r11168 = -r11167;
        float r11169 = 1;
        float r11170 = fma(r11166, r11168, r11169);
        float r11171 = t;
        float r11172 = atan2(1.0, 0.0);
        float r11173 = r11171 * r11172;
        float r11174 = r11170 / r11173;
        float r11175 = 2;
        float r11176 = 3;
        float r11177 = -r11176;
        float r11178 = fma(r11166, r11177, r11169);
        float r11179 = r11175 * r11178;
        float r11180 = sqrt(r11179);
        float r11181 = r11174 / r11180;
        float r11182 = -r11165;
        float r11183 = pow(r11165, r11176);
        float r11184 = fma(r11182, r11183, r11169);
        float r11185 = r11181 / r11184;
        float r11186 = r11169 + r11166;
        float r11187 = r11185 * r11186;
        return r11187;
}

double f_od(double v, double t) {
        double r11188 = v;
        double r11189 = r11188 * r11188;
        double r11190 = 5;
        double r11191 = -r11190;
        double r11192 = 1;
        double r11193 = fma(r11189, r11191, r11192);
        double r11194 = t;
        double r11195 = atan2(1.0, 0.0);
        double r11196 = r11194 * r11195;
        double r11197 = r11193 / r11196;
        double r11198 = 2;
        double r11199 = 3;
        double r11200 = -r11199;
        double r11201 = fma(r11189, r11200, r11192);
        double r11202 = r11198 * r11201;
        double r11203 = sqrt(r11202);
        double r11204 = r11197 / r11203;
        double r11205 = -r11188;
        double r11206 = pow(r11188, r11199);
        double r11207 = fma(r11205, r11206, r11192);
        double r11208 = r11204 / r11207;
        double r11209 = r11192 + r11189;
        double r11210 = r11208 * r11209;
        return r11210;
}

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 r11211, r11212, r11213, r11214, r11215, r11216, r11217, r11218, r11219, r11220, r11221, r11222, r11223, r11224, r11225, r11226, r11227, r11228, r11229;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11211, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11212, "5", 10, MPFR_RNDN);
        mpfr_init(r11213);
        mpfr_init(r11214);
        mpfr_init(r11215);
        mpfr_init(r11216);
        mpfr_init(r11217);
        mpfr_init(r11218);
        mpfr_init(r11219);
        mpfr_init_set_str(r11220, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11221, "3", 10, MPFR_RNDN);
        mpfr_init(r11222);
        mpfr_init(r11223);
        mpfr_init(r11224);
        mpfr_init(r11225);
        mpfr_init(r11226);
        mpfr_init(r11227);
        mpfr_init(r11228);
        mpfr_init(r11229);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r11213, v, MPFR_RNDN);
        mpfr_mul(r11214, r11213, r11213, MPFR_RNDN);
        mpfr_mul(r11215, r11212, r11214, MPFR_RNDN);
        mpfr_sub(r11216, r11211, r11215, MPFR_RNDN);
        mpfr_const_pi(r11217, MPFR_RNDN);
        mpfr_set_d(r11218, t, MPFR_RNDN);
        mpfr_mul(r11219, r11217, r11218, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r11222, r11221, r11214, MPFR_RNDN);
        mpfr_sub(r11223, r11211, r11222, MPFR_RNDN);
        mpfr_mul(r11224, r11220, r11223, MPFR_RNDN);
        mpfr_sqrt(r11225, r11224, MPFR_RNDN);
        mpfr_mul(r11226, r11219, r11225, MPFR_RNDN);
        mpfr_sub(r11227, r11211, r11214, MPFR_RNDN);
        mpfr_mul(r11228, r11226, r11227, MPFR_RNDN);
        mpfr_div(r11229, r11216, r11228, MPFR_RNDN);
        return mpfr_get_d(r11229, MPFR_RNDN);
}

static mpfr_t r11230, r11231, r11232, r11233, r11234, r11235, r11236, r11237, r11238, r11239, r11240, r11241, r11242, r11243, r11244, r11245, r11246, r11247, r11248, r11249, r11250, r11251, r11252;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11230);
        mpfr_init(r11231);
        mpfr_init_set_str(r11232, "5", 10, MPFR_RNDN);
        mpfr_init(r11233);
        mpfr_init_set_str(r11234, "1", 10, MPFR_RNDN);
        mpfr_init(r11235);
        mpfr_init(r11236);
        mpfr_init(r11237);
        mpfr_init(r11238);
        mpfr_init(r11239);
        mpfr_init_set_str(r11240, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11241, "3", 10, MPFR_RNDN);
        mpfr_init(r11242);
        mpfr_init(r11243);
        mpfr_init(r11244);
        mpfr_init(r11245);
        mpfr_init(r11246);
        mpfr_init(r11247);
        mpfr_init(r11248);
        mpfr_init(r11249);
        mpfr_init(r11250);
        mpfr_init(r11251);
        mpfr_init(r11252);
}

double f_fm(double v, double t) {
        mpfr_set_d(r11230, v, MPFR_RNDN);
        mpfr_mul(r11231, r11230, r11230, MPFR_RNDN);
        ;
        mpfr_neg(r11233, r11232, MPFR_RNDN);
        ;
        mpfr_fma(r11235, r11231, r11233, r11234, MPFR_RNDN);
        mpfr_set_d(r11236, t, MPFR_RNDN);
        mpfr_const_pi(r11237, MPFR_RNDN);
        mpfr_mul(r11238, r11236, r11237, MPFR_RNDN);
        mpfr_div(r11239, r11235, r11238, MPFR_RNDN);
        ;
        ;
        mpfr_neg(r11242, r11241, MPFR_RNDN);
        mpfr_fma(r11243, r11231, r11242, r11234, MPFR_RNDN);
        mpfr_mul(r11244, r11240, r11243, MPFR_RNDN);
        mpfr_sqrt(r11245, r11244, MPFR_RNDN);
        mpfr_div(r11246, r11239, r11245, MPFR_RNDN);
        mpfr_neg(r11247, r11230, MPFR_RNDN);
        mpfr_pow(r11248, r11230, r11241, MPFR_RNDN);
        mpfr_fma(r11249, r11247, r11248, r11234, MPFR_RNDN);
        mpfr_div(r11250, r11246, r11249, MPFR_RNDN);
        mpfr_add(r11251, r11234, r11231, MPFR_RNDN);
        mpfr_mul(r11252, r11250, r11251, MPFR_RNDN);
        return mpfr_get_d(r11252, MPFR_RNDN);
}

static mpfr_t r11253, r11254, r11255, r11256, r11257, r11258, r11259, r11260, r11261, r11262, r11263, r11264, r11265, r11266, r11267, r11268, r11269, r11270, r11271, r11272, r11273, r11274, r11275;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r11253);
        mpfr_init(r11254);
        mpfr_init_set_str(r11255, "5", 10, MPFR_RNDN);
        mpfr_init(r11256);
        mpfr_init_set_str(r11257, "1", 10, MPFR_RNDN);
        mpfr_init(r11258);
        mpfr_init(r11259);
        mpfr_init(r11260);
        mpfr_init(r11261);
        mpfr_init(r11262);
        mpfr_init_set_str(r11263, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11264, "3", 10, MPFR_RNDN);
        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);
        mpfr_init(r11274);
        mpfr_init(r11275);
}

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

