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

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


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

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

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

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r8016, "2", 10, MPFR_RNDN);
        mpfr_init(r8017);
        mpfr_init(r8018);
        mpfr_init(r8019);
        mpfr_init(r8020);
        mpfr_init_set_str(r8021, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r8031);
        mpfr_init(r8032);
        mpfr_init(r8033);
}

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

static mpfr_t 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, r8078, r8079, r8080;

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

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

static mpfr_t 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, r8125, r8126, r8127;

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

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

