#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 r7883 = 2.0f;
        float r7884 = sqrt(r7883);
        float r7885 = t;
        float r7886 = r7884 * r7885;
        float r7887 = x;
        float r7888 = 1.0f;
        float r7889 = r7887 + r7888;
        float r7890 = r7887 - r7888;
        float r7891 = r7889 / r7890;
        float r7892 = l;
        float r7893 = r7892 * r7892;
        float r7894 = r7885 * r7885;
        float r7895 = r7883 * r7894;
        float r7896 = r7893 + r7895;
        float r7897 = r7891 * r7896;
        float r7898 = r7897 - r7893;
        float r7899 = sqrt(r7898);
        float r7900 = r7886 / r7899;
        return r7900;
}

double f_id(double x, double l, double t) {
        double r7901 = 2.0;
        double r7902 = sqrt(r7901);
        double r7903 = t;
        double r7904 = r7902 * r7903;
        double r7905 = x;
        double r7906 = 1.0;
        double r7907 = r7905 + r7906;
        double r7908 = r7905 - r7906;
        double r7909 = r7907 / r7908;
        double r7910 = l;
        double r7911 = r7910 * r7910;
        double r7912 = r7903 * r7903;
        double r7913 = r7901 * r7912;
        double r7914 = r7911 + r7913;
        double r7915 = r7909 * r7914;
        double r7916 = r7915 - r7911;
        double r7917 = sqrt(r7916);
        double r7918 = r7904 / r7917;
        return r7918;
}


double f_of(float x, float l, float t) {
        float r7919 = t;
        float r7920 = -2.2101802612850843e+48f;
        bool r7921 = r7919 <= r7920;
        float r7922 = 2.0f;
        float r7923 = sqrt(r7922);
        float r7924 = r7923 * r7919;
        float r7925 = x;
        float r7926 = r7925 * r7925;
        float r7927 = r7919 / r7926;
        float r7928 = 1.0f;
        float r7929 = r7928 / r7923;
        float r7930 = r7922 / r7923;
        float r7931 = r7929 - r7930;
        float r7932 = r7922 / r7925;
        float r7933 = -r7919;
        float r7934 = r7933 / r7923;
        float r7935 = r7933 * r7923;
        float r7936 = fma(r7932, r7934, r7935);
        float r7937 = fma(r7927, r7931, r7936);
        float r7938 = r7924 / r7937;
        float r7939 = -7.784042218872189e-205f;
        bool r7940 = r7919 <= r7939;
        float r7941 = l;
        float r7942 = r7941 / r7925;
        float r7943 = r7919 * r7919;
        float r7944 = fma(r7942, r7941, r7943);
        float r7945 = 4.0f;
        float r7946 = r7945 * r7919;
        float r7947 = r7919 / r7925;
        float r7948 = r7946 * r7947;
        float r7949 = fma(r7922, r7944, r7948);
        float r7950 = sqrt(r7949);
        float r7951 = r7924 / r7950;
        float r7952 = -3.4129710227704976e-251f;
        bool r7953 = r7919 <= r7952;
        float r7954 = 1.5782693359173615e+123f;
        bool r7955 = r7919 <= r7954;
        float r7956 = r7947 / r7925;
        float r7957 = r7956 + r7947;
        float r7958 = r7933 / r7926;
        float r7959 = fma(r7929, r7958, r7924);
        float r7960 = fma(r7930, r7957, r7959);
        float r7961 = r7924 / r7960;
        float r7962 = r7955 ? r7951 : r7961;
        float r7963 = r7953 ? r7938 : r7962;
        float r7964 = r7940 ? r7951 : r7963;
        float r7965 = r7921 ? r7938 : r7964;
        return r7965;
}

double f_od(double x, double l, double t) {
        double r7966 = t;
        double r7967 = -2.2101802612850843e+48;
        bool r7968 = r7966 <= r7967;
        double r7969 = 2.0;
        double r7970 = sqrt(r7969);
        double r7971 = r7970 * r7966;
        double r7972 = x;
        double r7973 = r7972 * r7972;
        double r7974 = r7966 / r7973;
        double r7975 = 1.0;
        double r7976 = r7975 / r7970;
        double r7977 = r7969 / r7970;
        double r7978 = r7976 - r7977;
        double r7979 = r7969 / r7972;
        double r7980 = -r7966;
        double r7981 = r7980 / r7970;
        double r7982 = r7980 * r7970;
        double r7983 = fma(r7979, r7981, r7982);
        double r7984 = fma(r7974, r7978, r7983);
        double r7985 = r7971 / r7984;
        double r7986 = -7.784042218872189e-205;
        bool r7987 = r7966 <= r7986;
        double r7988 = l;
        double r7989 = r7988 / r7972;
        double r7990 = r7966 * r7966;
        double r7991 = fma(r7989, r7988, r7990);
        double r7992 = 4.0;
        double r7993 = r7992 * r7966;
        double r7994 = r7966 / r7972;
        double r7995 = r7993 * r7994;
        double r7996 = fma(r7969, r7991, r7995);
        double r7997 = sqrt(r7996);
        double r7998 = r7971 / r7997;
        double r7999 = -3.4129710227704976e-251;
        bool r8000 = r7966 <= r7999;
        double r8001 = 1.5782693359173615e+123;
        bool r8002 = r7966 <= r8001;
        double r8003 = r7994 / r7972;
        double r8004 = r8003 + r7994;
        double r8005 = r7980 / r7973;
        double r8006 = fma(r7976, r8005, r7971);
        double r8007 = fma(r7977, r8004, r8006);
        double r8008 = r7971 / r8007;
        double r8009 = r8002 ? r7998 : r8008;
        double r8010 = r8000 ? r7985 : r8009;
        double r8011 = r7987 ? r7998 : r8010;
        double r8012 = r7968 ? r7985 : r8011;
        return r8012;
}

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 r8013, r8014, r8015, r8016, r8017, r8018, r8019, r8020, r8021, r8022, r8023, r8024, r8025, r8026, r8027, r8028, r8029, r8030;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8013, "2", 10, MPFR_RNDN);
        mpfr_init(r8014);
        mpfr_init(r8015);
        mpfr_init(r8016);
        mpfr_init(r8017);
        mpfr_init_set_str(r8018, "1", 10, MPFR_RNDN);
        mpfr_init(r8019);
        mpfr_init(r8020);
        mpfr_init(r8021);
        mpfr_init(r8022);
        mpfr_init(r8023);
        mpfr_init(r8024);
        mpfr_init(r8025);
        mpfr_init(r8026);
        mpfr_init(r8027);
        mpfr_init(r8028);
        mpfr_init(r8029);
        mpfr_init(r8030);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r8014, r8013, MPFR_RNDN);
        mpfr_set_d(r8015, t, MPFR_RNDN);
        mpfr_mul(r8016, r8014, r8015, MPFR_RNDN);
        mpfr_set_d(r8017, x, MPFR_RNDN);
        ;
        mpfr_add(r8019, r8017, r8018, MPFR_RNDN);
        mpfr_sub(r8020, r8017, r8018, MPFR_RNDN);
        mpfr_div(r8021, r8019, r8020, MPFR_RNDN);
        mpfr_set_d(r8022, l, MPFR_RNDN);
        mpfr_mul(r8023, r8022, r8022, MPFR_RNDN);
        mpfr_mul(r8024, r8015, r8015, MPFR_RNDN);
        mpfr_mul(r8025, r8013, r8024, MPFR_RNDN);
        mpfr_add(r8026, r8023, r8025, MPFR_RNDN);
        mpfr_mul(r8027, r8021, r8026, MPFR_RNDN);
        mpfr_sub(r8028, r8027, r8023, MPFR_RNDN);
        mpfr_sqrt(r8029, r8028, MPFR_RNDN);
        mpfr_div(r8030, r8016, r8029, MPFR_RNDN);
        return mpfr_get_d(r8030, MPFR_RNDN);
}

static mpfr_t r8031, r8032, r8033, r8034, r8035, r8036, r8037, r8038, r8039, r8040, r8041, r8042, r8043, r8044, r8045, r8046, r8047, r8048, r8049, r8050, r8051, r8052, r8053, r8054, r8055, r8056, r8057, r8058, r8059, r8060, r8061, r8062, r8063, r8064, r8065, r8066, r8067, r8068, r8069, r8070, r8071, r8072, r8073, r8074, r8075, r8076, r8077;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8031);
        mpfr_init_set_str(r8032, "-2.2101802612850843e+48", 10, MPFR_RNDN);
        mpfr_init(r8033);
        mpfr_init_set_str(r8034, "2", 10, MPFR_RNDN);
        mpfr_init(r8035);
        mpfr_init(r8036);
        mpfr_init(r8037);
        mpfr_init(r8038);
        mpfr_init(r8039);
        mpfr_init_set_str(r8040, "1", 10, MPFR_RNDN);
        mpfr_init(r8041);
        mpfr_init(r8042);
        mpfr_init(r8043);
        mpfr_init(r8044);
        mpfr_init(r8045);
        mpfr_init(r8046);
        mpfr_init(r8047);
        mpfr_init(r8048);
        mpfr_init(r8049);
        mpfr_init(r8050);
        mpfr_init_set_str(r8051, "-7.784042218872189e-205", 10, MPFR_RNDN);
        mpfr_init(r8052);
        mpfr_init(r8053);
        mpfr_init(r8054);
        mpfr_init(r8055);
        mpfr_init(r8056);
        mpfr_init_set_str(r8057, "4", 10, MPFR_RNDN);
        mpfr_init(r8058);
        mpfr_init(r8059);
        mpfr_init(r8060);
        mpfr_init(r8061);
        mpfr_init(r8062);
        mpfr_init(r8063);
        mpfr_init_set_str(r8064, "-3.4129710227704976e-251", 10, MPFR_RNDN);
        mpfr_init(r8065);
        mpfr_init_set_str(r8066, "1.5782693359173615e+123", 10, MPFR_RNDN);
        mpfr_init(r8067);
        mpfr_init(r8068);
        mpfr_init(r8069);
        mpfr_init(r8070);
        mpfr_init(r8071);
        mpfr_init(r8072);
        mpfr_init(r8073);
        mpfr_init(r8074);
        mpfr_init(r8075);
        mpfr_init(r8076);
        mpfr_init(r8077);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r8031, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8033, mpfr_cmp(r8031, r8032) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8035, r8034, MPFR_RNDN);
        mpfr_mul(r8036, r8035, r8031, MPFR_RNDN);
        mpfr_set_d(r8037, x, MPFR_RNDN);
        mpfr_mul(r8038, r8037, r8037, MPFR_RNDN);
        mpfr_div(r8039, r8031, r8038, MPFR_RNDN);
        ;
        mpfr_div(r8041, r8040, r8035, MPFR_RNDN);
        mpfr_div(r8042, r8034, r8035, MPFR_RNDN);
        mpfr_sub(r8043, r8041, r8042, MPFR_RNDN);
        mpfr_div(r8044, r8034, r8037, MPFR_RNDN);
        mpfr_neg(r8045, r8031, MPFR_RNDN);
        mpfr_div(r8046, r8045, r8035, MPFR_RNDN);
        mpfr_mul(r8047, r8045, r8035, MPFR_RNDN);
        mpfr_fma(r8048, r8044, r8046, r8047, MPFR_RNDN);
        mpfr_fma(r8049, r8039, r8043, r8048, MPFR_RNDN);
        mpfr_div(r8050, r8036, r8049, MPFR_RNDN);
        ;
        mpfr_set_si(r8052, mpfr_cmp(r8031, r8051) <= 0, MPFR_RNDN);
        mpfr_set_d(r8053, l, MPFR_RNDN);
        mpfr_div(r8054, r8053, r8037, MPFR_RNDN);
        mpfr_mul(r8055, r8031, r8031, MPFR_RNDN);
        mpfr_fma(r8056, r8054, r8053, r8055, MPFR_RNDN);
        ;
        mpfr_mul(r8058, r8057, r8031, MPFR_RNDN);
        mpfr_div(r8059, r8031, r8037, MPFR_RNDN);
        mpfr_mul(r8060, r8058, r8059, MPFR_RNDN);
        mpfr_fma(r8061, r8034, r8056, r8060, MPFR_RNDN);
        mpfr_sqrt(r8062, r8061, MPFR_RNDN);
        mpfr_div(r8063, r8036, r8062, MPFR_RNDN);
        ;
        mpfr_set_si(r8065, mpfr_cmp(r8031, r8064) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8067, mpfr_cmp(r8031, r8066) <= 0, MPFR_RNDN);
        mpfr_div(r8068, r8059, r8037, MPFR_RNDN);
        mpfr_add(r8069, r8068, r8059, MPFR_RNDN);
        mpfr_div(r8070, r8045, r8038, MPFR_RNDN);
        mpfr_fma(r8071, r8041, r8070, r8036, MPFR_RNDN);
        mpfr_fma(r8072, r8042, r8069, r8071, MPFR_RNDN);
        mpfr_div(r8073, r8036, r8072, MPFR_RNDN);
        if (mpfr_get_si(r8067, MPFR_RNDN)) { mpfr_set(r8074, r8063, MPFR_RNDN); } else { mpfr_set(r8074, r8073, MPFR_RNDN); };
        if (mpfr_get_si(r8065, MPFR_RNDN)) { mpfr_set(r8075, r8050, MPFR_RNDN); } else { mpfr_set(r8075, r8074, MPFR_RNDN); };
        if (mpfr_get_si(r8052, MPFR_RNDN)) { mpfr_set(r8076, r8063, MPFR_RNDN); } else { mpfr_set(r8076, r8075, MPFR_RNDN); };
        if (mpfr_get_si(r8033, MPFR_RNDN)) { mpfr_set(r8077, r8050, MPFR_RNDN); } else { mpfr_set(r8077, r8076, MPFR_RNDN); };
        return mpfr_get_d(r8077, MPFR_RNDN);
}

static mpfr_t r8078, r8079, r8080, r8081, r8082, r8083, r8084, r8085, r8086, r8087, r8088, r8089, r8090, r8091, r8092, r8093, r8094, r8095, r8096, r8097, r8098, r8099, r8100, r8101, r8102, r8103, r8104, r8105, r8106, r8107, r8108, r8109, r8110, r8111, r8112, r8113, r8114, r8115, r8116, r8117, r8118, r8119, r8120, r8121, r8122, r8123, r8124;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r8078);
        mpfr_init_set_str(r8079, "-2.2101802612850843e+48", 10, MPFR_RNDN);
        mpfr_init(r8080);
        mpfr_init_set_str(r8081, "2", 10, MPFR_RNDN);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init(r8084);
        mpfr_init(r8085);
        mpfr_init(r8086);
        mpfr_init_set_str(r8087, "1", 10, MPFR_RNDN);
        mpfr_init(r8088);
        mpfr_init(r8089);
        mpfr_init(r8090);
        mpfr_init(r8091);
        mpfr_init(r8092);
        mpfr_init(r8093);
        mpfr_init(r8094);
        mpfr_init(r8095);
        mpfr_init(r8096);
        mpfr_init(r8097);
        mpfr_init_set_str(r8098, "-7.784042218872189e-205", 10, MPFR_RNDN);
        mpfr_init(r8099);
        mpfr_init(r8100);
        mpfr_init(r8101);
        mpfr_init(r8102);
        mpfr_init(r8103);
        mpfr_init_set_str(r8104, "4", 10, MPFR_RNDN);
        mpfr_init(r8105);
        mpfr_init(r8106);
        mpfr_init(r8107);
        mpfr_init(r8108);
        mpfr_init(r8109);
        mpfr_init(r8110);
        mpfr_init_set_str(r8111, "-3.4129710227704976e-251", 10, MPFR_RNDN);
        mpfr_init(r8112);
        mpfr_init_set_str(r8113, "1.5782693359173615e+123", 10, MPFR_RNDN);
        mpfr_init(r8114);
        mpfr_init(r8115);
        mpfr_init(r8116);
        mpfr_init(r8117);
        mpfr_init(r8118);
        mpfr_init(r8119);
        mpfr_init(r8120);
        mpfr_init(r8121);
        mpfr_init(r8122);
        mpfr_init(r8123);
        mpfr_init(r8124);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r8078, t, MPFR_RNDN);
        ;
        mpfr_set_si(r8080, mpfr_cmp(r8078, r8079) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r8082, r8081, MPFR_RNDN);
        mpfr_mul(r8083, r8082, r8078, MPFR_RNDN);
        mpfr_set_d(r8084, x, MPFR_RNDN);
        mpfr_mul(r8085, r8084, r8084, MPFR_RNDN);
        mpfr_div(r8086, r8078, r8085, MPFR_RNDN);
        ;
        mpfr_div(r8088, r8087, r8082, MPFR_RNDN);
        mpfr_div(r8089, r8081, r8082, MPFR_RNDN);
        mpfr_sub(r8090, r8088, r8089, MPFR_RNDN);
        mpfr_div(r8091, r8081, r8084, MPFR_RNDN);
        mpfr_neg(r8092, r8078, MPFR_RNDN);
        mpfr_div(r8093, r8092, r8082, MPFR_RNDN);
        mpfr_mul(r8094, r8092, r8082, MPFR_RNDN);
        mpfr_fma(r8095, r8091, r8093, r8094, MPFR_RNDN);
        mpfr_fma(r8096, r8086, r8090, r8095, MPFR_RNDN);
        mpfr_div(r8097, r8083, r8096, MPFR_RNDN);
        ;
        mpfr_set_si(r8099, mpfr_cmp(r8078, r8098) <= 0, MPFR_RNDN);
        mpfr_set_d(r8100, l, MPFR_RNDN);
        mpfr_div(r8101, r8100, r8084, MPFR_RNDN);
        mpfr_mul(r8102, r8078, r8078, MPFR_RNDN);
        mpfr_fma(r8103, r8101, r8100, r8102, MPFR_RNDN);
        ;
        mpfr_mul(r8105, r8104, r8078, MPFR_RNDN);
        mpfr_div(r8106, r8078, r8084, MPFR_RNDN);
        mpfr_mul(r8107, r8105, r8106, MPFR_RNDN);
        mpfr_fma(r8108, r8081, r8103, r8107, MPFR_RNDN);
        mpfr_sqrt(r8109, r8108, MPFR_RNDN);
        mpfr_div(r8110, r8083, r8109, MPFR_RNDN);
        ;
        mpfr_set_si(r8112, mpfr_cmp(r8078, r8111) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8114, mpfr_cmp(r8078, r8113) <= 0, MPFR_RNDN);
        mpfr_div(r8115, r8106, r8084, MPFR_RNDN);
        mpfr_add(r8116, r8115, r8106, MPFR_RNDN);
        mpfr_div(r8117, r8092, r8085, MPFR_RNDN);
        mpfr_fma(r8118, r8088, r8117, r8083, MPFR_RNDN);
        mpfr_fma(r8119, r8089, r8116, r8118, MPFR_RNDN);
        mpfr_div(r8120, r8083, r8119, MPFR_RNDN);
        if (mpfr_get_si(r8114, MPFR_RNDN)) { mpfr_set(r8121, r8110, MPFR_RNDN); } else { mpfr_set(r8121, r8120, MPFR_RNDN); };
        if (mpfr_get_si(r8112, MPFR_RNDN)) { mpfr_set(r8122, r8097, MPFR_RNDN); } else { mpfr_set(r8122, r8121, MPFR_RNDN); };
        if (mpfr_get_si(r8099, MPFR_RNDN)) { mpfr_set(r8123, r8110, MPFR_RNDN); } else { mpfr_set(r8123, r8122, MPFR_RNDN); };
        if (mpfr_get_si(r8080, MPFR_RNDN)) { mpfr_set(r8124, r8097, MPFR_RNDN); } else { mpfr_set(r8124, r8123, MPFR_RNDN); };
        return mpfr_get_d(r8124, MPFR_RNDN);
}

