#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Toniolo and Linder, Equation (7)";

double f_if(float x, float l, float t) {
        float r8126 = 2;
        float r8127 = sqrt(r8126);
        float r8128 = t;
        float r8129 = r8127 * r8128;
        float r8130 = x;
        float r8131 = 1;
        float r8132 = r8130 + r8131;
        float r8133 = r8130 - r8131;
        float r8134 = r8132 / r8133;
        float r8135 = l;
        float r8136 = r8135 * r8135;
        float r8137 = r8128 * r8128;
        float r8138 = r8126 * r8137;
        float r8139 = r8136 + r8138;
        float r8140 = r8134 * r8139;
        float r8141 = r8140 - r8136;
        float r8142 = sqrt(r8141);
        float r8143 = r8129 / r8142;
        return r8143;
}

double f_id(double x, double l, double t) {
        double r8144 = 2;
        double r8145 = sqrt(r8144);
        double r8146 = t;
        double r8147 = r8145 * r8146;
        double r8148 = x;
        double r8149 = 1;
        double r8150 = r8148 + r8149;
        double r8151 = r8148 - r8149;
        double r8152 = r8150 / r8151;
        double r8153 = l;
        double r8154 = r8153 * r8153;
        double r8155 = r8146 * r8146;
        double r8156 = r8144 * r8155;
        double r8157 = r8154 + r8156;
        double r8158 = r8152 * r8157;
        double r8159 = r8158 - r8154;
        double r8160 = sqrt(r8159);
        double r8161 = r8147 / r8160;
        return r8161;
}


double f_of(float x, float l, float t) {
        float r8162 = t;
        float r8163 = -5.943549137346985e+85;
        bool r8164 = r8162 <= r8163;
        float r8165 = 2;
        float r8166 = sqrt(r8165);
        float r8167 = r8162 * r8166;
        float r8168 = x;
        float r8169 = r8165 / r8168;
        float r8170 = r8169 / r8168;
        float r8171 = r8162 / r8165;
        float r8172 = r8171 / r8166;
        float r8173 = r8162 / r8166;
        float r8174 = r8172 - r8173;
        float r8175 = -r8162;
        float r8176 = r8175 / r8166;
        float r8177 = r8166 * r8175;
        float r8178 = fma(r8169, r8176, r8177);
        float r8179 = fma(r8170, r8174, r8178);
        float r8180 = r8167 / r8179;
        float r8181 = 6.994201171459714e+55;
        bool r8182 = r8162 <= r8181;
        float r8183 = l;
        float r8184 = r8183 / r8168;
        float r8185 = r8162 * r8162;
        float r8186 = fma(r8184, r8183, r8185);
        float r8187 = 4;
        float r8188 = r8187 * r8162;
        float r8189 = r8162 / r8168;
        float r8190 = r8188 * r8189;
        float r8191 = fma(r8165, r8186, r8190);
        float r8192 = sqrt(r8191);
        float r8193 = r8167 / r8192;
        float r8194 = r8169 / r8166;
        float r8195 = r8194 + r8166;
        float r8196 = r8162 * r8195;
        float r8197 = r8168 * r8168;
        float r8198 = r8173 / r8197;
        float r8199 = 1;
        float r8200 = r8199 - r8165;
        float r8201 = r8198 * r8200;
        float r8202 = r8196 - r8201;
        float r8203 = r8167 / r8202;
        float r8204 = r8182 ? r8193 : r8203;
        float r8205 = r8164 ? r8180 : r8204;
        return r8205;
}

double f_od(double x, double l, double t) {
        double r8206 = t;
        double r8207 = -5.943549137346985e+85;
        bool r8208 = r8206 <= r8207;
        double r8209 = 2;
        double r8210 = sqrt(r8209);
        double r8211 = r8206 * r8210;
        double r8212 = x;
        double r8213 = r8209 / r8212;
        double r8214 = r8213 / r8212;
        double r8215 = r8206 / r8209;
        double r8216 = r8215 / r8210;
        double r8217 = r8206 / r8210;
        double r8218 = r8216 - r8217;
        double r8219 = -r8206;
        double r8220 = r8219 / r8210;
        double r8221 = r8210 * r8219;
        double r8222 = fma(r8213, r8220, r8221);
        double r8223 = fma(r8214, r8218, r8222);
        double r8224 = r8211 / r8223;
        double r8225 = 6.994201171459714e+55;
        bool r8226 = r8206 <= r8225;
        double r8227 = l;
        double r8228 = r8227 / r8212;
        double r8229 = r8206 * r8206;
        double r8230 = fma(r8228, r8227, r8229);
        double r8231 = 4;
        double r8232 = r8231 * r8206;
        double r8233 = r8206 / r8212;
        double r8234 = r8232 * r8233;
        double r8235 = fma(r8209, r8230, r8234);
        double r8236 = sqrt(r8235);
        double r8237 = r8211 / r8236;
        double r8238 = r8213 / r8210;
        double r8239 = r8238 + r8210;
        double r8240 = r8206 * r8239;
        double r8241 = r8212 * r8212;
        double r8242 = r8217 / r8241;
        double r8243 = 1;
        double r8244 = r8243 - r8209;
        double r8245 = r8242 * r8244;
        double r8246 = r8240 - r8245;
        double r8247 = r8211 / r8246;
        double r8248 = r8226 ? r8237 : r8247;
        double r8249 = r8208 ? r8224 : r8248;
        return r8249;
}

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 r8250, r8251, r8252, r8253, r8254, r8255, r8256, r8257, r8258, r8259, r8260, r8261, r8262, r8263, r8264, r8265, r8266, r8267;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8250, "2", 10, MPFR_RNDN);
        mpfr_init(r8251);
        mpfr_init(r8252);
        mpfr_init(r8253);
        mpfr_init(r8254);
        mpfr_init_set_str(r8255, "1", 10, MPFR_RNDN);
        mpfr_init(r8256);
        mpfr_init(r8257);
        mpfr_init(r8258);
        mpfr_init(r8259);
        mpfr_init(r8260);
        mpfr_init(r8261);
        mpfr_init(r8262);
        mpfr_init(r8263);
        mpfr_init(r8264);
        mpfr_init(r8265);
        mpfr_init(r8266);
        mpfr_init(r8267);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r8251, r8250, MPFR_RNDN);
        mpfr_set_d(r8252, t, MPFR_RNDN);
        mpfr_mul(r8253, r8251, r8252, MPFR_RNDN);
        mpfr_set_d(r8254, x, MPFR_RNDN);
        ;
        mpfr_add(r8256, r8254, r8255, MPFR_RNDN);
        mpfr_sub(r8257, r8254, r8255, MPFR_RNDN);
        mpfr_div(r8258, r8256, r8257, MPFR_RNDN);
        mpfr_set_d(r8259, l, MPFR_RNDN);
        mpfr_mul(r8260, r8259, r8259, MPFR_RNDN);
        mpfr_mul(r8261, r8252, r8252, MPFR_RNDN);
        mpfr_mul(r8262, r8250, r8261, MPFR_RNDN);
        mpfr_add(r8263, r8260, r8262, MPFR_RNDN);
        mpfr_mul(r8264, r8258, r8263, MPFR_RNDN);
        mpfr_sub(r8265, r8264, r8260, MPFR_RNDN);
        mpfr_sqrt(r8266, r8265, MPFR_RNDN);
        mpfr_div(r8267, r8253, r8266, MPFR_RNDN);
        return mpfr_get_d(r8267, MPFR_RNDN);
}

static mpfr_t r8268, r8269, r8270, r8271, r8272, r8273, r8274, r8275, r8276, r8277, r8278, r8279, r8280, r8281, r8282, r8283, r8284, r8285, r8286, r8287, r8288, r8289, r8290, r8291, r8292, r8293, r8294, r8295, r8296, r8297, r8298, r8299, r8300, r8301, r8302, r8303, r8304, r8305, r8306, r8307, r8308, r8309, r8310, r8311;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8268);
        mpfr_init_set_str(r8269, "-5.943549137346985e+85", 10, MPFR_RNDN);
        mpfr_init(r8270);
        mpfr_init_set_str(r8271, "2", 10, MPFR_RNDN);
        mpfr_init(r8272);
        mpfr_init(r8273);
        mpfr_init(r8274);
        mpfr_init(r8275);
        mpfr_init(r8276);
        mpfr_init(r8277);
        mpfr_init(r8278);
        mpfr_init(r8279);
        mpfr_init(r8280);
        mpfr_init(r8281);
        mpfr_init(r8282);
        mpfr_init(r8283);
        mpfr_init(r8284);
        mpfr_init(r8285);
        mpfr_init(r8286);
        mpfr_init_set_str(r8287, "6.994201171459714e+55", 10, MPFR_RNDN);
        mpfr_init(r8288);
        mpfr_init(r8289);
        mpfr_init(r8290);
        mpfr_init(r8291);
        mpfr_init(r8292);
        mpfr_init_set_str(r8293, "4", 10, MPFR_RNDN);
        mpfr_init(r8294);
        mpfr_init(r8295);
        mpfr_init(r8296);
        mpfr_init(r8297);
        mpfr_init(r8298);
        mpfr_init(r8299);
        mpfr_init(r8300);
        mpfr_init(r8301);
        mpfr_init(r8302);
        mpfr_init(r8303);
        mpfr_init(r8304);
        mpfr_init_set_str(r8305, "1", 10, MPFR_RNDN);
        mpfr_init(r8306);
        mpfr_init(r8307);
        mpfr_init(r8308);
        mpfr_init(r8309);
        mpfr_init(r8310);
        mpfr_init(r8311);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r8268, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8270, mpfr_cmp(r8268, r8269) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8272, r8271, MPFR_RNDN);
        mpfr_mul(r8273, r8268, r8272, MPFR_RNDN);
        mpfr_set_d(r8274, x, MPFR_RNDN);
        mpfr_div(r8275, r8271, r8274, MPFR_RNDN);
        mpfr_div(r8276, r8275, r8274, MPFR_RNDN);
        mpfr_div(r8277, r8268, r8271, MPFR_RNDN);
        mpfr_div(r8278, r8277, r8272, MPFR_RNDN);
        mpfr_div(r8279, r8268, r8272, MPFR_RNDN);
        mpfr_sub(r8280, r8278, r8279, MPFR_RNDN);
        mpfr_neg(r8281, r8268, MPFR_RNDN);
        mpfr_div(r8282, r8281, r8272, MPFR_RNDN);
        mpfr_mul(r8283, r8272, r8281, MPFR_RNDN);
        mpfr_fma(r8284, r8275, r8282, r8283, MPFR_RNDN);
        mpfr_fma(r8285, r8276, r8280, r8284, MPFR_RNDN);
        mpfr_div(r8286, r8273, r8285, MPFR_RNDN);
        ;
        mpfr_set_si(r8288, mpfr_cmp(r8268, r8287) <= 0, MPFR_RNDN);
        mpfr_set_d(r8289, l, MPFR_RNDN);
        mpfr_div(r8290, r8289, r8274, MPFR_RNDN);
        mpfr_mul(r8291, r8268, r8268, MPFR_RNDN);
        mpfr_fma(r8292, r8290, r8289, r8291, MPFR_RNDN);
        ;
        mpfr_mul(r8294, r8293, r8268, MPFR_RNDN);
        mpfr_div(r8295, r8268, r8274, MPFR_RNDN);
        mpfr_mul(r8296, r8294, r8295, MPFR_RNDN);
        mpfr_fma(r8297, r8271, r8292, r8296, MPFR_RNDN);
        mpfr_sqrt(r8298, r8297, MPFR_RNDN);
        mpfr_div(r8299, r8273, r8298, MPFR_RNDN);
        mpfr_div(r8300, r8275, r8272, MPFR_RNDN);
        mpfr_add(r8301, r8300, r8272, MPFR_RNDN);
        mpfr_mul(r8302, r8268, r8301, MPFR_RNDN);
        mpfr_mul(r8303, r8274, r8274, MPFR_RNDN);
        mpfr_div(r8304, r8279, r8303, MPFR_RNDN);
        ;
        mpfr_sub(r8306, r8305, r8271, MPFR_RNDN);
        mpfr_mul(r8307, r8304, r8306, MPFR_RNDN);
        mpfr_sub(r8308, r8302, r8307, MPFR_RNDN);
        mpfr_div(r8309, r8273, r8308, MPFR_RNDN);
        if (mpfr_get_si(r8288, MPFR_RNDN)) { mpfr_set(r8310, r8299, MPFR_RNDN); } else { mpfr_set(r8310, r8309, MPFR_RNDN); };
        if (mpfr_get_si(r8270, MPFR_RNDN)) { mpfr_set(r8311, r8286, MPFR_RNDN); } else { mpfr_set(r8311, r8310, MPFR_RNDN); };
        return mpfr_get_d(r8311, MPFR_RNDN);
}

static mpfr_t r8312, r8313, r8314, r8315, r8316, r8317, r8318, r8319, r8320, r8321, r8322, r8323, r8324, r8325, r8326, r8327, r8328, r8329, r8330, r8331, r8332, r8333, r8334, r8335, r8336, r8337, r8338, r8339, r8340, r8341, r8342, r8343, r8344, r8345, r8346, r8347, r8348, r8349, r8350, r8351, r8352, r8353, r8354, r8355;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8312);
        mpfr_init_set_str(r8313, "-5.943549137346985e+85", 10, MPFR_RNDN);
        mpfr_init(r8314);
        mpfr_init_set_str(r8315, "2", 10, MPFR_RNDN);
        mpfr_init(r8316);
        mpfr_init(r8317);
        mpfr_init(r8318);
        mpfr_init(r8319);
        mpfr_init(r8320);
        mpfr_init(r8321);
        mpfr_init(r8322);
        mpfr_init(r8323);
        mpfr_init(r8324);
        mpfr_init(r8325);
        mpfr_init(r8326);
        mpfr_init(r8327);
        mpfr_init(r8328);
        mpfr_init(r8329);
        mpfr_init(r8330);
        mpfr_init_set_str(r8331, "6.994201171459714e+55", 10, MPFR_RNDN);
        mpfr_init(r8332);
        mpfr_init(r8333);
        mpfr_init(r8334);
        mpfr_init(r8335);
        mpfr_init(r8336);
        mpfr_init_set_str(r8337, "4", 10, MPFR_RNDN);
        mpfr_init(r8338);
        mpfr_init(r8339);
        mpfr_init(r8340);
        mpfr_init(r8341);
        mpfr_init(r8342);
        mpfr_init(r8343);
        mpfr_init(r8344);
        mpfr_init(r8345);
        mpfr_init(r8346);
        mpfr_init(r8347);
        mpfr_init(r8348);
        mpfr_init_set_str(r8349, "1", 10, MPFR_RNDN);
        mpfr_init(r8350);
        mpfr_init(r8351);
        mpfr_init(r8352);
        mpfr_init(r8353);
        mpfr_init(r8354);
        mpfr_init(r8355);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r8312, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8314, mpfr_cmp(r8312, r8313) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8316, r8315, MPFR_RNDN);
        mpfr_mul(r8317, r8312, r8316, MPFR_RNDN);
        mpfr_set_d(r8318, x, MPFR_RNDN);
        mpfr_div(r8319, r8315, r8318, MPFR_RNDN);
        mpfr_div(r8320, r8319, r8318, MPFR_RNDN);
        mpfr_div(r8321, r8312, r8315, MPFR_RNDN);
        mpfr_div(r8322, r8321, r8316, MPFR_RNDN);
        mpfr_div(r8323, r8312, r8316, MPFR_RNDN);
        mpfr_sub(r8324, r8322, r8323, MPFR_RNDN);
        mpfr_neg(r8325, r8312, MPFR_RNDN);
        mpfr_div(r8326, r8325, r8316, MPFR_RNDN);
        mpfr_mul(r8327, r8316, r8325, MPFR_RNDN);
        mpfr_fma(r8328, r8319, r8326, r8327, MPFR_RNDN);
        mpfr_fma(r8329, r8320, r8324, r8328, MPFR_RNDN);
        mpfr_div(r8330, r8317, r8329, MPFR_RNDN);
        ;
        mpfr_set_si(r8332, mpfr_cmp(r8312, r8331) <= 0, MPFR_RNDN);
        mpfr_set_d(r8333, l, MPFR_RNDN);
        mpfr_div(r8334, r8333, r8318, MPFR_RNDN);
        mpfr_mul(r8335, r8312, r8312, MPFR_RNDN);
        mpfr_fma(r8336, r8334, r8333, r8335, MPFR_RNDN);
        ;
        mpfr_mul(r8338, r8337, r8312, MPFR_RNDN);
        mpfr_div(r8339, r8312, r8318, MPFR_RNDN);
        mpfr_mul(r8340, r8338, r8339, MPFR_RNDN);
        mpfr_fma(r8341, r8315, r8336, r8340, MPFR_RNDN);
        mpfr_sqrt(r8342, r8341, MPFR_RNDN);
        mpfr_div(r8343, r8317, r8342, MPFR_RNDN);
        mpfr_div(r8344, r8319, r8316, MPFR_RNDN);
        mpfr_add(r8345, r8344, r8316, MPFR_RNDN);
        mpfr_mul(r8346, r8312, r8345, MPFR_RNDN);
        mpfr_mul(r8347, r8318, r8318, MPFR_RNDN);
        mpfr_div(r8348, r8323, r8347, MPFR_RNDN);
        ;
        mpfr_sub(r8350, r8349, r8315, MPFR_RNDN);
        mpfr_mul(r8351, r8348, r8350, MPFR_RNDN);
        mpfr_sub(r8352, r8346, r8351, MPFR_RNDN);
        mpfr_div(r8353, r8317, r8352, MPFR_RNDN);
        if (mpfr_get_si(r8332, MPFR_RNDN)) { mpfr_set(r8354, r8343, MPFR_RNDN); } else { mpfr_set(r8354, r8353, MPFR_RNDN); };
        if (mpfr_get_si(r8314, MPFR_RNDN)) { mpfr_set(r8355, r8330, MPFR_RNDN); } else { mpfr_set(r8355, r8354, MPFR_RNDN); };
        return mpfr_get_d(r8355, MPFR_RNDN);
}

