#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 r19971 = 2;
        float r19972 = sqrt(r19971);
        float r19973 = t;
        float r19974 = r19972 * r19973;
        float r19975 = x;
        float r19976 = 1;
        float r19977 = r19975 + r19976;
        float r19978 = r19975 - r19976;
        float r19979 = r19977 / r19978;
        float r19980 = l;
        float r19981 = r19980 * r19980;
        float r19982 = r19973 * r19973;
        float r19983 = r19971 * r19982;
        float r19984 = r19981 + r19983;
        float r19985 = r19979 * r19984;
        float r19986 = r19985 - r19981;
        float r19987 = sqrt(r19986);
        float r19988 = r19974 / r19987;
        return r19988;
}

double f_id(double x, double l, double t) {
        double r19989 = 2;
        double r19990 = sqrt(r19989);
        double r19991 = t;
        double r19992 = r19990 * r19991;
        double r19993 = x;
        double r19994 = 1;
        double r19995 = r19993 + r19994;
        double r19996 = r19993 - r19994;
        double r19997 = r19995 / r19996;
        double r19998 = l;
        double r19999 = r19998 * r19998;
        double r20000 = r19991 * r19991;
        double r20001 = r19989 * r20000;
        double r20002 = r19999 + r20001;
        double r20003 = r19997 * r20002;
        double r20004 = r20003 - r19999;
        double r20005 = sqrt(r20004);
        double r20006 = r19992 / r20005;
        return r20006;
}


double f_of(float x, float l, float t) {
        float r20007 = t;
        float r20008 = -1.0817749576247672e+126;
        bool r20009 = r20007 <= r20008;
        float r20010 = 2;
        float r20011 = sqrt(r20010);
        float r20012 = r20007 * r20011;
        float r20013 = x;
        float r20014 = r20007 / r20013;
        float r20015 = r20014 / r20013;
        float r20016 = r20015 / r20011;
        float r20017 = r20016 - r20012;
        float r20018 = r20010 / r20013;
        float r20019 = r20018 / r20011;
        float r20020 = r20014 + r20007;
        float r20021 = r20019 * r20020;
        float r20022 = r20017 - r20021;
        float r20023 = r20012 / r20022;
        float r20024 = -9.21963799851886e-168;
        bool r20025 = r20007 <= r20024;
        float r20026 = r20011 * r20007;
        float r20027 = pow(r20007, r20010);
        float r20028 = r20010 * r20027;
        float r20029 = l;
        float r20030 = r20013 / r20029;
        float r20031 = r20029 / r20030;
        float r20032 = r20010 * r20031;
        float r20033 = 4;
        float r20034 = r20027 / r20013;
        float r20035 = r20033 * r20034;
        float r20036 = r20032 + r20035;
        float r20037 = r20028 + r20036;
        float r20038 = sqrt(r20037);
        float r20039 = r20026 / r20038;
        float r20040 = -2.9107726421089792e-300;
        bool r20041 = r20007 <= r20040;
        float r20042 = 6.786691997666397;
        bool r20043 = r20007 <= r20042;
        float r20044 = r20021 + r20012;
        float r20045 = r20044 - r20016;
        float r20046 = r20012 / r20045;
        float r20047 = r20043 ? r20039 : r20046;
        float r20048 = r20041 ? r20023 : r20047;
        float r20049 = r20025 ? r20039 : r20048;
        float r20050 = r20009 ? r20023 : r20049;
        return r20050;
}

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

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r20095, "2", 10, MPFR_RNDN);
        mpfr_init(r20096);
        mpfr_init(r20097);
        mpfr_init(r20098);
        mpfr_init(r20099);
        mpfr_init_set_str(r20100, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r20112);
}

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

static mpfr_t 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, r20153, r20154, r20155, r20156;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20113);
        mpfr_init_set_str(r20114, "-1.0817749576247672e+126", 10, MPFR_RNDN);
        mpfr_init(r20115);
        mpfr_init_set_str(r20116, "2", 10, MPFR_RNDN);
        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(r20129);
        mpfr_init_set_str(r20130, "-9.21963799851886e-168", 10, MPFR_RNDN);
        mpfr_init(r20131);
        mpfr_init(r20132);
        mpfr_init(r20133);
        mpfr_init(r20134);
        mpfr_init(r20135);
        mpfr_init(r20136);
        mpfr_init(r20137);
        mpfr_init(r20138);
        mpfr_init_set_str(r20139, "4", 10, MPFR_RNDN);
        mpfr_init(r20140);
        mpfr_init(r20141);
        mpfr_init(r20142);
        mpfr_init(r20143);
        mpfr_init(r20144);
        mpfr_init(r20145);
        mpfr_init_set_str(r20146, "-2.9107726421089792e-300", 10, MPFR_RNDN);
        mpfr_init(r20147);
        mpfr_init_set_str(r20148, "6.786691997666397", 10, MPFR_RNDN);
        mpfr_init(r20149);
        mpfr_init(r20150);
        mpfr_init(r20151);
        mpfr_init(r20152);
        mpfr_init(r20153);
        mpfr_init(r20154);
        mpfr_init(r20155);
        mpfr_init(r20156);
}

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

static mpfr_t 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, r20194, r20195, r20196, r20197, r20198, r20199, r20200;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r20157);
        mpfr_init_set_str(r20158, "-1.0817749576247672e+126", 10, MPFR_RNDN);
        mpfr_init(r20159);
        mpfr_init_set_str(r20160, "2", 10, MPFR_RNDN);
        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(r20170);
        mpfr_init(r20171);
        mpfr_init(r20172);
        mpfr_init(r20173);
        mpfr_init_set_str(r20174, "-9.21963799851886e-168", 10, MPFR_RNDN);
        mpfr_init(r20175);
        mpfr_init(r20176);
        mpfr_init(r20177);
        mpfr_init(r20178);
        mpfr_init(r20179);
        mpfr_init(r20180);
        mpfr_init(r20181);
        mpfr_init(r20182);
        mpfr_init_set_str(r20183, "4", 10, MPFR_RNDN);
        mpfr_init(r20184);
        mpfr_init(r20185);
        mpfr_init(r20186);
        mpfr_init(r20187);
        mpfr_init(r20188);
        mpfr_init(r20189);
        mpfr_init_set_str(r20190, "-2.9107726421089792e-300", 10, MPFR_RNDN);
        mpfr_init(r20191);
        mpfr_init_set_str(r20192, "6.786691997666397", 10, MPFR_RNDN);
        mpfr_init(r20193);
        mpfr_init(r20194);
        mpfr_init(r20195);
        mpfr_init(r20196);
        mpfr_init(r20197);
        mpfr_init(r20198);
        mpfr_init(r20199);
        mpfr_init(r20200);
}

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

