#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 r7777 = 2.0f;
        float r7778 = sqrt(r7777);
        float r7779 = t;
        float r7780 = r7778 * r7779;
        float r7781 = x;
        float r7782 = 1.0f;
        float r7783 = r7781 + r7782;
        float r7784 = r7781 - r7782;
        float r7785 = r7783 / r7784;
        float r7786 = l;
        float r7787 = r7786 * r7786;
        float r7788 = r7779 * r7779;
        float r7789 = r7777 * r7788;
        float r7790 = r7787 + r7789;
        float r7791 = r7785 * r7790;
        float r7792 = r7791 - r7787;
        float r7793 = sqrt(r7792);
        float r7794 = r7780 / r7793;
        return r7794;
}

double f_id(double x, double l, double t) {
        double r7795 = 2.0;
        double r7796 = sqrt(r7795);
        double r7797 = t;
        double r7798 = r7796 * r7797;
        double r7799 = x;
        double r7800 = 1.0;
        double r7801 = r7799 + r7800;
        double r7802 = r7799 - r7800;
        double r7803 = r7801 / r7802;
        double r7804 = l;
        double r7805 = r7804 * r7804;
        double r7806 = r7797 * r7797;
        double r7807 = r7795 * r7806;
        double r7808 = r7805 + r7807;
        double r7809 = r7803 * r7808;
        double r7810 = r7809 - r7805;
        double r7811 = sqrt(r7810);
        double r7812 = r7798 / r7811;
        return r7812;
}


double f_of(float x, float l, float t) {
        float r7813 = t;
        float r7814 = -8.426343753619193e+55f;
        bool r7815 = r7813 <= r7814;
        float r7816 = 2.0f;
        float r7817 = sqrt(r7816);
        float r7818 = r7817 * r7813;
        float r7819 = -r7817;
        float r7820 = x;
        float r7821 = r7816 / r7820;
        float r7822 = r7821 / r7817;
        float r7823 = r7819 - r7822;
        float r7824 = r7813 * r7823;
        float r7825 = r7818 / r7824;
        float r7826 = -1.5688487797816682e-160f;
        bool r7827 = r7813 <= r7826;
        float r7828 = r7813 * r7813;
        float r7829 = 4.0f;
        float r7830 = r7829 / r7820;
        float r7831 = r7816 + r7830;
        float r7832 = r7828 * r7831;
        float r7833 = l;
        float r7834 = r7833 * r7816;
        float r7835 = r7820 / r7833;
        float r7836 = r7834 / r7835;
        float r7837 = r7832 + r7836;
        float r7838 = sqrt(r7837);
        float r7839 = r7818 / r7838;
        float r7840 = -8.120657760509964e-243f;
        bool r7841 = r7813 <= r7840;
        float r7842 = 4.8469871076495545e-247f;
        bool r7843 = r7813 <= r7842;
        float r7844 = sqrt(r7838);
        float r7845 = r7844 * r7844;
        float r7846 = r7818 / r7845;
        float r7847 = 9.269948338767597e-174f;
        bool r7848 = r7813 <= r7847;
        float r7849 = 1.2204838220989629e+145f;
        bool r7850 = r7813 <= r7849;
        float r7851 = !r7850;
        bool r7852 = r7848 || r7851;
        float r7853 = r7817 + r7822;
        float r7854 = r7853 * r7813;
        float r7855 = r7818 / r7854;
        float r7856 = r7852 ? r7855 : r7839;
        float r7857 = r7843 ? r7846 : r7856;
        float r7858 = r7841 ? r7825 : r7857;
        float r7859 = r7827 ? r7839 : r7858;
        float r7860 = r7815 ? r7825 : r7859;
        return r7860;
}

double f_od(double x, double l, double t) {
        double r7861 = t;
        double r7862 = -8.426343753619193e+55;
        bool r7863 = r7861 <= r7862;
        double r7864 = 2.0;
        double r7865 = sqrt(r7864);
        double r7866 = r7865 * r7861;
        double r7867 = -r7865;
        double r7868 = x;
        double r7869 = r7864 / r7868;
        double r7870 = r7869 / r7865;
        double r7871 = r7867 - r7870;
        double r7872 = r7861 * r7871;
        double r7873 = r7866 / r7872;
        double r7874 = -1.5688487797816682e-160;
        bool r7875 = r7861 <= r7874;
        double r7876 = r7861 * r7861;
        double r7877 = 4.0;
        double r7878 = r7877 / r7868;
        double r7879 = r7864 + r7878;
        double r7880 = r7876 * r7879;
        double r7881 = l;
        double r7882 = r7881 * r7864;
        double r7883 = r7868 / r7881;
        double r7884 = r7882 / r7883;
        double r7885 = r7880 + r7884;
        double r7886 = sqrt(r7885);
        double r7887 = r7866 / r7886;
        double r7888 = -8.120657760509964e-243;
        bool r7889 = r7861 <= r7888;
        double r7890 = 4.8469871076495545e-247;
        bool r7891 = r7861 <= r7890;
        double r7892 = sqrt(r7886);
        double r7893 = r7892 * r7892;
        double r7894 = r7866 / r7893;
        double r7895 = 9.269948338767597e-174;
        bool r7896 = r7861 <= r7895;
        double r7897 = 1.2204838220989629e+145;
        bool r7898 = r7861 <= r7897;
        double r7899 = !r7898;
        bool r7900 = r7896 || r7899;
        double r7901 = r7865 + r7870;
        double r7902 = r7901 * r7861;
        double r7903 = r7866 / r7902;
        double r7904 = r7900 ? r7903 : r7887;
        double r7905 = r7891 ? r7894 : r7904;
        double r7906 = r7889 ? r7873 : r7905;
        double r7907 = r7875 ? r7887 : r7906;
        double r7908 = r7863 ? r7873 : r7907;
        return r7908;
}

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 r7909, r7910, r7911, r7912, r7913, r7914, r7915, r7916, r7917, r7918, r7919, r7920, r7921, r7922, r7923, r7924, r7925, r7926;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1360);
        mpfr_init_set_str(r7909, "2", 10, MPFR_RNDN);
        mpfr_init(r7910);
        mpfr_init(r7911);
        mpfr_init(r7912);
        mpfr_init(r7913);
        mpfr_init_set_str(r7914, "1", 10, MPFR_RNDN);
        mpfr_init(r7915);
        mpfr_init(r7916);
        mpfr_init(r7917);
        mpfr_init(r7918);
        mpfr_init(r7919);
        mpfr_init(r7920);
        mpfr_init(r7921);
        mpfr_init(r7922);
        mpfr_init(r7923);
        mpfr_init(r7924);
        mpfr_init(r7925);
        mpfr_init(r7926);
}

double f_im(double x, double l, double t) {
        ;
        mpfr_sqrt(r7910, r7909, MPFR_RNDN);
        mpfr_set_d(r7911, t, MPFR_RNDN);
        mpfr_mul(r7912, r7910, r7911, MPFR_RNDN);
        mpfr_set_d(r7913, x, MPFR_RNDN);
        ;
        mpfr_add(r7915, r7913, r7914, MPFR_RNDN);
        mpfr_sub(r7916, r7913, r7914, MPFR_RNDN);
        mpfr_div(r7917, r7915, r7916, MPFR_RNDN);
        mpfr_set_d(r7918, l, MPFR_RNDN);
        mpfr_mul(r7919, r7918, r7918, MPFR_RNDN);
        mpfr_mul(r7920, r7911, r7911, MPFR_RNDN);
        mpfr_mul(r7921, r7909, r7920, MPFR_RNDN);
        mpfr_add(r7922, r7919, r7921, MPFR_RNDN);
        mpfr_mul(r7923, r7917, r7922, MPFR_RNDN);
        mpfr_sub(r7924, r7923, r7919, MPFR_RNDN);
        mpfr_sqrt(r7925, r7924, MPFR_RNDN);
        mpfr_div(r7926, r7912, r7925, MPFR_RNDN);
        return mpfr_get_d(r7926, MPFR_RNDN);
}

static mpfr_t r7927, r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963, r7964, r7965, r7966, r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7927);
        mpfr_init_set_str(r7928, "-8.426343753619193e+55", 10, MPFR_RNDN);
        mpfr_init(r7929);
        mpfr_init_set_str(r7930, "2", 10, MPFR_RNDN);
        mpfr_init(r7931);
        mpfr_init(r7932);
        mpfr_init(r7933);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init(r7939);
        mpfr_init_set_str(r7940, "-1.5688487797816682e-160", 10, MPFR_RNDN);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init_set_str(r7943, "4", 10, MPFR_RNDN);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init_set_str(r7954, "-8.120657760509964e-243", 10, MPFR_RNDN);
        mpfr_init(r7955);
        mpfr_init_set_str(r7956, "4.8469871076495545e-247", 10, MPFR_RNDN);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
        mpfr_init_set_str(r7961, "9.269948338767597e-174", 10, MPFR_RNDN);
        mpfr_init(r7962);
        mpfr_init_set_str(r7963, "1.2204838220989629e+145", 10, MPFR_RNDN);
        mpfr_init(r7964);
        mpfr_init(r7965);
        mpfr_init(r7966);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init(r7974);
}

double f_fm(double x, double l, double t) {
        mpfr_set_d(r7927, t, MPFR_RNDN);
        ;
        mpfr_set_si(r7929, mpfr_cmp(r7927, r7928) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r7931, r7930, MPFR_RNDN);
        mpfr_mul(r7932, r7931, r7927, MPFR_RNDN);
        mpfr_neg(r7933, r7931, MPFR_RNDN);
        mpfr_set_d(r7934, x, MPFR_RNDN);
        mpfr_div(r7935, r7930, r7934, MPFR_RNDN);
        mpfr_div(r7936, r7935, r7931, MPFR_RNDN);
        mpfr_sub(r7937, r7933, r7936, MPFR_RNDN);
        mpfr_mul(r7938, r7927, r7937, MPFR_RNDN);
        mpfr_div(r7939, r7932, r7938, MPFR_RNDN);
        ;
        mpfr_set_si(r7941, mpfr_cmp(r7927, r7940) <= 0, MPFR_RNDN);
        mpfr_mul(r7942, r7927, r7927, MPFR_RNDN);
        ;
        mpfr_div(r7944, r7943, r7934, MPFR_RNDN);
        mpfr_add(r7945, r7930, r7944, MPFR_RNDN);
        mpfr_mul(r7946, r7942, r7945, MPFR_RNDN);
        mpfr_set_d(r7947, l, MPFR_RNDN);
        mpfr_mul(r7948, r7947, r7930, MPFR_RNDN);
        mpfr_div(r7949, r7934, r7947, MPFR_RNDN);
        mpfr_div(r7950, r7948, r7949, MPFR_RNDN);
        mpfr_add(r7951, r7946, r7950, MPFR_RNDN);
        mpfr_sqrt(r7952, r7951, MPFR_RNDN);
        mpfr_div(r7953, r7932, r7952, MPFR_RNDN);
        ;
        mpfr_set_si(r7955, mpfr_cmp(r7927, r7954) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7957, mpfr_cmp(r7927, r7956) <= 0, MPFR_RNDN);
        mpfr_sqrt(r7958, r7952, MPFR_RNDN);
        mpfr_mul(r7959, r7958, r7958, MPFR_RNDN);
        mpfr_div(r7960, r7932, r7959, MPFR_RNDN);
        ;
        mpfr_set_si(r7962, mpfr_cmp(r7927, r7961) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r7964, mpfr_cmp(r7927, r7963) <= 0, MPFR_RNDN);
        mpfr_set_si(r7965, !mpfr_get_si(r7964, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r7966, mpfr_get_si(r7962, MPFR_RNDN) || mpfr_get_si(r7965, MPFR_RNDN), MPFR_RNDN);
        mpfr_add(r7967, r7931, r7936, MPFR_RNDN);
        mpfr_mul(r7968, r7967, r7927, MPFR_RNDN);
        mpfr_div(r7969, r7932, r7968, MPFR_RNDN);
        if (mpfr_get_si(r7966, MPFR_RNDN)) { mpfr_set(r7970, r7969, MPFR_RNDN); } else { mpfr_set(r7970, r7953, MPFR_RNDN); };
        if (mpfr_get_si(r7957, MPFR_RNDN)) { mpfr_set(r7971, r7960, MPFR_RNDN); } else { mpfr_set(r7971, r7970, MPFR_RNDN); };
        if (mpfr_get_si(r7955, MPFR_RNDN)) { mpfr_set(r7972, r7939, MPFR_RNDN); } else { mpfr_set(r7972, r7971, MPFR_RNDN); };
        if (mpfr_get_si(r7941, MPFR_RNDN)) { mpfr_set(r7973, r7953, MPFR_RNDN); } else { mpfr_set(r7973, r7972, MPFR_RNDN); };
        if (mpfr_get_si(r7929, MPFR_RNDN)) { mpfr_set(r7974, r7939, MPFR_RNDN); } else { mpfr_set(r7974, r7973, MPFR_RNDN); };
        return mpfr_get_d(r7974, MPFR_RNDN);
}

static mpfr_t r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984, r7985, r7986, r7987, r7988, r7989, r7990, r7991, r7992, r7993, r7994, r7995, r7996, r7997, r7998, r7999, r8000, r8001, r8002, r8003, r8004, r8005, r8006, r8007, r8008, r8009, r8010, r8011, r8012, r8013, r8014, r8015, r8016, r8017, r8018, r8019, r8020, r8021, r8022;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1360);
        mpfr_init(r7975);
        mpfr_init_set_str(r7976, "-8.426343753619193e+55", 10, MPFR_RNDN);
        mpfr_init(r7977);
        mpfr_init_set_str(r7978, "2", 10, MPFR_RNDN);
        mpfr_init(r7979);
        mpfr_init(r7980);
        mpfr_init(r7981);
        mpfr_init(r7982);
        mpfr_init(r7983);
        mpfr_init(r7984);
        mpfr_init(r7985);
        mpfr_init(r7986);
        mpfr_init(r7987);
        mpfr_init_set_str(r7988, "-1.5688487797816682e-160", 10, MPFR_RNDN);
        mpfr_init(r7989);
        mpfr_init(r7990);
        mpfr_init_set_str(r7991, "4", 10, MPFR_RNDN);
        mpfr_init(r7992);
        mpfr_init(r7993);
        mpfr_init(r7994);
        mpfr_init(r7995);
        mpfr_init(r7996);
        mpfr_init(r7997);
        mpfr_init(r7998);
        mpfr_init(r7999);
        mpfr_init(r8000);
        mpfr_init(r8001);
        mpfr_init_set_str(r8002, "-8.120657760509964e-243", 10, MPFR_RNDN);
        mpfr_init(r8003);
        mpfr_init_set_str(r8004, "4.8469871076495545e-247", 10, MPFR_RNDN);
        mpfr_init(r8005);
        mpfr_init(r8006);
        mpfr_init(r8007);
        mpfr_init(r8008);
        mpfr_init_set_str(r8009, "9.269948338767597e-174", 10, MPFR_RNDN);
        mpfr_init(r8010);
        mpfr_init_set_str(r8011, "1.2204838220989629e+145", 10, MPFR_RNDN);
        mpfr_init(r8012);
        mpfr_init(r8013);
        mpfr_init(r8014);
        mpfr_init(r8015);
        mpfr_init(r8016);
        mpfr_init(r8017);
        mpfr_init(r8018);
        mpfr_init(r8019);
        mpfr_init(r8020);
        mpfr_init(r8021);
        mpfr_init(r8022);
}

double f_dm(double x, double l, double t) {
        mpfr_set_d(r7975, t, MPFR_RNDN);
        ;
        mpfr_set_si(r7977, mpfr_cmp(r7975, r7976) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r7979, r7978, MPFR_RNDN);
        mpfr_mul(r7980, r7979, r7975, MPFR_RNDN);
        mpfr_neg(r7981, r7979, MPFR_RNDN);
        mpfr_set_d(r7982, x, MPFR_RNDN);
        mpfr_div(r7983, r7978, r7982, MPFR_RNDN);
        mpfr_div(r7984, r7983, r7979, MPFR_RNDN);
        mpfr_sub(r7985, r7981, r7984, MPFR_RNDN);
        mpfr_mul(r7986, r7975, r7985, MPFR_RNDN);
        mpfr_div(r7987, r7980, r7986, MPFR_RNDN);
        ;
        mpfr_set_si(r7989, mpfr_cmp(r7975, r7988) <= 0, MPFR_RNDN);
        mpfr_mul(r7990, r7975, r7975, MPFR_RNDN);
        ;
        mpfr_div(r7992, r7991, r7982, MPFR_RNDN);
        mpfr_add(r7993, r7978, r7992, MPFR_RNDN);
        mpfr_mul(r7994, r7990, r7993, MPFR_RNDN);
        mpfr_set_d(r7995, l, MPFR_RNDN);
        mpfr_mul(r7996, r7995, r7978, MPFR_RNDN);
        mpfr_div(r7997, r7982, r7995, MPFR_RNDN);
        mpfr_div(r7998, r7996, r7997, MPFR_RNDN);
        mpfr_add(r7999, r7994, r7998, MPFR_RNDN);
        mpfr_sqrt(r8000, r7999, MPFR_RNDN);
        mpfr_div(r8001, r7980, r8000, MPFR_RNDN);
        ;
        mpfr_set_si(r8003, mpfr_cmp(r7975, r8002) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8005, mpfr_cmp(r7975, r8004) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8006, r8000, MPFR_RNDN);
        mpfr_mul(r8007, r8006, r8006, MPFR_RNDN);
        mpfr_div(r8008, r7980, r8007, MPFR_RNDN);
        ;
        mpfr_set_si(r8010, mpfr_cmp(r7975, r8009) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r8012, mpfr_cmp(r7975, r8011) <= 0, MPFR_RNDN);
        mpfr_set_si(r8013, !mpfr_get_si(r8012, MPFR_RNDN), MPFR_RNDN);
        mpfr_set_si(r8014, mpfr_get_si(r8010, MPFR_RNDN) || mpfr_get_si(r8013, MPFR_RNDN), MPFR_RNDN);
        mpfr_add(r8015, r7979, r7984, MPFR_RNDN);
        mpfr_mul(r8016, r8015, r7975, MPFR_RNDN);
        mpfr_div(r8017, r7980, r8016, MPFR_RNDN);
        if (mpfr_get_si(r8014, MPFR_RNDN)) { mpfr_set(r8018, r8017, MPFR_RNDN); } else { mpfr_set(r8018, r8001, MPFR_RNDN); };
        if (mpfr_get_si(r8005, MPFR_RNDN)) { mpfr_set(r8019, r8008, MPFR_RNDN); } else { mpfr_set(r8019, r8018, MPFR_RNDN); };
        if (mpfr_get_si(r8003, MPFR_RNDN)) { mpfr_set(r8020, r7987, MPFR_RNDN); } else { mpfr_set(r8020, r8019, MPFR_RNDN); };
        if (mpfr_get_si(r7989, MPFR_RNDN)) { mpfr_set(r8021, r8001, MPFR_RNDN); } else { mpfr_set(r8021, r8020, MPFR_RNDN); };
        if (mpfr_get_si(r7977, MPFR_RNDN)) { mpfr_set(r8022, r7987, MPFR_RNDN); } else { mpfr_set(r8022, r8021, MPFR_RNDN); };
        return mpfr_get_d(r8022, MPFR_RNDN);
}

