#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Toniolo and Linder, Equation (13)";

double f_if(float n, float U, float t, float l, float Om, float U_) {
        float r7786 = 2;
        float r7787 = n;
        float r7788 = r7786 * r7787;
        float r7789 = U;
        float r7790 = r7788 * r7789;
        float r7791 = t;
        float r7792 = l;
        float r7793 = r7792 * r7792;
        float r7794 = Om;
        float r7795 = r7793 / r7794;
        float r7796 = r7786 * r7795;
        float r7797 = r7791 - r7796;
        float r7798 = r7792 / r7794;
        float r7799 = pow(r7798, r7786);
        float r7800 = r7787 * r7799;
        float r7801 = U_;
        float r7802 = r7789 - r7801;
        float r7803 = r7800 * r7802;
        float r7804 = r7797 - r7803;
        float r7805 = r7790 * r7804;
        float r7806 = sqrt(r7805);
        return r7806;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r7807 = 2;
        double r7808 = n;
        double r7809 = r7807 * r7808;
        double r7810 = U;
        double r7811 = r7809 * r7810;
        double r7812 = t;
        double r7813 = l;
        double r7814 = r7813 * r7813;
        double r7815 = Om;
        double r7816 = r7814 / r7815;
        double r7817 = r7807 * r7816;
        double r7818 = r7812 - r7817;
        double r7819 = r7813 / r7815;
        double r7820 = pow(r7819, r7807);
        double r7821 = r7808 * r7820;
        double r7822 = U_;
        double r7823 = r7810 - r7822;
        double r7824 = r7821 * r7823;
        double r7825 = r7818 - r7824;
        double r7826 = r7811 * r7825;
        double r7827 = sqrt(r7826);
        return r7827;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r7828 = 2;
        float r7829 = n;
        float r7830 = r7828 * r7829;
        float r7831 = U;
        float r7832 = t;
        float r7833 = l;
        float r7834 = r7833 * r7833;
        float r7835 = Om;
        float r7836 = r7834 / r7835;
        float r7837 = r7828 * r7836;
        float r7838 = r7832 - r7837;
        float r7839 = r7833 / r7835;
        float r7840 = pow(r7839, r7828);
        float r7841 = r7829 * r7840;
        float r7842 = U_;
        float r7843 = r7831 - r7842;
        float r7844 = r7841 * r7843;
        float r7845 = r7838 - r7844;
        float r7846 = r7831 * r7845;
        float r7847 = r7830 * r7846;
        float r7848 = 4.2799990785414e-313;
        bool r7849 = r7847 <= r7848;
        float r7850 = r7831 * r7829;
        float r7851 = r7850 * r7828;
        float r7852 = r7839 * r7829;
        float r7853 = r7839 * r7852;
        float r7854 = r7842 - r7831;
        float r7855 = r7828 / r7835;
        float r7856 = r7855 * r7834;
        float r7857 = r7832 - r7856;
        float r7858 = fma(r7853, r7854, r7857);
        float r7859 = r7851 * r7858;
        float r7860 = r7829 * r7828;
        float r7861 = 0;
        float r7862 = r7831 * r7861;
        float r7863 = r7860 * r7862;
        float r7864 = r7859 + r7863;
        float r7865 = sqrt(r7864);
        float r7866 = 3.4777793799200777e+248;
        bool r7867 = r7847 <= r7866;
        float r7868 = sqrt(r7847);
        float r7869 = 1;
        float r7870 = sqrt(r7869);
        float r7871 = r7830 * r7831;
        float r7872 = r7829 * r7854;
        float r7873 = r7839 * r7839;
        float r7874 = fma(r7872, r7873, r7832);
        float r7875 = r7833 * r7829;
        float r7876 = r7831 * r7828;
        float r7877 = r7875 * r7876;
        float r7878 = -r7828;
        float r7879 = r7835 / r7833;
        float r7880 = r7878 / r7879;
        float r7881 = r7877 * r7880;
        float r7882 = fma(r7871, r7874, r7881);
        float r7883 = sqrt(r7882);
        float r7884 = r7870 * r7883;
        float r7885 = r7867 ? r7868 : r7884;
        float r7886 = r7849 ? r7865 : r7885;
        return r7886;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r7887 = 2;
        double r7888 = n;
        double r7889 = r7887 * r7888;
        double r7890 = U;
        double r7891 = t;
        double r7892 = l;
        double r7893 = r7892 * r7892;
        double r7894 = Om;
        double r7895 = r7893 / r7894;
        double r7896 = r7887 * r7895;
        double r7897 = r7891 - r7896;
        double r7898 = r7892 / r7894;
        double r7899 = pow(r7898, r7887);
        double r7900 = r7888 * r7899;
        double r7901 = U_;
        double r7902 = r7890 - r7901;
        double r7903 = r7900 * r7902;
        double r7904 = r7897 - r7903;
        double r7905 = r7890 * r7904;
        double r7906 = r7889 * r7905;
        double r7907 = 4.2799990785414e-313;
        bool r7908 = r7906 <= r7907;
        double r7909 = r7890 * r7888;
        double r7910 = r7909 * r7887;
        double r7911 = r7898 * r7888;
        double r7912 = r7898 * r7911;
        double r7913 = r7901 - r7890;
        double r7914 = r7887 / r7894;
        double r7915 = r7914 * r7893;
        double r7916 = r7891 - r7915;
        double r7917 = fma(r7912, r7913, r7916);
        double r7918 = r7910 * r7917;
        double r7919 = r7888 * r7887;
        double r7920 = 0;
        double r7921 = r7890 * r7920;
        double r7922 = r7919 * r7921;
        double r7923 = r7918 + r7922;
        double r7924 = sqrt(r7923);
        double r7925 = 3.4777793799200777e+248;
        bool r7926 = r7906 <= r7925;
        double r7927 = sqrt(r7906);
        double r7928 = 1;
        double r7929 = sqrt(r7928);
        double r7930 = r7889 * r7890;
        double r7931 = r7888 * r7913;
        double r7932 = r7898 * r7898;
        double r7933 = fma(r7931, r7932, r7891);
        double r7934 = r7892 * r7888;
        double r7935 = r7890 * r7887;
        double r7936 = r7934 * r7935;
        double r7937 = -r7887;
        double r7938 = r7894 / r7892;
        double r7939 = r7937 / r7938;
        double r7940 = r7936 * r7939;
        double r7941 = fma(r7930, r7933, r7940);
        double r7942 = sqrt(r7941);
        double r7943 = r7929 * r7942;
        double r7944 = r7926 ? r7927 : r7943;
        double r7945 = r7908 ? r7924 : r7944;
        return r7945;
}

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 r7946, r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960, r7961, r7962, r7963, r7964, r7965, r7966;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7946, "2", 10, MPFR_RNDN);
        mpfr_init(r7947);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init(r7953);
        mpfr_init(r7954);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
        mpfr_init(r7961);
        mpfr_init(r7962);
        mpfr_init(r7963);
        mpfr_init(r7964);
        mpfr_init(r7965);
        mpfr_init(r7966);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7947, n, MPFR_RNDN);
        mpfr_mul(r7948, r7946, r7947, MPFR_RNDN);
        mpfr_set_d(r7949, U, MPFR_RNDN);
        mpfr_mul(r7950, r7948, r7949, MPFR_RNDN);
        mpfr_set_d(r7951, t, MPFR_RNDN);
        mpfr_set_d(r7952, l, MPFR_RNDN);
        mpfr_mul(r7953, r7952, r7952, MPFR_RNDN);
        mpfr_set_d(r7954, Om, MPFR_RNDN);
        mpfr_div(r7955, r7953, r7954, MPFR_RNDN);
        mpfr_mul(r7956, r7946, r7955, MPFR_RNDN);
        mpfr_sub(r7957, r7951, r7956, MPFR_RNDN);
        mpfr_div(r7958, r7952, r7954, MPFR_RNDN);
        mpfr_pow(r7959, r7958, r7946, MPFR_RNDN);
        mpfr_mul(r7960, r7947, r7959, MPFR_RNDN);
        mpfr_set_d(r7961, U_, MPFR_RNDN);
        mpfr_sub(r7962, r7949, r7961, MPFR_RNDN);
        mpfr_mul(r7963, r7960, r7962, MPFR_RNDN);
        mpfr_sub(r7964, r7957, r7963, MPFR_RNDN);
        mpfr_mul(r7965, r7950, r7964, MPFR_RNDN);
        mpfr_sqrt(r7966, r7965, MPFR_RNDN);
        return mpfr_get_d(r7966, MPFR_RNDN);
}

static mpfr_t r7967, r7968, r7969, r7970, r7971, r7972, r7973, r7974, 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, r8023, r8024, r8025;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7967, "2", 10, MPFR_RNDN);
        mpfr_init(r7968);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init(r7974);
        mpfr_init(r7975);
        mpfr_init(r7976);
        mpfr_init(r7977);
        mpfr_init(r7978);
        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_set_str(r7987, "4.2799990785414e-313", 10, MPFR_RNDN);
        mpfr_init(r7988);
        mpfr_init(r7989);
        mpfr_init(r7990);
        mpfr_init(r7991);
        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_set_str(r8000, "0", 10, MPFR_RNDN);
        mpfr_init(r8001);
        mpfr_init(r8002);
        mpfr_init(r8003);
        mpfr_init(r8004);
        mpfr_init_set_str(r8005, "3.4777793799200777e+248", 10, MPFR_RNDN);
        mpfr_init(r8006);
        mpfr_init(r8007);
        mpfr_init_set_str(r8008, "1", 10, MPFR_RNDN);
        mpfr_init(r8009);
        mpfr_init(r8010);
        mpfr_init(r8011);
        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);
        mpfr_init(r8023);
        mpfr_init(r8024);
        mpfr_init(r8025);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7968, n, MPFR_RNDN);
        mpfr_mul(r7969, r7967, r7968, MPFR_RNDN);
        mpfr_set_d(r7970, U, MPFR_RNDN);
        mpfr_set_d(r7971, t, MPFR_RNDN);
        mpfr_set_d(r7972, l, MPFR_RNDN);
        mpfr_mul(r7973, r7972, r7972, MPFR_RNDN);
        mpfr_set_d(r7974, Om, MPFR_RNDN);
        mpfr_div(r7975, r7973, r7974, MPFR_RNDN);
        mpfr_mul(r7976, r7967, r7975, MPFR_RNDN);
        mpfr_sub(r7977, r7971, r7976, MPFR_RNDN);
        mpfr_div(r7978, r7972, r7974, MPFR_RNDN);
        mpfr_pow(r7979, r7978, r7967, MPFR_RNDN);
        mpfr_mul(r7980, r7968, r7979, MPFR_RNDN);
        mpfr_set_d(r7981, U_, MPFR_RNDN);
        mpfr_sub(r7982, r7970, r7981, MPFR_RNDN);
        mpfr_mul(r7983, r7980, r7982, MPFR_RNDN);
        mpfr_sub(r7984, r7977, r7983, MPFR_RNDN);
        mpfr_mul(r7985, r7970, r7984, MPFR_RNDN);
        mpfr_mul(r7986, r7969, r7985, MPFR_RNDN);
        ;
        mpfr_set_si(r7988, mpfr_cmp(r7986, r7987) <= 0, MPFR_RNDN);
        mpfr_mul(r7989, r7970, r7968, MPFR_RNDN);
        mpfr_mul(r7990, r7989, r7967, MPFR_RNDN);
        mpfr_mul(r7991, r7978, r7968, MPFR_RNDN);
        mpfr_mul(r7992, r7978, r7991, MPFR_RNDN);
        mpfr_sub(r7993, r7981, r7970, MPFR_RNDN);
        mpfr_div(r7994, r7967, r7974, MPFR_RNDN);
        mpfr_mul(r7995, r7994, r7973, MPFR_RNDN);
        mpfr_sub(r7996, r7971, r7995, MPFR_RNDN);
        mpfr_fma(r7997, r7992, r7993, r7996, MPFR_RNDN);
        mpfr_mul(r7998, r7990, r7997, MPFR_RNDN);
        mpfr_mul(r7999, r7968, r7967, MPFR_RNDN);
        ;
        mpfr_mul(r8001, r7970, r8000, MPFR_RNDN);
        mpfr_mul(r8002, r7999, r8001, MPFR_RNDN);
        mpfr_add(r8003, r7998, r8002, MPFR_RNDN);
        mpfr_sqrt(r8004, r8003, MPFR_RNDN);
        ;
        mpfr_set_si(r8006, mpfr_cmp(r7986, r8005) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8007, r7986, MPFR_RNDN);
        ;
        mpfr_sqrt(r8009, r8008, MPFR_RNDN);
        mpfr_mul(r8010, r7969, r7970, MPFR_RNDN);
        mpfr_mul(r8011, r7968, r7993, MPFR_RNDN);
        mpfr_mul(r8012, r7978, r7978, MPFR_RNDN);
        mpfr_fma(r8013, r8011, r8012, r7971, MPFR_RNDN);
        mpfr_mul(r8014, r7972, r7968, MPFR_RNDN);
        mpfr_mul(r8015, r7970, r7967, MPFR_RNDN);
        mpfr_mul(r8016, r8014, r8015, MPFR_RNDN);
        mpfr_neg(r8017, r7967, MPFR_RNDN);
        mpfr_div(r8018, r7974, r7972, MPFR_RNDN);
        mpfr_div(r8019, r8017, r8018, MPFR_RNDN);
        mpfr_mul(r8020, r8016, r8019, MPFR_RNDN);
        mpfr_fma(r8021, r8010, r8013, r8020, MPFR_RNDN);
        mpfr_sqrt(r8022, r8021, MPFR_RNDN);
        mpfr_mul(r8023, r8009, r8022, MPFR_RNDN);
        if (mpfr_get_si(r8006, MPFR_RNDN)) { mpfr_set(r8024, r8007, MPFR_RNDN); } else { mpfr_set(r8024, r8023, MPFR_RNDN); };
        if (mpfr_get_si(r7988, MPFR_RNDN)) { mpfr_set(r8025, r8004, MPFR_RNDN); } else { mpfr_set(r8025, r8024, MPFR_RNDN); };
        return mpfr_get_d(r8025, MPFR_RNDN);
}

static mpfr_t r8026, r8027, r8028, r8029, r8030, 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, r8078, r8079, r8080, r8081, r8082, r8083, r8084;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8026, "2", 10, MPFR_RNDN);
        mpfr_init(r8027);
        mpfr_init(r8028);
        mpfr_init(r8029);
        mpfr_init(r8030);
        mpfr_init(r8031);
        mpfr_init(r8032);
        mpfr_init(r8033);
        mpfr_init(r8034);
        mpfr_init(r8035);
        mpfr_init(r8036);
        mpfr_init(r8037);
        mpfr_init(r8038);
        mpfr_init(r8039);
        mpfr_init(r8040);
        mpfr_init(r8041);
        mpfr_init(r8042);
        mpfr_init(r8043);
        mpfr_init(r8044);
        mpfr_init(r8045);
        mpfr_init_set_str(r8046, "4.2799990785414e-313", 10, MPFR_RNDN);
        mpfr_init(r8047);
        mpfr_init(r8048);
        mpfr_init(r8049);
        mpfr_init(r8050);
        mpfr_init(r8051);
        mpfr_init(r8052);
        mpfr_init(r8053);
        mpfr_init(r8054);
        mpfr_init(r8055);
        mpfr_init(r8056);
        mpfr_init(r8057);
        mpfr_init(r8058);
        mpfr_init_set_str(r8059, "0", 10, MPFR_RNDN);
        mpfr_init(r8060);
        mpfr_init(r8061);
        mpfr_init(r8062);
        mpfr_init(r8063);
        mpfr_init_set_str(r8064, "3.4777793799200777e+248", 10, MPFR_RNDN);
        mpfr_init(r8065);
        mpfr_init(r8066);
        mpfr_init_set_str(r8067, "1", 10, MPFR_RNDN);
        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);
        mpfr_init(r8078);
        mpfr_init(r8079);
        mpfr_init(r8080);
        mpfr_init(r8081);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init(r8084);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r8027, n, MPFR_RNDN);
        mpfr_mul(r8028, r8026, r8027, MPFR_RNDN);
        mpfr_set_d(r8029, U, MPFR_RNDN);
        mpfr_set_d(r8030, t, MPFR_RNDN);
        mpfr_set_d(r8031, l, MPFR_RNDN);
        mpfr_mul(r8032, r8031, r8031, MPFR_RNDN);
        mpfr_set_d(r8033, Om, MPFR_RNDN);
        mpfr_div(r8034, r8032, r8033, MPFR_RNDN);
        mpfr_mul(r8035, r8026, r8034, MPFR_RNDN);
        mpfr_sub(r8036, r8030, r8035, MPFR_RNDN);
        mpfr_div(r8037, r8031, r8033, MPFR_RNDN);
        mpfr_pow(r8038, r8037, r8026, MPFR_RNDN);
        mpfr_mul(r8039, r8027, r8038, MPFR_RNDN);
        mpfr_set_d(r8040, U_, MPFR_RNDN);
        mpfr_sub(r8041, r8029, r8040, MPFR_RNDN);
        mpfr_mul(r8042, r8039, r8041, MPFR_RNDN);
        mpfr_sub(r8043, r8036, r8042, MPFR_RNDN);
        mpfr_mul(r8044, r8029, r8043, MPFR_RNDN);
        mpfr_mul(r8045, r8028, r8044, MPFR_RNDN);
        ;
        mpfr_set_si(r8047, mpfr_cmp(r8045, r8046) <= 0, MPFR_RNDN);
        mpfr_mul(r8048, r8029, r8027, MPFR_RNDN);
        mpfr_mul(r8049, r8048, r8026, MPFR_RNDN);
        mpfr_mul(r8050, r8037, r8027, MPFR_RNDN);
        mpfr_mul(r8051, r8037, r8050, MPFR_RNDN);
        mpfr_sub(r8052, r8040, r8029, MPFR_RNDN);
        mpfr_div(r8053, r8026, r8033, MPFR_RNDN);
        mpfr_mul(r8054, r8053, r8032, MPFR_RNDN);
        mpfr_sub(r8055, r8030, r8054, MPFR_RNDN);
        mpfr_fma(r8056, r8051, r8052, r8055, MPFR_RNDN);
        mpfr_mul(r8057, r8049, r8056, MPFR_RNDN);
        mpfr_mul(r8058, r8027, r8026, MPFR_RNDN);
        ;
        mpfr_mul(r8060, r8029, r8059, MPFR_RNDN);
        mpfr_mul(r8061, r8058, r8060, MPFR_RNDN);
        mpfr_add(r8062, r8057, r8061, MPFR_RNDN);
        mpfr_sqrt(r8063, r8062, MPFR_RNDN);
        ;
        mpfr_set_si(r8065, mpfr_cmp(r8045, r8064) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8066, r8045, MPFR_RNDN);
        ;
        mpfr_sqrt(r8068, r8067, MPFR_RNDN);
        mpfr_mul(r8069, r8028, r8029, MPFR_RNDN);
        mpfr_mul(r8070, r8027, r8052, MPFR_RNDN);
        mpfr_mul(r8071, r8037, r8037, MPFR_RNDN);
        mpfr_fma(r8072, r8070, r8071, r8030, MPFR_RNDN);
        mpfr_mul(r8073, r8031, r8027, MPFR_RNDN);
        mpfr_mul(r8074, r8029, r8026, MPFR_RNDN);
        mpfr_mul(r8075, r8073, r8074, MPFR_RNDN);
        mpfr_neg(r8076, r8026, MPFR_RNDN);
        mpfr_div(r8077, r8033, r8031, MPFR_RNDN);
        mpfr_div(r8078, r8076, r8077, MPFR_RNDN);
        mpfr_mul(r8079, r8075, r8078, MPFR_RNDN);
        mpfr_fma(r8080, r8069, r8072, r8079, MPFR_RNDN);
        mpfr_sqrt(r8081, r8080, MPFR_RNDN);
        mpfr_mul(r8082, r8068, r8081, MPFR_RNDN);
        if (mpfr_get_si(r8065, MPFR_RNDN)) { mpfr_set(r8083, r8066, MPFR_RNDN); } else { mpfr_set(r8083, r8082, MPFR_RNDN); };
        if (mpfr_get_si(r8047, MPFR_RNDN)) { mpfr_set(r8084, r8063, MPFR_RNDN); } else { mpfr_set(r8084, r8083, MPFR_RNDN); };
        return mpfr_get_d(r8084, MPFR_RNDN);
}

