#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 r20873 = 2;
        float r20874 = sqrt(r20873);
        float r20875 = t;
        float r20876 = r20874 * r20875;
        float r20877 = x;
        float r20878 = 1;
        float r20879 = r20877 + r20878;
        float r20880 = r20877 - r20878;
        float r20881 = r20879 / r20880;
        float r20882 = l;
        float r20883 = r20882 * r20882;
        float r20884 = r20875 * r20875;
        float r20885 = r20873 * r20884;
        float r20886 = r20883 + r20885;
        float r20887 = r20881 * r20886;
        float r20888 = r20887 - r20883;
        float r20889 = sqrt(r20888);
        float r20890 = r20876 / r20889;
        return r20890;
}

double f_id(double x, double l, double t) {
        double r20891 = 2;
        double r20892 = sqrt(r20891);
        double r20893 = t;
        double r20894 = r20892 * r20893;
        double r20895 = x;
        double r20896 = 1;
        double r20897 = r20895 + r20896;
        double r20898 = r20895 - r20896;
        double r20899 = r20897 / r20898;
        double r20900 = l;
        double r20901 = r20900 * r20900;
        double r20902 = r20893 * r20893;
        double r20903 = r20891 * r20902;
        double r20904 = r20901 + r20903;
        double r20905 = r20899 * r20904;
        double r20906 = r20905 - r20901;
        double r20907 = sqrt(r20906);
        double r20908 = r20894 / r20907;
        return r20908;
}


double f_of(float x, float l, float t) {
        float r20909 = t;
        float r20910 = -1.4427638579014495e+131;
        bool r20911 = r20909 <= r20910;
        float r20912 = x;
        float r20913 = r20909 / r20912;
        float r20914 = r20912 + r20912;
        float r20915 = r20913 / r20914;
        float r20916 = 1;
        float r20917 = r20909 / r20916;
        float r20918 = r20912 / r20916;
        float r20919 = r20909 / r20918;
        float r20920 = r20917 + r20919;
        float r20921 = r20915 - r20920;
        float r20922 = r20909 / r20921;
        float r20923 = 143186471723.08182;
        bool r20924 = r20909 <= r20923;
        float r20925 = 2;
        float r20926 = sqrt(r20925);
        float r20927 = r20909 * r20926;
        float r20928 = r20909 * r20909;
        float r20929 = 4;
        float r20930 = r20912 / r20929;
        float r20931 = r20928 / r20930;
        float r20932 = r20928 + r20928;
        float r20933 = r20931 + r20932;
        float r20934 = l;
        float r20935 = r20934 / r20912;
        float r20936 = r20934 + r20934;
        float r20937 = r20935 * r20936;
        float r20938 = r20933 + r20937;
        float r20939 = sqrt(r20938);
        float r20940 = r20927 / r20939;
        float r20941 = r20925 / r20912;
        float r20942 = r20941 / r20926;
        float r20943 = r20926 + r20942;
        float r20944 = r20909 * r20943;
        float r20945 = r20913 / r20912;
        float r20946 = r20925 / r20926;
        float r20947 = r20916 / r20926;
        float r20948 = r20946 - r20947;
        float r20949 = r20945 * r20948;
        float r20950 = r20944 + r20949;
        float r20951 = r20927 / r20950;
        float r20952 = r20924 ? r20940 : r20951;
        float r20953 = r20911 ? r20922 : r20952;
        return r20953;
}

double f_od(double x, double l, double t) {
        double r20954 = t;
        double r20955 = -1.4427638579014495e+131;
        bool r20956 = r20954 <= r20955;
        double r20957 = x;
        double r20958 = r20954 / r20957;
        double r20959 = r20957 + r20957;
        double r20960 = r20958 / r20959;
        double r20961 = 1;
        double r20962 = r20954 / r20961;
        double r20963 = r20957 / r20961;
        double r20964 = r20954 / r20963;
        double r20965 = r20962 + r20964;
        double r20966 = r20960 - r20965;
        double r20967 = r20954 / r20966;
        double r20968 = 143186471723.08182;
        bool r20969 = r20954 <= r20968;
        double r20970 = 2;
        double r20971 = sqrt(r20970);
        double r20972 = r20954 * r20971;
        double r20973 = r20954 * r20954;
        double r20974 = 4;
        double r20975 = r20957 / r20974;
        double r20976 = r20973 / r20975;
        double r20977 = r20973 + r20973;
        double r20978 = r20976 + r20977;
        double r20979 = l;
        double r20980 = r20979 / r20957;
        double r20981 = r20979 + r20979;
        double r20982 = r20980 * r20981;
        double r20983 = r20978 + r20982;
        double r20984 = sqrt(r20983);
        double r20985 = r20972 / r20984;
        double r20986 = r20970 / r20957;
        double r20987 = r20986 / r20971;
        double r20988 = r20971 + r20987;
        double r20989 = r20954 * r20988;
        double r20990 = r20958 / r20957;
        double r20991 = r20970 / r20971;
        double r20992 = r20961 / r20971;
        double r20993 = r20991 - r20992;
        double r20994 = r20990 * r20993;
        double r20995 = r20989 + r20994;
        double r20996 = r20972 / r20995;
        double r20997 = r20969 ? r20985 : r20996;
        double r20998 = r20956 ? r20967 : r20997;
        return r20998;
}

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 r20999, r21000, r21001, r21002, r21003, r21004, r21005, r21006, r21007, r21008, r21009, r21010, r21011, r21012, r21013, r21014, r21015, r21016;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r20999, "2", 10, MPFR_RNDN);
        mpfr_init(r21000);
        mpfr_init(r21001);
        mpfr_init(r21002);
        mpfr_init(r21003);
        mpfr_init_set_str(r21004, "1", 10, MPFR_RNDN);
        mpfr_init(r21005);
        mpfr_init(r21006);
        mpfr_init(r21007);
        mpfr_init(r21008);
        mpfr_init(r21009);
        mpfr_init(r21010);
        mpfr_init(r21011);
        mpfr_init(r21012);
        mpfr_init(r21013);
        mpfr_init(r21014);
        mpfr_init(r21015);
        mpfr_init(r21016);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r21000, r20999, MPFR_RNDN);
        mpfr_set_d(r21001, t, MPFR_RNDN);
        mpfr_mul(r21002, r21000, r21001, MPFR_RNDN);
        mpfr_set_d(r21003, x, MPFR_RNDN);
        ;
        mpfr_add(r21005, r21003, r21004, MPFR_RNDN);
        mpfr_sub(r21006, r21003, r21004, MPFR_RNDN);
        mpfr_div(r21007, r21005, r21006, MPFR_RNDN);
        mpfr_set_d(r21008, l, MPFR_RNDN);
        mpfr_mul(r21009, r21008, r21008, MPFR_RNDN);
        mpfr_mul(r21010, r21001, r21001, MPFR_RNDN);
        mpfr_mul(r21011, r20999, r21010, MPFR_RNDN);
        mpfr_add(r21012, r21009, r21011, MPFR_RNDN);
        mpfr_mul(r21013, r21007, r21012, MPFR_RNDN);
        mpfr_sub(r21014, r21013, r21009, MPFR_RNDN);
        mpfr_sqrt(r21015, r21014, MPFR_RNDN);
        mpfr_div(r21016, r21002, r21015, MPFR_RNDN);
        return mpfr_get_d(r21016, MPFR_RNDN);
}

static mpfr_t r21017, r21018, r21019, r21020, r21021, r21022, r21023, r21024, r21025, r21026, r21027, r21028, r21029, r21030, r21031, r21032, r21033, r21034, r21035, r21036, r21037, r21038, r21039, r21040, r21041, r21042, r21043, r21044, r21045, r21046, r21047, r21048, r21049, r21050, r21051, r21052, r21053, r21054, r21055, r21056, r21057, r21058, r21059, r21060, r21061;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21017);
        mpfr_init_set_str(r21018, "-1.4427638579014495e+131", 10, MPFR_RNDN);
        mpfr_init(r21019);
        mpfr_init(r21020);
        mpfr_init(r21021);
        mpfr_init(r21022);
        mpfr_init(r21023);
        mpfr_init_set_str(r21024, "1", 10, MPFR_RNDN);
        mpfr_init(r21025);
        mpfr_init(r21026);
        mpfr_init(r21027);
        mpfr_init(r21028);
        mpfr_init(r21029);
        mpfr_init(r21030);
        mpfr_init_set_str(r21031, "143186471723.08182", 10, MPFR_RNDN);
        mpfr_init(r21032);
        mpfr_init_set_str(r21033, "2", 10, MPFR_RNDN);
        mpfr_init(r21034);
        mpfr_init(r21035);
        mpfr_init(r21036);
        mpfr_init_set_str(r21037, "4", 10, MPFR_RNDN);
        mpfr_init(r21038);
        mpfr_init(r21039);
        mpfr_init(r21040);
        mpfr_init(r21041);
        mpfr_init(r21042);
        mpfr_init(r21043);
        mpfr_init(r21044);
        mpfr_init(r21045);
        mpfr_init(r21046);
        mpfr_init(r21047);
        mpfr_init(r21048);
        mpfr_init(r21049);
        mpfr_init(r21050);
        mpfr_init(r21051);
        mpfr_init(r21052);
        mpfr_init(r21053);
        mpfr_init(r21054);
        mpfr_init(r21055);
        mpfr_init(r21056);
        mpfr_init(r21057);
        mpfr_init(r21058);
        mpfr_init(r21059);
        mpfr_init(r21060);
        mpfr_init(r21061);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r21017, t, MPFR_RNDN);
        ;
        mpfr_set_si(r21019, mpfr_cmp(r21017, r21018) <= 0, MPFR_RNDN);
        mpfr_set_d(r21020, x, MPFR_RNDN);
        mpfr_div(r21021, r21017, r21020, MPFR_RNDN);
        mpfr_add(r21022, r21020, r21020, MPFR_RNDN);
        mpfr_div(r21023, r21021, r21022, MPFR_RNDN);
        ;
        mpfr_div(r21025, r21017, r21024, MPFR_RNDN);
        mpfr_div(r21026, r21020, r21024, MPFR_RNDN);
        mpfr_div(r21027, r21017, r21026, MPFR_RNDN);
        mpfr_add(r21028, r21025, r21027, MPFR_RNDN);
        mpfr_sub(r21029, r21023, r21028, MPFR_RNDN);
        mpfr_div(r21030, r21017, r21029, MPFR_RNDN);
        ;
        mpfr_set_si(r21032, mpfr_cmp(r21017, r21031) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21034, r21033, MPFR_RNDN);
        mpfr_mul(r21035, r21017, r21034, MPFR_RNDN);
        mpfr_mul(r21036, r21017, r21017, MPFR_RNDN);
        ;
        mpfr_div(r21038, r21020, r21037, MPFR_RNDN);
        mpfr_div(r21039, r21036, r21038, MPFR_RNDN);
        mpfr_add(r21040, r21036, r21036, MPFR_RNDN);
        mpfr_add(r21041, r21039, r21040, MPFR_RNDN);
        mpfr_set_d(r21042, l, MPFR_RNDN);
        mpfr_div(r21043, r21042, r21020, MPFR_RNDN);
        mpfr_add(r21044, r21042, r21042, MPFR_RNDN);
        mpfr_mul(r21045, r21043, r21044, MPFR_RNDN);
        mpfr_add(r21046, r21041, r21045, MPFR_RNDN);
        mpfr_sqrt(r21047, r21046, MPFR_RNDN);
        mpfr_div(r21048, r21035, r21047, MPFR_RNDN);
        mpfr_div(r21049, r21033, r21020, MPFR_RNDN);
        mpfr_div(r21050, r21049, r21034, MPFR_RNDN);
        mpfr_add(r21051, r21034, r21050, MPFR_RNDN);
        mpfr_mul(r21052, r21017, r21051, MPFR_RNDN);
        mpfr_div(r21053, r21021, r21020, MPFR_RNDN);
        mpfr_div(r21054, r21033, r21034, MPFR_RNDN);
        mpfr_div(r21055, r21024, r21034, MPFR_RNDN);
        mpfr_sub(r21056, r21054, r21055, MPFR_RNDN);
        mpfr_mul(r21057, r21053, r21056, MPFR_RNDN);
        mpfr_add(r21058, r21052, r21057, MPFR_RNDN);
        mpfr_div(r21059, r21035, r21058, MPFR_RNDN);
        if (mpfr_get_si(r21032, MPFR_RNDN)) { mpfr_set(r21060, r21048, MPFR_RNDN); } else { mpfr_set(r21060, r21059, MPFR_RNDN); };
        if (mpfr_get_si(r21019, MPFR_RNDN)) { mpfr_set(r21061, r21030, MPFR_RNDN); } else { mpfr_set(r21061, r21060, MPFR_RNDN); };
        return mpfr_get_d(r21061, MPFR_RNDN);
}

static mpfr_t r21062, r21063, r21064, r21065, r21066, r21067, r21068, r21069, r21070, r21071, r21072, r21073, r21074, r21075, r21076, r21077, r21078, r21079, r21080, r21081, r21082, r21083, r21084, r21085, r21086, r21087, r21088, r21089, r21090, r21091, r21092, r21093, r21094, r21095, r21096, r21097, r21098, r21099, r21100, r21101, r21102, r21103, r21104, r21105, r21106;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r21062);
        mpfr_init_set_str(r21063, "-1.4427638579014495e+131", 10, MPFR_RNDN);
        mpfr_init(r21064);
        mpfr_init(r21065);
        mpfr_init(r21066);
        mpfr_init(r21067);
        mpfr_init(r21068);
        mpfr_init_set_str(r21069, "1", 10, MPFR_RNDN);
        mpfr_init(r21070);
        mpfr_init(r21071);
        mpfr_init(r21072);
        mpfr_init(r21073);
        mpfr_init(r21074);
        mpfr_init(r21075);
        mpfr_init_set_str(r21076, "143186471723.08182", 10, MPFR_RNDN);
        mpfr_init(r21077);
        mpfr_init_set_str(r21078, "2", 10, MPFR_RNDN);
        mpfr_init(r21079);
        mpfr_init(r21080);
        mpfr_init(r21081);
        mpfr_init_set_str(r21082, "4", 10, MPFR_RNDN);
        mpfr_init(r21083);
        mpfr_init(r21084);
        mpfr_init(r21085);
        mpfr_init(r21086);
        mpfr_init(r21087);
        mpfr_init(r21088);
        mpfr_init(r21089);
        mpfr_init(r21090);
        mpfr_init(r21091);
        mpfr_init(r21092);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init(r21095);
        mpfr_init(r21096);
        mpfr_init(r21097);
        mpfr_init(r21098);
        mpfr_init(r21099);
        mpfr_init(r21100);
        mpfr_init(r21101);
        mpfr_init(r21102);
        mpfr_init(r21103);
        mpfr_init(r21104);
        mpfr_init(r21105);
        mpfr_init(r21106);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r21062, t, MPFR_RNDN);
        ;
        mpfr_set_si(r21064, mpfr_cmp(r21062, r21063) <= 0, MPFR_RNDN);
        mpfr_set_d(r21065, x, MPFR_RNDN);
        mpfr_div(r21066, r21062, r21065, MPFR_RNDN);
        mpfr_add(r21067, r21065, r21065, MPFR_RNDN);
        mpfr_div(r21068, r21066, r21067, MPFR_RNDN);
        ;
        mpfr_div(r21070, r21062, r21069, MPFR_RNDN);
        mpfr_div(r21071, r21065, r21069, MPFR_RNDN);
        mpfr_div(r21072, r21062, r21071, MPFR_RNDN);
        mpfr_add(r21073, r21070, r21072, MPFR_RNDN);
        mpfr_sub(r21074, r21068, r21073, MPFR_RNDN);
        mpfr_div(r21075, r21062, r21074, MPFR_RNDN);
        ;
        mpfr_set_si(r21077, mpfr_cmp(r21062, r21076) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r21079, r21078, MPFR_RNDN);
        mpfr_mul(r21080, r21062, r21079, MPFR_RNDN);
        mpfr_mul(r21081, r21062, r21062, MPFR_RNDN);
        ;
        mpfr_div(r21083, r21065, r21082, MPFR_RNDN);
        mpfr_div(r21084, r21081, r21083, MPFR_RNDN);
        mpfr_add(r21085, r21081, r21081, MPFR_RNDN);
        mpfr_add(r21086, r21084, r21085, MPFR_RNDN);
        mpfr_set_d(r21087, l, MPFR_RNDN);
        mpfr_div(r21088, r21087, r21065, MPFR_RNDN);
        mpfr_add(r21089, r21087, r21087, MPFR_RNDN);
        mpfr_mul(r21090, r21088, r21089, MPFR_RNDN);
        mpfr_add(r21091, r21086, r21090, MPFR_RNDN);
        mpfr_sqrt(r21092, r21091, MPFR_RNDN);
        mpfr_div(r21093, r21080, r21092, MPFR_RNDN);
        mpfr_div(r21094, r21078, r21065, MPFR_RNDN);
        mpfr_div(r21095, r21094, r21079, MPFR_RNDN);
        mpfr_add(r21096, r21079, r21095, MPFR_RNDN);
        mpfr_mul(r21097, r21062, r21096, MPFR_RNDN);
        mpfr_div(r21098, r21066, r21065, MPFR_RNDN);
        mpfr_div(r21099, r21078, r21079, MPFR_RNDN);
        mpfr_div(r21100, r21069, r21079, MPFR_RNDN);
        mpfr_sub(r21101, r21099, r21100, MPFR_RNDN);
        mpfr_mul(r21102, r21098, r21101, MPFR_RNDN);
        mpfr_add(r21103, r21097, r21102, MPFR_RNDN);
        mpfr_div(r21104, r21080, r21103, MPFR_RNDN);
        if (mpfr_get_si(r21077, MPFR_RNDN)) { mpfr_set(r21105, r21093, MPFR_RNDN); } else { mpfr_set(r21105, r21104, MPFR_RNDN); };
        if (mpfr_get_si(r21064, MPFR_RNDN)) { mpfr_set(r21106, r21075, MPFR_RNDN); } else { mpfr_set(r21106, r21105, MPFR_RNDN); };
        return mpfr_get_d(r21106, MPFR_RNDN);
}

