#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 r27175 = 1;
        float r27176 = 5;
        float r27177 = v;
        float r27178 = r27177 * r27177;
        float r27179 = r27176 * r27178;
        float r27180 = r27175 - r27179;
        float r27181 = atan2(1.0, 0.0);
        float r27182 = t;
        float r27183 = r27181 * r27182;
        float r27184 = 2;
        float r27185 = 3;
        float r27186 = r27185 * r27178;
        float r27187 = r27175 - r27186;
        float r27188 = r27184 * r27187;
        float r27189 = sqrt(r27188);
        float r27190 = r27183 * r27189;
        float r27191 = r27175 - r27178;
        float r27192 = r27190 * r27191;
        float r27193 = r27180 / r27192;
        return r27193;
}

double f_id(double v, double t) {
        double r27194 = 1;
        double r27195 = 5;
        double r27196 = v;
        double r27197 = r27196 * r27196;
        double r27198 = r27195 * r27197;
        double r27199 = r27194 - r27198;
        double r27200 = atan2(1.0, 0.0);
        double r27201 = t;
        double r27202 = r27200 * r27201;
        double r27203 = 2;
        double r27204 = 3;
        double r27205 = r27204 * r27197;
        double r27206 = r27194 - r27205;
        double r27207 = r27203 * r27206;
        double r27208 = sqrt(r27207);
        double r27209 = r27202 * r27208;
        double r27210 = r27194 - r27197;
        double r27211 = r27209 * r27210;
        double r27212 = r27199 / r27211;
        return r27212;
}


double f_of(float v, float t) {
        float r27213 = 1;
        float r27214 = v;
        float r27215 = 5;
        float r27216 = r27214 * r27215;
        float r27217 = r27214 * r27216;
        float r27218 = r27213 - r27217;
        float r27219 = 2;
        float r27220 = 3;
        float r27221 = -r27220;
        float r27222 = r27219 * r27221;
        float r27223 = pow(r27214, r27220);
        float r27224 = r27220 * r27214;
        float r27225 = r27223 * r27224;
        float r27226 = r27222 * r27225;
        float r27227 = r27226 + r27219;
        float r27228 = sqrt(r27227);
        float r27229 = r27218 / r27228;
        float r27230 = t;
        float r27231 = atan2(1.0, 0.0);
        float r27232 = r27230 * r27231;
        float r27233 = r27223 * r27223;
        float r27234 = r27213 - r27233;
        float r27235 = r27232 * r27234;
        float r27236 = r27229 / r27235;
        float r27237 = r27214 * r27214;
        float r27238 = r27220 * r27237;
        float r27239 = r27213 + r27238;
        float r27240 = sqrt(r27239);
        float r27241 = r27213 * r27213;
        float r27242 = r27237 * r27237;
        float r27243 = r27213 * r27237;
        float r27244 = r27242 + r27243;
        float r27245 = r27241 + r27244;
        float r27246 = r27240 * r27245;
        float r27247 = r27236 * r27246;
        return r27247;
}

double f_od(double v, double t) {
        double r27248 = 1;
        double r27249 = v;
        double r27250 = 5;
        double r27251 = r27249 * r27250;
        double r27252 = r27249 * r27251;
        double r27253 = r27248 - r27252;
        double r27254 = 2;
        double r27255 = 3;
        double r27256 = -r27255;
        double r27257 = r27254 * r27256;
        double r27258 = pow(r27249, r27255);
        double r27259 = r27255 * r27249;
        double r27260 = r27258 * r27259;
        double r27261 = r27257 * r27260;
        double r27262 = r27261 + r27254;
        double r27263 = sqrt(r27262);
        double r27264 = r27253 / r27263;
        double r27265 = t;
        double r27266 = atan2(1.0, 0.0);
        double r27267 = r27265 * r27266;
        double r27268 = r27258 * r27258;
        double r27269 = r27248 - r27268;
        double r27270 = r27267 * r27269;
        double r27271 = r27264 / r27270;
        double r27272 = r27249 * r27249;
        double r27273 = r27255 * r27272;
        double r27274 = r27248 + r27273;
        double r27275 = sqrt(r27274);
        double r27276 = r27248 * r27248;
        double r27277 = r27272 * r27272;
        double r27278 = r27248 * r27272;
        double r27279 = r27277 + r27278;
        double r27280 = r27276 + r27279;
        double r27281 = r27275 * r27280;
        double r27282 = r27271 * r27281;
        return r27282;
}

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 r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27283, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27284, "5", 10, MPFR_RNDN);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init_set_str(r27292, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27293, "3", 10, MPFR_RNDN);
        mpfr_init(r27294);
        mpfr_init(r27295);
        mpfr_init(r27296);
        mpfr_init(r27297);
        mpfr_init(r27298);
        mpfr_init(r27299);
        mpfr_init(r27300);
        mpfr_init(r27301);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r27285, v, MPFR_RNDN);
        mpfr_mul(r27286, r27285, r27285, MPFR_RNDN);
        mpfr_mul(r27287, r27284, r27286, MPFR_RNDN);
        mpfr_sub(r27288, r27283, r27287, MPFR_RNDN);
        mpfr_const_pi(r27289, MPFR_RNDN);
        mpfr_set_d(r27290, t, MPFR_RNDN);
        mpfr_mul(r27291, r27289, r27290, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r27294, r27293, r27286, MPFR_RNDN);
        mpfr_sub(r27295, r27283, r27294, MPFR_RNDN);
        mpfr_mul(r27296, r27292, r27295, MPFR_RNDN);
        mpfr_sqrt(r27297, r27296, MPFR_RNDN);
        mpfr_mul(r27298, r27291, r27297, MPFR_RNDN);
        mpfr_sub(r27299, r27283, r27286, MPFR_RNDN);
        mpfr_mul(r27300, r27298, r27299, MPFR_RNDN);
        mpfr_div(r27301, r27288, r27300, MPFR_RNDN);
        return mpfr_get_d(r27301, MPFR_RNDN);
}

static mpfr_t r27302, r27303, r27304, r27305, r27306, r27307, r27308, r27309, r27310, r27311, r27312, r27313, r27314, r27315, r27316, r27317, r27318, r27319, r27320, r27321, r27322, r27323, r27324, r27325, r27326, r27327, r27328, r27329, r27330, r27331, r27332, r27333, r27334, r27335, r27336;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27302, "1", 10, MPFR_RNDN);
        mpfr_init(r27303);
        mpfr_init_set_str(r27304, "5", 10, MPFR_RNDN);
        mpfr_init(r27305);
        mpfr_init(r27306);
        mpfr_init(r27307);
        mpfr_init_set_str(r27308, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27309, "3", 10, MPFR_RNDN);
        mpfr_init(r27310);
        mpfr_init(r27311);
        mpfr_init(r27312);
        mpfr_init(r27313);
        mpfr_init(r27314);
        mpfr_init(r27315);
        mpfr_init(r27316);
        mpfr_init(r27317);
        mpfr_init(r27318);
        mpfr_init(r27319);
        mpfr_init(r27320);
        mpfr_init(r27321);
        mpfr_init(r27322);
        mpfr_init(r27323);
        mpfr_init(r27324);
        mpfr_init(r27325);
        mpfr_init(r27326);
        mpfr_init(r27327);
        mpfr_init(r27328);
        mpfr_init(r27329);
        mpfr_init(r27330);
        mpfr_init(r27331);
        mpfr_init(r27332);
        mpfr_init(r27333);
        mpfr_init(r27334);
        mpfr_init(r27335);
        mpfr_init(r27336);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r27303, v, MPFR_RNDN);
        ;
        mpfr_mul(r27305, r27303, r27304, MPFR_RNDN);
        mpfr_mul(r27306, r27303, r27305, MPFR_RNDN);
        mpfr_sub(r27307, r27302, r27306, MPFR_RNDN);
        ;
        ;
        mpfr_neg(r27310, r27309, MPFR_RNDN);
        mpfr_mul(r27311, r27308, r27310, MPFR_RNDN);
        mpfr_pow(r27312, r27303, r27309, MPFR_RNDN);
        mpfr_mul(r27313, r27309, r27303, MPFR_RNDN);
        mpfr_mul(r27314, r27312, r27313, MPFR_RNDN);
        mpfr_mul(r27315, r27311, r27314, MPFR_RNDN);
        mpfr_add(r27316, r27315, r27308, MPFR_RNDN);
        mpfr_sqrt(r27317, r27316, MPFR_RNDN);
        mpfr_div(r27318, r27307, r27317, MPFR_RNDN);
        mpfr_set_d(r27319, t, MPFR_RNDN);
        mpfr_const_pi(r27320, MPFR_RNDN);
        mpfr_mul(r27321, r27319, r27320, MPFR_RNDN);
        mpfr_mul(r27322, r27312, r27312, MPFR_RNDN);
        mpfr_sub(r27323, r27302, r27322, MPFR_RNDN);
        mpfr_mul(r27324, r27321, r27323, MPFR_RNDN);
        mpfr_div(r27325, r27318, r27324, MPFR_RNDN);
        mpfr_mul(r27326, r27303, r27303, MPFR_RNDN);
        mpfr_mul(r27327, r27309, r27326, MPFR_RNDN);
        mpfr_add(r27328, r27302, r27327, MPFR_RNDN);
        mpfr_sqrt(r27329, r27328, MPFR_RNDN);
        mpfr_mul(r27330, r27302, r27302, MPFR_RNDN);
        mpfr_mul(r27331, r27326, r27326, MPFR_RNDN);
        mpfr_mul(r27332, r27302, r27326, MPFR_RNDN);
        mpfr_add(r27333, r27331, r27332, MPFR_RNDN);
        mpfr_add(r27334, r27330, r27333, MPFR_RNDN);
        mpfr_mul(r27335, r27329, r27334, MPFR_RNDN);
        mpfr_mul(r27336, r27325, r27335, MPFR_RNDN);
        return mpfr_get_d(r27336, MPFR_RNDN);
}

static mpfr_t r27337, r27338, r27339, r27340, r27341, r27342, r27343, r27344, r27345, r27346, r27347, r27348, r27349, r27350, r27351, r27352, r27353, r27354, r27355, r27356, r27357, r27358, r27359, r27360, r27361, r27362, r27363, r27364, r27365, r27366, r27367, r27368, r27369, r27370, r27371;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27337, "1", 10, MPFR_RNDN);
        mpfr_init(r27338);
        mpfr_init_set_str(r27339, "5", 10, MPFR_RNDN);
        mpfr_init(r27340);
        mpfr_init(r27341);
        mpfr_init(r27342);
        mpfr_init_set_str(r27343, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27344, "3", 10, MPFR_RNDN);
        mpfr_init(r27345);
        mpfr_init(r27346);
        mpfr_init(r27347);
        mpfr_init(r27348);
        mpfr_init(r27349);
        mpfr_init(r27350);
        mpfr_init(r27351);
        mpfr_init(r27352);
        mpfr_init(r27353);
        mpfr_init(r27354);
        mpfr_init(r27355);
        mpfr_init(r27356);
        mpfr_init(r27357);
        mpfr_init(r27358);
        mpfr_init(r27359);
        mpfr_init(r27360);
        mpfr_init(r27361);
        mpfr_init(r27362);
        mpfr_init(r27363);
        mpfr_init(r27364);
        mpfr_init(r27365);
        mpfr_init(r27366);
        mpfr_init(r27367);
        mpfr_init(r27368);
        mpfr_init(r27369);
        mpfr_init(r27370);
        mpfr_init(r27371);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r27338, v, MPFR_RNDN);
        ;
        mpfr_mul(r27340, r27338, r27339, MPFR_RNDN);
        mpfr_mul(r27341, r27338, r27340, MPFR_RNDN);
        mpfr_sub(r27342, r27337, r27341, MPFR_RNDN);
        ;
        ;
        mpfr_neg(r27345, r27344, MPFR_RNDN);
        mpfr_mul(r27346, r27343, r27345, MPFR_RNDN);
        mpfr_pow(r27347, r27338, r27344, MPFR_RNDN);
        mpfr_mul(r27348, r27344, r27338, MPFR_RNDN);
        mpfr_mul(r27349, r27347, r27348, MPFR_RNDN);
        mpfr_mul(r27350, r27346, r27349, MPFR_RNDN);
        mpfr_add(r27351, r27350, r27343, MPFR_RNDN);
        mpfr_sqrt(r27352, r27351, MPFR_RNDN);
        mpfr_div(r27353, r27342, r27352, MPFR_RNDN);
        mpfr_set_d(r27354, t, MPFR_RNDN);
        mpfr_const_pi(r27355, MPFR_RNDN);
        mpfr_mul(r27356, r27354, r27355, MPFR_RNDN);
        mpfr_mul(r27357, r27347, r27347, MPFR_RNDN);
        mpfr_sub(r27358, r27337, r27357, MPFR_RNDN);
        mpfr_mul(r27359, r27356, r27358, MPFR_RNDN);
        mpfr_div(r27360, r27353, r27359, MPFR_RNDN);
        mpfr_mul(r27361, r27338, r27338, MPFR_RNDN);
        mpfr_mul(r27362, r27344, r27361, MPFR_RNDN);
        mpfr_add(r27363, r27337, r27362, MPFR_RNDN);
        mpfr_sqrt(r27364, r27363, MPFR_RNDN);
        mpfr_mul(r27365, r27337, r27337, MPFR_RNDN);
        mpfr_mul(r27366, r27361, r27361, MPFR_RNDN);
        mpfr_mul(r27367, r27337, r27361, MPFR_RNDN);
        mpfr_add(r27368, r27366, r27367, MPFR_RNDN);
        mpfr_add(r27369, r27365, r27368, MPFR_RNDN);
        mpfr_mul(r27370, r27364, r27369, MPFR_RNDN);
        mpfr_mul(r27371, r27360, r27370, MPFR_RNDN);
        return mpfr_get_d(r27371, MPFR_RNDN);
}

