#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 r19976 = 2;
        float r19977 = sqrt(r19976);
        float r19978 = t;
        float r19979 = r19977 * r19978;
        float r19980 = x;
        float r19981 = 1;
        float r19982 = r19980 + r19981;
        float r19983 = r19980 - r19981;
        float r19984 = r19982 / r19983;
        float r19985 = l;
        float r19986 = r19985 * r19985;
        float r19987 = r19978 * r19978;
        float r19988 = r19976 * r19987;
        float r19989 = r19986 + r19988;
        float r19990 = r19984 * r19989;
        float r19991 = r19990 - r19986;
        float r19992 = sqrt(r19991);
        float r19993 = r19979 / r19992;
        return r19993;
}

double f_id(double x, double l, double t) {
        double r19994 = 2;
        double r19995 = sqrt(r19994);
        double r19996 = t;
        double r19997 = r19995 * r19996;
        double r19998 = x;
        double r19999 = 1;
        double r20000 = r19998 + r19999;
        double r20001 = r19998 - r19999;
        double r20002 = r20000 / r20001;
        double r20003 = l;
        double r20004 = r20003 * r20003;
        double r20005 = r19996 * r19996;
        double r20006 = r19994 * r20005;
        double r20007 = r20004 + r20006;
        double r20008 = r20002 * r20007;
        double r20009 = r20008 - r20004;
        double r20010 = sqrt(r20009);
        double r20011 = r19997 / r20010;
        return r20011;
}


double f_of(float x, float l, float t) {
        float r20012 = t;
        float r20013 = -2.2435451516420843e+53;
        bool r20014 = r20012 <= r20013;
        float r20015 = 2;
        float r20016 = sqrt(r20015);
        float r20017 = r20012 * r20016;
        float r20018 = x;
        float r20019 = r20012 / r20018;
        float r20020 = r20019 / r20018;
        float r20021 = r20020 / r20016;
        float r20022 = r20021 - r20017;
        float r20023 = r20015 / r20018;
        float r20024 = r20023 / r20016;
        float r20025 = r20019 + r20012;
        float r20026 = r20024 * r20025;
        float r20027 = r20022 - r20026;
        float r20028 = r20017 / r20027;
        float r20029 = 1.5041100798023286e+137;
        bool r20030 = r20012 <= r20029;
        float r20031 = r20016 * r20012;
        float r20032 = pow(r20012, r20015);
        float r20033 = r20015 * r20032;
        float r20034 = l;
        float r20035 = r20018 / r20034;
        float r20036 = r20034 / r20035;
        float r20037 = r20015 * r20036;
        float r20038 = 4;
        float r20039 = r20032 / r20018;
        float r20040 = r20038 * r20039;
        float r20041 = r20037 + r20040;
        float r20042 = r20033 + r20041;
        float r20043 = sqrt(r20042);
        float r20044 = r20031 / r20043;
        float r20045 = cbrt(r20044);
        float r20046 = r20045 * r20045;
        float r20047 = r20046 * r20045;
        float r20048 = r20026 + r20017;
        float r20049 = r20048 - r20021;
        float r20050 = r20017 / r20049;
        float r20051 = r20030 ? r20047 : r20050;
        float r20052 = r20014 ? r20028 : r20051;
        return r20052;
}

double f_od(double x, double l, double t) {
        double r20053 = t;
        double r20054 = -2.2435451516420843e+53;
        bool r20055 = r20053 <= r20054;
        double r20056 = 2;
        double r20057 = sqrt(r20056);
        double r20058 = r20053 * r20057;
        double r20059 = x;
        double r20060 = r20053 / r20059;
        double r20061 = r20060 / r20059;
        double r20062 = r20061 / r20057;
        double r20063 = r20062 - r20058;
        double r20064 = r20056 / r20059;
        double r20065 = r20064 / r20057;
        double r20066 = r20060 + r20053;
        double r20067 = r20065 * r20066;
        double r20068 = r20063 - r20067;
        double r20069 = r20058 / r20068;
        double r20070 = 1.5041100798023286e+137;
        bool r20071 = r20053 <= r20070;
        double r20072 = r20057 * r20053;
        double r20073 = pow(r20053, r20056);
        double r20074 = r20056 * r20073;
        double r20075 = l;
        double r20076 = r20059 / r20075;
        double r20077 = r20075 / r20076;
        double r20078 = r20056 * r20077;
        double r20079 = 4;
        double r20080 = r20073 / r20059;
        double r20081 = r20079 * r20080;
        double r20082 = r20078 + r20081;
        double r20083 = r20074 + r20082;
        double r20084 = sqrt(r20083);
        double r20085 = r20072 / r20084;
        double r20086 = cbrt(r20085);
        double r20087 = r20086 * r20086;
        double r20088 = r20087 * r20086;
        double r20089 = r20067 + r20058;
        double r20090 = r20089 - r20062;
        double r20091 = r20058 / r20090;
        double r20092 = r20071 ? r20088 : r20091;
        double r20093 = r20055 ? r20069 : r20092;
        return r20093;
}

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 r20094, r20095, r20096, r20097, r20098, r20099, r20100, r20101, r20102, r20103, r20104, r20105, r20106, r20107, r20108, r20109, r20110, r20111;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r20094, "2", 10, MPFR_RNDN);
        mpfr_init(r20095);
        mpfr_init(r20096);
        mpfr_init(r20097);
        mpfr_init(r20098);
        mpfr_init_set_str(r20099, "1", 10, MPFR_RNDN);
        mpfr_init(r20100);
        mpfr_init(r20101);
        mpfr_init(r20102);
        mpfr_init(r20103);
        mpfr_init(r20104);
        mpfr_init(r20105);
        mpfr_init(r20106);
        mpfr_init(r20107);
        mpfr_init(r20108);
        mpfr_init(r20109);
        mpfr_init(r20110);
        mpfr_init(r20111);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r20095, r20094, MPFR_RNDN);
        mpfr_set_d(r20096, t, MPFR_RNDN);
        mpfr_mul(r20097, r20095, r20096, MPFR_RNDN);
        mpfr_set_d(r20098, x, MPFR_RNDN);
        ;
        mpfr_add(r20100, r20098, r20099, MPFR_RNDN);
        mpfr_sub(r20101, r20098, r20099, MPFR_RNDN);
        mpfr_div(r20102, r20100, r20101, MPFR_RNDN);
        mpfr_set_d(r20103, l, MPFR_RNDN);
        mpfr_mul(r20104, r20103, r20103, MPFR_RNDN);
        mpfr_mul(r20105, r20096, r20096, MPFR_RNDN);
        mpfr_mul(r20106, r20094, r20105, MPFR_RNDN);
        mpfr_add(r20107, r20104, r20106, MPFR_RNDN);
        mpfr_mul(r20108, r20102, r20107, MPFR_RNDN);
        mpfr_sub(r20109, r20108, r20104, MPFR_RNDN);
        mpfr_sqrt(r20110, r20109, MPFR_RNDN);
        mpfr_div(r20111, r20097, r20110, MPFR_RNDN);
        return mpfr_get_d(r20111, MPFR_RNDN);
}

static mpfr_t r20112, r20113, r20114, r20115, r20116, r20117, r20118, r20119, r20120, r20121, r20122, r20123, r20124, r20125, r20126, r20127, r20128, r20129, r20130, r20131, r20132, r20133, r20134, r20135, r20136, r20137, r20138, r20139, r20140, r20141, r20142, r20143, r20144, r20145, r20146, r20147, r20148, r20149, r20150, r20151, r20152;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20112);
        mpfr_init_set_str(r20113, "-2.2435451516420843e+53", 10, MPFR_RNDN);
        mpfr_init(r20114);
        mpfr_init_set_str(r20115, "2", 10, MPFR_RNDN);
        mpfr_init(r20116);
        mpfr_init(r20117);
        mpfr_init(r20118);
        mpfr_init(r20119);
        mpfr_init(r20120);
        mpfr_init(r20121);
        mpfr_init(r20122);
        mpfr_init(r20123);
        mpfr_init(r20124);
        mpfr_init(r20125);
        mpfr_init(r20126);
        mpfr_init(r20127);
        mpfr_init(r20128);
        mpfr_init_set_str(r20129, "1.5041100798023286e+137", 10, MPFR_RNDN);
        mpfr_init(r20130);
        mpfr_init(r20131);
        mpfr_init(r20132);
        mpfr_init(r20133);
        mpfr_init(r20134);
        mpfr_init(r20135);
        mpfr_init(r20136);
        mpfr_init(r20137);
        mpfr_init_set_str(r20138, "4", 10, MPFR_RNDN);
        mpfr_init(r20139);
        mpfr_init(r20140);
        mpfr_init(r20141);
        mpfr_init(r20142);
        mpfr_init(r20143);
        mpfr_init(r20144);
        mpfr_init(r20145);
        mpfr_init(r20146);
        mpfr_init(r20147);
        mpfr_init(r20148);
        mpfr_init(r20149);
        mpfr_init(r20150);
        mpfr_init(r20151);
        mpfr_init(r20152);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r20112, t, MPFR_RNDN);
        ;
        mpfr_set_si(r20114, mpfr_cmp(r20112, r20113) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r20116, r20115, MPFR_RNDN);
        mpfr_mul(r20117, r20112, r20116, MPFR_RNDN);
        mpfr_set_d(r20118, x, MPFR_RNDN);
        mpfr_div(r20119, r20112, r20118, MPFR_RNDN);
        mpfr_div(r20120, r20119, r20118, MPFR_RNDN);
        mpfr_div(r20121, r20120, r20116, MPFR_RNDN);
        mpfr_sub(r20122, r20121, r20117, MPFR_RNDN);
        mpfr_div(r20123, r20115, r20118, MPFR_RNDN);
        mpfr_div(r20124, r20123, r20116, MPFR_RNDN);
        mpfr_add(r20125, r20119, r20112, MPFR_RNDN);
        mpfr_mul(r20126, r20124, r20125, MPFR_RNDN);
        mpfr_sub(r20127, r20122, r20126, MPFR_RNDN);
        mpfr_div(r20128, r20117, r20127, MPFR_RNDN);
        ;
        mpfr_set_si(r20130, mpfr_cmp(r20112, r20129) <= 0, MPFR_RNDN);
        mpfr_mul(r20131, r20116, r20112, MPFR_RNDN);
        mpfr_pow(r20132, r20112, r20115, MPFR_RNDN);
        mpfr_mul(r20133, r20115, r20132, MPFR_RNDN);
        mpfr_set_d(r20134, l, MPFR_RNDN);
        mpfr_div(r20135, r20118, r20134, MPFR_RNDN);
        mpfr_div(r20136, r20134, r20135, MPFR_RNDN);
        mpfr_mul(r20137, r20115, r20136, MPFR_RNDN);
        ;
        mpfr_div(r20139, r20132, r20118, MPFR_RNDN);
        mpfr_mul(r20140, r20138, r20139, MPFR_RNDN);
        mpfr_add(r20141, r20137, r20140, MPFR_RNDN);
        mpfr_add(r20142, r20133, r20141, MPFR_RNDN);
        mpfr_sqrt(r20143, r20142, MPFR_RNDN);
        mpfr_div(r20144, r20131, r20143, MPFR_RNDN);
        mpfr_cbrt(r20145, r20144, MPFR_RNDN);
        mpfr_mul(r20146, r20145, r20145, MPFR_RNDN);
        mpfr_mul(r20147, r20146, r20145, MPFR_RNDN);
        mpfr_add(r20148, r20126, r20117, MPFR_RNDN);
        mpfr_sub(r20149, r20148, r20121, MPFR_RNDN);
        mpfr_div(r20150, r20117, r20149, MPFR_RNDN);
        if (mpfr_get_si(r20130, MPFR_RNDN)) { mpfr_set(r20151, r20147, MPFR_RNDN); } else { mpfr_set(r20151, r20150, MPFR_RNDN); };
        if (mpfr_get_si(r20114, MPFR_RNDN)) { mpfr_set(r20152, r20128, MPFR_RNDN); } else { mpfr_set(r20152, r20151, MPFR_RNDN); };
        return mpfr_get_d(r20152, MPFR_RNDN);
}

static mpfr_t r20153, r20154, r20155, r20156, r20157, r20158, r20159, r20160, r20161, r20162, r20163, r20164, r20165, r20166, r20167, r20168, r20169, r20170, r20171, r20172, r20173, r20174, r20175, r20176, r20177, r20178, r20179, r20180, r20181, r20182, r20183, r20184, r20185, r20186, r20187, r20188, r20189, r20190, r20191, r20192, r20193;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20153);
        mpfr_init_set_str(r20154, "-2.2435451516420843e+53", 10, MPFR_RNDN);
        mpfr_init(r20155);
        mpfr_init_set_str(r20156, "2", 10, MPFR_RNDN);
        mpfr_init(r20157);
        mpfr_init(r20158);
        mpfr_init(r20159);
        mpfr_init(r20160);
        mpfr_init(r20161);
        mpfr_init(r20162);
        mpfr_init(r20163);
        mpfr_init(r20164);
        mpfr_init(r20165);
        mpfr_init(r20166);
        mpfr_init(r20167);
        mpfr_init(r20168);
        mpfr_init(r20169);
        mpfr_init_set_str(r20170, "1.5041100798023286e+137", 10, MPFR_RNDN);
        mpfr_init(r20171);
        mpfr_init(r20172);
        mpfr_init(r20173);
        mpfr_init(r20174);
        mpfr_init(r20175);
        mpfr_init(r20176);
        mpfr_init(r20177);
        mpfr_init(r20178);
        mpfr_init_set_str(r20179, "4", 10, MPFR_RNDN);
        mpfr_init(r20180);
        mpfr_init(r20181);
        mpfr_init(r20182);
        mpfr_init(r20183);
        mpfr_init(r20184);
        mpfr_init(r20185);
        mpfr_init(r20186);
        mpfr_init(r20187);
        mpfr_init(r20188);
        mpfr_init(r20189);
        mpfr_init(r20190);
        mpfr_init(r20191);
        mpfr_init(r20192);
        mpfr_init(r20193);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r20153, t, MPFR_RNDN);
        ;
        mpfr_set_si(r20155, mpfr_cmp(r20153, r20154) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r20157, r20156, MPFR_RNDN);
        mpfr_mul(r20158, r20153, r20157, MPFR_RNDN);
        mpfr_set_d(r20159, x, MPFR_RNDN);
        mpfr_div(r20160, r20153, r20159, MPFR_RNDN);
        mpfr_div(r20161, r20160, r20159, MPFR_RNDN);
        mpfr_div(r20162, r20161, r20157, MPFR_RNDN);
        mpfr_sub(r20163, r20162, r20158, MPFR_RNDN);
        mpfr_div(r20164, r20156, r20159, MPFR_RNDN);
        mpfr_div(r20165, r20164, r20157, MPFR_RNDN);
        mpfr_add(r20166, r20160, r20153, MPFR_RNDN);
        mpfr_mul(r20167, r20165, r20166, MPFR_RNDN);
        mpfr_sub(r20168, r20163, r20167, MPFR_RNDN);
        mpfr_div(r20169, r20158, r20168, MPFR_RNDN);
        ;
        mpfr_set_si(r20171, mpfr_cmp(r20153, r20170) <= 0, MPFR_RNDN);
        mpfr_mul(r20172, r20157, r20153, MPFR_RNDN);
        mpfr_pow(r20173, r20153, r20156, MPFR_RNDN);
        mpfr_mul(r20174, r20156, r20173, MPFR_RNDN);
        mpfr_set_d(r20175, l, MPFR_RNDN);
        mpfr_div(r20176, r20159, r20175, MPFR_RNDN);
        mpfr_div(r20177, r20175, r20176, MPFR_RNDN);
        mpfr_mul(r20178, r20156, r20177, MPFR_RNDN);
        ;
        mpfr_div(r20180, r20173, r20159, MPFR_RNDN);
        mpfr_mul(r20181, r20179, r20180, MPFR_RNDN);
        mpfr_add(r20182, r20178, r20181, MPFR_RNDN);
        mpfr_add(r20183, r20174, r20182, MPFR_RNDN);
        mpfr_sqrt(r20184, r20183, MPFR_RNDN);
        mpfr_div(r20185, r20172, r20184, MPFR_RNDN);
        mpfr_cbrt(r20186, r20185, MPFR_RNDN);
        mpfr_mul(r20187, r20186, r20186, MPFR_RNDN);
        mpfr_mul(r20188, r20187, r20186, MPFR_RNDN);
        mpfr_add(r20189, r20167, r20158, MPFR_RNDN);
        mpfr_sub(r20190, r20189, r20162, MPFR_RNDN);
        mpfr_div(r20191, r20158, r20190, MPFR_RNDN);
        if (mpfr_get_si(r20171, MPFR_RNDN)) { mpfr_set(r20192, r20188, MPFR_RNDN); } else { mpfr_set(r20192, r20191, MPFR_RNDN); };
        if (mpfr_get_si(r20155, MPFR_RNDN)) { mpfr_set(r20193, r20169, MPFR_RNDN); } else { mpfr_set(r20193, r20192, MPFR_RNDN); };
        return mpfr_get_d(r20193, MPFR_RNDN);
}

