#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 = r7830 * r7831;
        float r7833 = -2.4556303168677174e-237;
        bool r7834 = r7832 <= r7833;
        float r7835 = t;
        float r7836 = l;
        float r7837 = Om;
        float r7838 = r7836 / r7837;
        float r7839 = r7836 * r7828;
        float r7840 = r7838 * r7839;
        float r7841 = r7835 - r7840;
        float r7842 = U_;
        float r7843 = r7831 - r7842;
        float r7844 = r7843 * r7829;
        float r7845 = r7838 * r7838;
        float r7846 = r7844 * r7845;
        float r7847 = r7841 - r7846;
        float r7848 = r7832 * r7847;
        float r7849 = sqrt(r7848);
        float r7850 = cbrt(r7849);
        float r7851 = r7850 * r7850;
        float r7852 = r7851 * r7850;
        float r7853 = 4.2298195104584e-318;
        bool r7854 = r7832 <= r7853;
        float r7855 = r7836 * r7836;
        float r7856 = r7855 / r7837;
        float r7857 = r7828 * r7856;
        float r7858 = r7835 - r7857;
        float r7859 = r7838 * r7843;
        float r7860 = r7838 * r7829;
        float r7861 = r7859 * r7860;
        float r7862 = 3;
        float r7863 = pow(r7861, r7862);
        float r7864 = cbrt(r7863);
        float r7865 = r7858 - r7864;
        float r7866 = r7831 * r7865;
        float r7867 = r7830 * r7866;
        float r7868 = sqrt(r7867);
        float r7869 = sqrt(r7832);
        float r7870 = sqrt(r7847);
        float r7871 = r7869 * r7870;
        float r7872 = r7854 ? r7868 : r7871;
        float r7873 = r7834 ? r7852 : r7872;
        return r7873;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r7874 = 2;
        double r7875 = n;
        double r7876 = r7874 * r7875;
        double r7877 = U;
        double r7878 = r7876 * r7877;
        double r7879 = -2.4556303168677174e-237;
        bool r7880 = r7878 <= r7879;
        double r7881 = t;
        double r7882 = l;
        double r7883 = Om;
        double r7884 = r7882 / r7883;
        double r7885 = r7882 * r7874;
        double r7886 = r7884 * r7885;
        double r7887 = r7881 - r7886;
        double r7888 = U_;
        double r7889 = r7877 - r7888;
        double r7890 = r7889 * r7875;
        double r7891 = r7884 * r7884;
        double r7892 = r7890 * r7891;
        double r7893 = r7887 - r7892;
        double r7894 = r7878 * r7893;
        double r7895 = sqrt(r7894);
        double r7896 = cbrt(r7895);
        double r7897 = r7896 * r7896;
        double r7898 = r7897 * r7896;
        double r7899 = 4.2298195104584e-318;
        bool r7900 = r7878 <= r7899;
        double r7901 = r7882 * r7882;
        double r7902 = r7901 / r7883;
        double r7903 = r7874 * r7902;
        double r7904 = r7881 - r7903;
        double r7905 = r7884 * r7889;
        double r7906 = r7884 * r7875;
        double r7907 = r7905 * r7906;
        double r7908 = 3;
        double r7909 = pow(r7907, r7908);
        double r7910 = cbrt(r7909);
        double r7911 = r7904 - r7910;
        double r7912 = r7877 * r7911;
        double r7913 = r7876 * r7912;
        double r7914 = sqrt(r7913);
        double r7915 = sqrt(r7878);
        double r7916 = sqrt(r7893);
        double r7917 = r7915 * r7916;
        double r7918 = r7900 ? r7914 : r7917;
        double r7919 = r7880 ? r7898 : r7918;
        return r7919;
}

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 r7920, r7921, r7922, r7923, r7924, r7925, r7926, r7927, r7928, r7929, r7930, r7931, r7932, r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7920, "2", 10, MPFR_RNDN);
        mpfr_init(r7921);
        mpfr_init(r7922);
        mpfr_init(r7923);
        mpfr_init(r7924);
        mpfr_init(r7925);
        mpfr_init(r7926);
        mpfr_init(r7927);
        mpfr_init(r7928);
        mpfr_init(r7929);
        mpfr_init(r7930);
        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(r7940);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7921, n, MPFR_RNDN);
        mpfr_mul(r7922, r7920, r7921, MPFR_RNDN);
        mpfr_set_d(r7923, U, MPFR_RNDN);
        mpfr_mul(r7924, r7922, r7923, MPFR_RNDN);
        mpfr_set_d(r7925, t, MPFR_RNDN);
        mpfr_set_d(r7926, l, MPFR_RNDN);
        mpfr_mul(r7927, r7926, r7926, MPFR_RNDN);
        mpfr_set_d(r7928, Om, MPFR_RNDN);
        mpfr_div(r7929, r7927, r7928, MPFR_RNDN);
        mpfr_mul(r7930, r7920, r7929, MPFR_RNDN);
        mpfr_sub(r7931, r7925, r7930, MPFR_RNDN);
        mpfr_div(r7932, r7926, r7928, MPFR_RNDN);
        mpfr_pow(r7933, r7932, r7920, MPFR_RNDN);
        mpfr_mul(r7934, r7921, r7933, MPFR_RNDN);
        mpfr_set_d(r7935, U_, MPFR_RNDN);
        mpfr_sub(r7936, r7923, r7935, MPFR_RNDN);
        mpfr_mul(r7937, r7934, r7936, MPFR_RNDN);
        mpfr_sub(r7938, r7931, r7937, MPFR_RNDN);
        mpfr_mul(r7939, r7924, r7938, MPFR_RNDN);
        mpfr_sqrt(r7940, r7939, MPFR_RNDN);
        return mpfr_get_d(r7940, MPFR_RNDN);
}

static mpfr_t 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, r7975, r7976, r7977, r7978, r7979, r7980, r7981, r7982, r7983, r7984, r7985, r7986;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7941, "2", 10, MPFR_RNDN);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init_set_str(r7946, "-2.4556303168677174e-237", 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_set_str(r7966, "4.2298195104584e-318", 10, MPFR_RNDN);
        mpfr_init(r7967);
        mpfr_init(r7968);
        mpfr_init(r7969);
        mpfr_init(r7970);
        mpfr_init(r7971);
        mpfr_init(r7972);
        mpfr_init(r7973);
        mpfr_init(r7974);
        mpfr_init_set_str(r7975, "3", 10, MPFR_RNDN);
        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);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7942, n, MPFR_RNDN);
        mpfr_mul(r7943, r7941, r7942, MPFR_RNDN);
        mpfr_set_d(r7944, U, MPFR_RNDN);
        mpfr_mul(r7945, r7943, r7944, MPFR_RNDN);
        ;
        mpfr_set_si(r7947, mpfr_cmp(r7945, r7946) <= 0, MPFR_RNDN);
        mpfr_set_d(r7948, t, MPFR_RNDN);
        mpfr_set_d(r7949, l, MPFR_RNDN);
        mpfr_set_d(r7950, Om, MPFR_RNDN);
        mpfr_div(r7951, r7949, r7950, MPFR_RNDN);
        mpfr_mul(r7952, r7949, r7941, MPFR_RNDN);
        mpfr_mul(r7953, r7951, r7952, MPFR_RNDN);
        mpfr_sub(r7954, r7948, r7953, MPFR_RNDN);
        mpfr_set_d(r7955, U_, MPFR_RNDN);
        mpfr_sub(r7956, r7944, r7955, MPFR_RNDN);
        mpfr_mul(r7957, r7956, r7942, MPFR_RNDN);
        mpfr_mul(r7958, r7951, r7951, MPFR_RNDN);
        mpfr_mul(r7959, r7957, r7958, MPFR_RNDN);
        mpfr_sub(r7960, r7954, r7959, MPFR_RNDN);
        mpfr_mul(r7961, r7945, r7960, MPFR_RNDN);
        mpfr_sqrt(r7962, r7961, MPFR_RNDN);
        mpfr_cbrt(r7963, r7962, MPFR_RNDN);
        mpfr_mul(r7964, r7963, r7963, MPFR_RNDN);
        mpfr_mul(r7965, r7964, r7963, MPFR_RNDN);
        ;
        mpfr_set_si(r7967, mpfr_cmp(r7945, r7966) <= 0, MPFR_RNDN);
        mpfr_mul(r7968, r7949, r7949, MPFR_RNDN);
        mpfr_div(r7969, r7968, r7950, MPFR_RNDN);
        mpfr_mul(r7970, r7941, r7969, MPFR_RNDN);
        mpfr_sub(r7971, r7948, r7970, MPFR_RNDN);
        mpfr_mul(r7972, r7951, r7956, MPFR_RNDN);
        mpfr_mul(r7973, r7951, r7942, MPFR_RNDN);
        mpfr_mul(r7974, r7972, r7973, MPFR_RNDN);
        ;
        mpfr_pow(r7976, r7974, r7975, MPFR_RNDN);
        mpfr_cbrt(r7977, r7976, MPFR_RNDN);
        mpfr_sub(r7978, r7971, r7977, MPFR_RNDN);
        mpfr_mul(r7979, r7944, r7978, MPFR_RNDN);
        mpfr_mul(r7980, r7943, r7979, MPFR_RNDN);
        mpfr_sqrt(r7981, r7980, MPFR_RNDN);
        mpfr_sqrt(r7982, r7945, MPFR_RNDN);
        mpfr_sqrt(r7983, r7960, MPFR_RNDN);
        mpfr_mul(r7984, r7982, r7983, MPFR_RNDN);
        if (mpfr_get_si(r7967, MPFR_RNDN)) { mpfr_set(r7985, r7981, MPFR_RNDN); } else { mpfr_set(r7985, r7984, MPFR_RNDN); };
        if (mpfr_get_si(r7947, MPFR_RNDN)) { mpfr_set(r7986, r7965, MPFR_RNDN); } else { mpfr_set(r7986, r7985, MPFR_RNDN); };
        return mpfr_get_d(r7986, MPFR_RNDN);
}

static mpfr_t 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, r8026, r8027, r8028, r8029, r8030, r8031, r8032;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7987, "2", 10, MPFR_RNDN);
        mpfr_init(r7988);
        mpfr_init(r7989);
        mpfr_init(r7990);
        mpfr_init(r7991);
        mpfr_init_set_str(r7992, "-2.4556303168677174e-237", 10, MPFR_RNDN);
        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(r8002);
        mpfr_init(r8003);
        mpfr_init(r8004);
        mpfr_init(r8005);
        mpfr_init(r8006);
        mpfr_init(r8007);
        mpfr_init(r8008);
        mpfr_init(r8009);
        mpfr_init(r8010);
        mpfr_init(r8011);
        mpfr_init_set_str(r8012, "4.2298195104584e-318", 10, MPFR_RNDN);
        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_set_str(r8021, "3", 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);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r7988, n, MPFR_RNDN);
        mpfr_mul(r7989, r7987, r7988, MPFR_RNDN);
        mpfr_set_d(r7990, U, MPFR_RNDN);
        mpfr_mul(r7991, r7989, r7990, MPFR_RNDN);
        ;
        mpfr_set_si(r7993, mpfr_cmp(r7991, r7992) <= 0, MPFR_RNDN);
        mpfr_set_d(r7994, t, MPFR_RNDN);
        mpfr_set_d(r7995, l, MPFR_RNDN);
        mpfr_set_d(r7996, Om, MPFR_RNDN);
        mpfr_div(r7997, r7995, r7996, MPFR_RNDN);
        mpfr_mul(r7998, r7995, r7987, MPFR_RNDN);
        mpfr_mul(r7999, r7997, r7998, MPFR_RNDN);
        mpfr_sub(r8000, r7994, r7999, MPFR_RNDN);
        mpfr_set_d(r8001, U_, MPFR_RNDN);
        mpfr_sub(r8002, r7990, r8001, MPFR_RNDN);
        mpfr_mul(r8003, r8002, r7988, MPFR_RNDN);
        mpfr_mul(r8004, r7997, r7997, MPFR_RNDN);
        mpfr_mul(r8005, r8003, r8004, MPFR_RNDN);
        mpfr_sub(r8006, r8000, r8005, MPFR_RNDN);
        mpfr_mul(r8007, r7991, r8006, MPFR_RNDN);
        mpfr_sqrt(r8008, r8007, MPFR_RNDN);
        mpfr_cbrt(r8009, r8008, MPFR_RNDN);
        mpfr_mul(r8010, r8009, r8009, MPFR_RNDN);
        mpfr_mul(r8011, r8010, r8009, MPFR_RNDN);
        ;
        mpfr_set_si(r8013, mpfr_cmp(r7991, r8012) <= 0, MPFR_RNDN);
        mpfr_mul(r8014, r7995, r7995, MPFR_RNDN);
        mpfr_div(r8015, r8014, r7996, MPFR_RNDN);
        mpfr_mul(r8016, r7987, r8015, MPFR_RNDN);
        mpfr_sub(r8017, r7994, r8016, MPFR_RNDN);
        mpfr_mul(r8018, r7997, r8002, MPFR_RNDN);
        mpfr_mul(r8019, r7997, r7988, MPFR_RNDN);
        mpfr_mul(r8020, r8018, r8019, MPFR_RNDN);
        ;
        mpfr_pow(r8022, r8020, r8021, MPFR_RNDN);
        mpfr_cbrt(r8023, r8022, MPFR_RNDN);
        mpfr_sub(r8024, r8017, r8023, MPFR_RNDN);
        mpfr_mul(r8025, r7990, r8024, MPFR_RNDN);
        mpfr_mul(r8026, r7989, r8025, MPFR_RNDN);
        mpfr_sqrt(r8027, r8026, MPFR_RNDN);
        mpfr_sqrt(r8028, r7991, MPFR_RNDN);
        mpfr_sqrt(r8029, r8006, MPFR_RNDN);
        mpfr_mul(r8030, r8028, r8029, MPFR_RNDN);
        if (mpfr_get_si(r8013, MPFR_RNDN)) { mpfr_set(r8031, r8027, MPFR_RNDN); } else { mpfr_set(r8031, r8030, MPFR_RNDN); };
        if (mpfr_get_si(r7993, MPFR_RNDN)) { mpfr_set(r8032, r8011, MPFR_RNDN); } else { mpfr_set(r8032, r8031, MPFR_RNDN); };
        return mpfr_get_d(r8032, MPFR_RNDN);
}

