#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 r27105 = 1;
        float r27106 = 5;
        float r27107 = v;
        float r27108 = r27107 * r27107;
        float r27109 = r27106 * r27108;
        float r27110 = r27105 - r27109;
        float r27111 = atan2(1.0, 0.0);
        float r27112 = t;
        float r27113 = r27111 * r27112;
        float r27114 = 2;
        float r27115 = 3;
        float r27116 = r27115 * r27108;
        float r27117 = r27105 - r27116;
        float r27118 = r27114 * r27117;
        float r27119 = sqrt(r27118);
        float r27120 = r27113 * r27119;
        float r27121 = r27105 - r27108;
        float r27122 = r27120 * r27121;
        float r27123 = r27110 / r27122;
        return r27123;
}

double f_id(double v, double t) {
        double r27124 = 1;
        double r27125 = 5;
        double r27126 = v;
        double r27127 = r27126 * r27126;
        double r27128 = r27125 * r27127;
        double r27129 = r27124 - r27128;
        double r27130 = atan2(1.0, 0.0);
        double r27131 = t;
        double r27132 = r27130 * r27131;
        double r27133 = 2;
        double r27134 = 3;
        double r27135 = r27134 * r27127;
        double r27136 = r27124 - r27135;
        double r27137 = r27133 * r27136;
        double r27138 = sqrt(r27137);
        double r27139 = r27132 * r27138;
        double r27140 = r27124 - r27127;
        double r27141 = r27139 * r27140;
        double r27142 = r27129 / r27141;
        return r27142;
}


double f_of(float v, float t) {
        float r27143 = 1;
        float r27144 = v;
        float r27145 = 5;
        float r27146 = r27144 * r27145;
        float r27147 = r27144 * r27146;
        float r27148 = r27143 - r27147;
        float r27149 = 2;
        float r27150 = 3;
        float r27151 = -r27150;
        float r27152 = r27149 * r27151;
        float r27153 = pow(r27144, r27150);
        float r27154 = r27150 * r27144;
        float r27155 = r27153 * r27154;
        float r27156 = r27152 * r27155;
        float r27157 = r27156 + r27149;
        float r27158 = sqrt(r27157);
        float r27159 = r27148 / r27158;
        float r27160 = t;
        float r27161 = atan2(1.0, 0.0);
        float r27162 = r27160 * r27161;
        float r27163 = r27153 * r27153;
        float r27164 = r27143 - r27163;
        float r27165 = r27162 * r27164;
        float r27166 = r27159 / r27165;
        float r27167 = r27144 * r27144;
        float r27168 = r27150 * r27167;
        float r27169 = r27143 + r27168;
        float r27170 = sqrt(r27169);
        float r27171 = r27143 * r27143;
        float r27172 = r27167 * r27167;
        float r27173 = r27143 * r27167;
        float r27174 = r27172 + r27173;
        float r27175 = r27171 + r27174;
        float r27176 = r27170 * r27175;
        float r27177 = r27166 * r27176;
        return r27177;
}

double f_od(double v, double t) {
        double r27178 = 1;
        double r27179 = v;
        double r27180 = 5;
        double r27181 = r27179 * r27180;
        double r27182 = r27179 * r27181;
        double r27183 = r27178 - r27182;
        double r27184 = 2;
        double r27185 = 3;
        double r27186 = -r27185;
        double r27187 = r27184 * r27186;
        double r27188 = pow(r27179, r27185);
        double r27189 = r27185 * r27179;
        double r27190 = r27188 * r27189;
        double r27191 = r27187 * r27190;
        double r27192 = r27191 + r27184;
        double r27193 = sqrt(r27192);
        double r27194 = r27183 / r27193;
        double r27195 = t;
        double r27196 = atan2(1.0, 0.0);
        double r27197 = r27195 * r27196;
        double r27198 = r27188 * r27188;
        double r27199 = r27178 - r27198;
        double r27200 = r27197 * r27199;
        double r27201 = r27194 / r27200;
        double r27202 = r27179 * r27179;
        double r27203 = r27185 * r27202;
        double r27204 = r27178 + r27203;
        double r27205 = sqrt(r27204);
        double r27206 = r27178 * r27178;
        double r27207 = r27202 * r27202;
        double r27208 = r27178 * r27202;
        double r27209 = r27207 + r27208;
        double r27210 = r27206 + r27209;
        double r27211 = r27205 * r27210;
        double r27212 = r27201 * r27211;
        return r27212;
}

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 r27213, r27214, r27215, r27216, r27217, r27218, r27219, r27220, r27221, r27222, r27223, r27224, r27225, r27226, r27227, r27228, r27229, r27230, r27231;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27213, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r27214, "5", 10, MPFR_RNDN);
        mpfr_init(r27215);
        mpfr_init(r27216);
        mpfr_init(r27217);
        mpfr_init(r27218);
        mpfr_init(r27219);
        mpfr_init(r27220);
        mpfr_init(r27221);
        mpfr_init_set_str(r27222, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27223, "3", 10, MPFR_RNDN);
        mpfr_init(r27224);
        mpfr_init(r27225);
        mpfr_init(r27226);
        mpfr_init(r27227);
        mpfr_init(r27228);
        mpfr_init(r27229);
        mpfr_init(r27230);
        mpfr_init(r27231);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r27215, v, MPFR_RNDN);
        mpfr_mul(r27216, r27215, r27215, MPFR_RNDN);
        mpfr_mul(r27217, r27214, r27216, MPFR_RNDN);
        mpfr_sub(r27218, r27213, r27217, MPFR_RNDN);
        mpfr_const_pi(r27219, MPFR_RNDN);
        mpfr_set_d(r27220, t, MPFR_RNDN);
        mpfr_mul(r27221, r27219, r27220, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r27224, r27223, r27216, MPFR_RNDN);
        mpfr_sub(r27225, r27213, r27224, MPFR_RNDN);
        mpfr_mul(r27226, r27222, r27225, MPFR_RNDN);
        mpfr_sqrt(r27227, r27226, MPFR_RNDN);
        mpfr_mul(r27228, r27221, r27227, MPFR_RNDN);
        mpfr_sub(r27229, r27213, r27216, MPFR_RNDN);
        mpfr_mul(r27230, r27228, r27229, MPFR_RNDN);
        mpfr_div(r27231, r27218, r27230, MPFR_RNDN);
        return mpfr_get_d(r27231, MPFR_RNDN);
}

static mpfr_t r27232, r27233, r27234, r27235, r27236, r27237, r27238, r27239, r27240, r27241, r27242, r27243, r27244, r27245, r27246, r27247, r27248, r27249, r27250, r27251, r27252, r27253, r27254, r27255, r27256, r27257, r27258, r27259, r27260, r27261, r27262, r27263, r27264, r27265, r27266;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27232, "1", 10, MPFR_RNDN);
        mpfr_init(r27233);
        mpfr_init_set_str(r27234, "5", 10, MPFR_RNDN);
        mpfr_init(r27235);
        mpfr_init(r27236);
        mpfr_init(r27237);
        mpfr_init_set_str(r27238, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27239, "3", 10, MPFR_RNDN);
        mpfr_init(r27240);
        mpfr_init(r27241);
        mpfr_init(r27242);
        mpfr_init(r27243);
        mpfr_init(r27244);
        mpfr_init(r27245);
        mpfr_init(r27246);
        mpfr_init(r27247);
        mpfr_init(r27248);
        mpfr_init(r27249);
        mpfr_init(r27250);
        mpfr_init(r27251);
        mpfr_init(r27252);
        mpfr_init(r27253);
        mpfr_init(r27254);
        mpfr_init(r27255);
        mpfr_init(r27256);
        mpfr_init(r27257);
        mpfr_init(r27258);
        mpfr_init(r27259);
        mpfr_init(r27260);
        mpfr_init(r27261);
        mpfr_init(r27262);
        mpfr_init(r27263);
        mpfr_init(r27264);
        mpfr_init(r27265);
        mpfr_init(r27266);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r27233, v, MPFR_RNDN);
        ;
        mpfr_mul(r27235, r27233, r27234, MPFR_RNDN);
        mpfr_mul(r27236, r27233, r27235, MPFR_RNDN);
        mpfr_sub(r27237, r27232, r27236, MPFR_RNDN);
        ;
        ;
        mpfr_neg(r27240, r27239, MPFR_RNDN);
        mpfr_mul(r27241, r27238, r27240, MPFR_RNDN);
        mpfr_pow(r27242, r27233, r27239, MPFR_RNDN);
        mpfr_mul(r27243, r27239, r27233, MPFR_RNDN);
        mpfr_mul(r27244, r27242, r27243, MPFR_RNDN);
        mpfr_mul(r27245, r27241, r27244, MPFR_RNDN);
        mpfr_add(r27246, r27245, r27238, MPFR_RNDN);
        mpfr_sqrt(r27247, r27246, MPFR_RNDN);
        mpfr_div(r27248, r27237, r27247, MPFR_RNDN);
        mpfr_set_d(r27249, t, MPFR_RNDN);
        mpfr_const_pi(r27250, MPFR_RNDN);
        mpfr_mul(r27251, r27249, r27250, MPFR_RNDN);
        mpfr_mul(r27252, r27242, r27242, MPFR_RNDN);
        mpfr_sub(r27253, r27232, r27252, MPFR_RNDN);
        mpfr_mul(r27254, r27251, r27253, MPFR_RNDN);
        mpfr_div(r27255, r27248, r27254, MPFR_RNDN);
        mpfr_mul(r27256, r27233, r27233, MPFR_RNDN);
        mpfr_mul(r27257, r27239, r27256, MPFR_RNDN);
        mpfr_add(r27258, r27232, r27257, MPFR_RNDN);
        mpfr_sqrt(r27259, r27258, MPFR_RNDN);
        mpfr_mul(r27260, r27232, r27232, MPFR_RNDN);
        mpfr_mul(r27261, r27256, r27256, MPFR_RNDN);
        mpfr_mul(r27262, r27232, r27256, MPFR_RNDN);
        mpfr_add(r27263, r27261, r27262, MPFR_RNDN);
        mpfr_add(r27264, r27260, r27263, MPFR_RNDN);
        mpfr_mul(r27265, r27259, r27264, MPFR_RNDN);
        mpfr_mul(r27266, r27255, r27265, MPFR_RNDN);
        return mpfr_get_d(r27266, MPFR_RNDN);
}

static mpfr_t r27267, r27268, r27269, r27270, r27271, r27272, r27273, r27274, r27275, r27276, r27277, r27278, r27279, r27280, r27281, r27282, r27283, r27284, r27285, r27286, r27287, r27288, r27289, r27290, r27291, r27292, r27293, r27294, r27295, r27296, r27297, r27298, r27299, r27300, r27301;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r27267, "1", 10, MPFR_RNDN);
        mpfr_init(r27268);
        mpfr_init_set_str(r27269, "5", 10, MPFR_RNDN);
        mpfr_init(r27270);
        mpfr_init(r27271);
        mpfr_init(r27272);
        mpfr_init_set_str(r27273, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r27274, "3", 10, MPFR_RNDN);
        mpfr_init(r27275);
        mpfr_init(r27276);
        mpfr_init(r27277);
        mpfr_init(r27278);
        mpfr_init(r27279);
        mpfr_init(r27280);
        mpfr_init(r27281);
        mpfr_init(r27282);
        mpfr_init(r27283);
        mpfr_init(r27284);
        mpfr_init(r27285);
        mpfr_init(r27286);
        mpfr_init(r27287);
        mpfr_init(r27288);
        mpfr_init(r27289);
        mpfr_init(r27290);
        mpfr_init(r27291);
        mpfr_init(r27292);
        mpfr_init(r27293);
        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_dm(double v, double t) {
        ;
        mpfr_set_d(r27268, v, MPFR_RNDN);
        ;
        mpfr_mul(r27270, r27268, r27269, MPFR_RNDN);
        mpfr_mul(r27271, r27268, r27270, MPFR_RNDN);
        mpfr_sub(r27272, r27267, r27271, MPFR_RNDN);
        ;
        ;
        mpfr_neg(r27275, r27274, MPFR_RNDN);
        mpfr_mul(r27276, r27273, r27275, MPFR_RNDN);
        mpfr_pow(r27277, r27268, r27274, MPFR_RNDN);
        mpfr_mul(r27278, r27274, r27268, MPFR_RNDN);
        mpfr_mul(r27279, r27277, r27278, MPFR_RNDN);
        mpfr_mul(r27280, r27276, r27279, MPFR_RNDN);
        mpfr_add(r27281, r27280, r27273, MPFR_RNDN);
        mpfr_sqrt(r27282, r27281, MPFR_RNDN);
        mpfr_div(r27283, r27272, r27282, MPFR_RNDN);
        mpfr_set_d(r27284, t, MPFR_RNDN);
        mpfr_const_pi(r27285, MPFR_RNDN);
        mpfr_mul(r27286, r27284, r27285, MPFR_RNDN);
        mpfr_mul(r27287, r27277, r27277, MPFR_RNDN);
        mpfr_sub(r27288, r27267, r27287, MPFR_RNDN);
        mpfr_mul(r27289, r27286, r27288, MPFR_RNDN);
        mpfr_div(r27290, r27283, r27289, MPFR_RNDN);
        mpfr_mul(r27291, r27268, r27268, MPFR_RNDN);
        mpfr_mul(r27292, r27274, r27291, MPFR_RNDN);
        mpfr_add(r27293, r27267, r27292, MPFR_RNDN);
        mpfr_sqrt(r27294, r27293, MPFR_RNDN);
        mpfr_mul(r27295, r27267, r27267, MPFR_RNDN);
        mpfr_mul(r27296, r27291, r27291, MPFR_RNDN);
        mpfr_mul(r27297, r27267, r27291, MPFR_RNDN);
        mpfr_add(r27298, r27296, r27297, MPFR_RNDN);
        mpfr_add(r27299, r27295, r27298, MPFR_RNDN);
        mpfr_mul(r27300, r27294, r27299, MPFR_RNDN);
        mpfr_mul(r27301, r27290, r27300, MPFR_RNDN);
        return mpfr_get_d(r27301, MPFR_RNDN);
}

