#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 r8849 = 2;
        float r8850 = n;
        float r8851 = r8849 * r8850;
        float r8852 = U;
        float r8853 = r8851 * r8852;
        float r8854 = t;
        float r8855 = l;
        float r8856 = r8855 * r8855;
        float r8857 = Om;
        float r8858 = r8856 / r8857;
        float r8859 = r8849 * r8858;
        float r8860 = r8854 - r8859;
        float r8861 = r8855 / r8857;
        float r8862 = pow(r8861, r8849);
        float r8863 = r8850 * r8862;
        float r8864 = U_;
        float r8865 = r8852 - r8864;
        float r8866 = r8863 * r8865;
        float r8867 = r8860 - r8866;
        float r8868 = r8853 * r8867;
        float r8869 = sqrt(r8868);
        return r8869;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r8870 = 2;
        double r8871 = n;
        double r8872 = r8870 * r8871;
        double r8873 = U;
        double r8874 = r8872 * r8873;
        double r8875 = t;
        double r8876 = l;
        double r8877 = r8876 * r8876;
        double r8878 = Om;
        double r8879 = r8877 / r8878;
        double r8880 = r8870 * r8879;
        double r8881 = r8875 - r8880;
        double r8882 = r8876 / r8878;
        double r8883 = pow(r8882, r8870);
        double r8884 = r8871 * r8883;
        double r8885 = U_;
        double r8886 = r8873 - r8885;
        double r8887 = r8884 * r8886;
        double r8888 = r8881 - r8887;
        double r8889 = r8874 * r8888;
        double r8890 = sqrt(r8889);
        return r8890;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r8891 = 2;
        float r8892 = n;
        float r8893 = r8891 * r8892;
        float r8894 = U;
        float r8895 = t;
        float r8896 = l;
        float r8897 = r8896 * r8896;
        float r8898 = Om;
        float r8899 = r8897 / r8898;
        float r8900 = r8891 * r8899;
        float r8901 = r8895 - r8900;
        float r8902 = r8896 / r8898;
        float r8903 = pow(r8902, r8891);
        float r8904 = r8892 * r8903;
        float r8905 = U_;
        float r8906 = r8894 - r8905;
        float r8907 = r8904 * r8906;
        float r8908 = r8901 - r8907;
        float r8909 = r8894 * r8908;
        float r8910 = r8893 * r8909;
        float r8911 = sqrt(r8910);
        float r8912 = 6.8526928380684e-310;
        bool r8913 = r8911 <= r8912;
        float r8914 = r8893 * r8894;
        float r8915 = sqrt(r8914);
        float r8916 = r8891 * r8896;
        float r8917 = r8902 * r8916;
        float r8918 = r8895 - r8917;
        float r8919 = r8902 * r8906;
        float r8920 = r8892 * r8902;
        float r8921 = r8919 * r8920;
        float r8922 = r8918 - r8921;
        float r8923 = sqrt(r8922);
        float r8924 = r8915 * r8923;
        float r8925 = 6.005172876874727e+128;
        bool r8926 = r8911 <= r8925;
        float r8927 = r8894 * r8922;
        float r8928 = r8893 * r8927;
        float r8929 = sqrt(r8928);
        float r8930 = r8895 * r8914;
        float r8931 = r8891 * r8894;
        float r8932 = r8892 * r8931;
        float r8933 = r8932 * r8902;
        float r8934 = -r8916;
        float r8935 = r8892 * r8906;
        float r8936 = r8935 * r8902;
        float r8937 = r8934 - r8936;
        float r8938 = r8933 * r8937;
        float r8939 = r8930 + r8938;
        float r8940 = sqrt(r8939);
        float r8941 = r8926 ? r8929 : r8940;
        float r8942 = r8913 ? r8924 : r8941;
        return r8942;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r8943 = 2;
        double r8944 = n;
        double r8945 = r8943 * r8944;
        double r8946 = U;
        double r8947 = t;
        double r8948 = l;
        double r8949 = r8948 * r8948;
        double r8950 = Om;
        double r8951 = r8949 / r8950;
        double r8952 = r8943 * r8951;
        double r8953 = r8947 - r8952;
        double r8954 = r8948 / r8950;
        double r8955 = pow(r8954, r8943);
        double r8956 = r8944 * r8955;
        double r8957 = U_;
        double r8958 = r8946 - r8957;
        double r8959 = r8956 * r8958;
        double r8960 = r8953 - r8959;
        double r8961 = r8946 * r8960;
        double r8962 = r8945 * r8961;
        double r8963 = sqrt(r8962);
        double r8964 = 6.8526928380684e-310;
        bool r8965 = r8963 <= r8964;
        double r8966 = r8945 * r8946;
        double r8967 = sqrt(r8966);
        double r8968 = r8943 * r8948;
        double r8969 = r8954 * r8968;
        double r8970 = r8947 - r8969;
        double r8971 = r8954 * r8958;
        double r8972 = r8944 * r8954;
        double r8973 = r8971 * r8972;
        double r8974 = r8970 - r8973;
        double r8975 = sqrt(r8974);
        double r8976 = r8967 * r8975;
        double r8977 = 6.005172876874727e+128;
        bool r8978 = r8963 <= r8977;
        double r8979 = r8946 * r8974;
        double r8980 = r8945 * r8979;
        double r8981 = sqrt(r8980);
        double r8982 = r8947 * r8966;
        double r8983 = r8943 * r8946;
        double r8984 = r8944 * r8983;
        double r8985 = r8984 * r8954;
        double r8986 = -r8968;
        double r8987 = r8944 * r8958;
        double r8988 = r8987 * r8954;
        double r8989 = r8986 - r8988;
        double r8990 = r8985 * r8989;
        double r8991 = r8982 + r8990;
        double r8992 = sqrt(r8991);
        double r8993 = r8978 ? r8981 : r8992;
        double r8994 = r8965 ? r8976 : r8993;
        return r8994;
}

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 r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006, r9007, r9008, r9009, r9010, r9011, r9012, r9013, r9014, r9015;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8995, "2", 10, MPFR_RNDN);
        mpfr_init(r8996);
        mpfr_init(r8997);
        mpfr_init(r8998);
        mpfr_init(r8999);
        mpfr_init(r9000);
        mpfr_init(r9001);
        mpfr_init(r9002);
        mpfr_init(r9003);
        mpfr_init(r9004);
        mpfr_init(r9005);
        mpfr_init(r9006);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init(r9012);
        mpfr_init(r9013);
        mpfr_init(r9014);
        mpfr_init(r9015);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r8996, n, MPFR_RNDN);
        mpfr_mul(r8997, r8995, r8996, MPFR_RNDN);
        mpfr_set_d(r8998, U, MPFR_RNDN);
        mpfr_mul(r8999, r8997, r8998, MPFR_RNDN);
        mpfr_set_d(r9000, t, MPFR_RNDN);
        mpfr_set_d(r9001, l, MPFR_RNDN);
        mpfr_mul(r9002, r9001, r9001, MPFR_RNDN);
        mpfr_set_d(r9003, Om, MPFR_RNDN);
        mpfr_div(r9004, r9002, r9003, MPFR_RNDN);
        mpfr_mul(r9005, r8995, r9004, MPFR_RNDN);
        mpfr_sub(r9006, r9000, r9005, MPFR_RNDN);
        mpfr_div(r9007, r9001, r9003, MPFR_RNDN);
        mpfr_pow(r9008, r9007, r8995, MPFR_RNDN);
        mpfr_mul(r9009, r8996, r9008, MPFR_RNDN);
        mpfr_set_d(r9010, U_, MPFR_RNDN);
        mpfr_sub(r9011, r8998, r9010, MPFR_RNDN);
        mpfr_mul(r9012, r9009, r9011, MPFR_RNDN);
        mpfr_sub(r9013, r9006, r9012, MPFR_RNDN);
        mpfr_mul(r9014, r8999, r9013, MPFR_RNDN);
        mpfr_sqrt(r9015, r9014, MPFR_RNDN);
        return mpfr_get_d(r9015, MPFR_RNDN);
}

static mpfr_t r9016, r9017, r9018, r9019, r9020, r9021, r9022, r9023, r9024, r9025, r9026, r9027, r9028, r9029, r9030, r9031, r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050, r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9016, "2", 10, MPFR_RNDN);
        mpfr_init(r9017);
        mpfr_init(r9018);
        mpfr_init(r9019);
        mpfr_init(r9020);
        mpfr_init(r9021);
        mpfr_init(r9022);
        mpfr_init(r9023);
        mpfr_init(r9024);
        mpfr_init(r9025);
        mpfr_init(r9026);
        mpfr_init(r9027);
        mpfr_init(r9028);
        mpfr_init(r9029);
        mpfr_init(r9030);
        mpfr_init(r9031);
        mpfr_init(r9032);
        mpfr_init(r9033);
        mpfr_init(r9034);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init_set_str(r9037, "6.8526928380684e-310", 10, MPFR_RNDN);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init(r9044);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init_set_str(r9050, "6.005172876874727e+128", 10, MPFR_RNDN);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init(r9058);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init(r9066);
        mpfr_init(r9067);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r9017, n, MPFR_RNDN);
        mpfr_mul(r9018, r9016, r9017, MPFR_RNDN);
        mpfr_set_d(r9019, U, MPFR_RNDN);
        mpfr_set_d(r9020, t, MPFR_RNDN);
        mpfr_set_d(r9021, l, MPFR_RNDN);
        mpfr_mul(r9022, r9021, r9021, MPFR_RNDN);
        mpfr_set_d(r9023, Om, MPFR_RNDN);
        mpfr_div(r9024, r9022, r9023, MPFR_RNDN);
        mpfr_mul(r9025, r9016, r9024, MPFR_RNDN);
        mpfr_sub(r9026, r9020, r9025, MPFR_RNDN);
        mpfr_div(r9027, r9021, r9023, MPFR_RNDN);
        mpfr_pow(r9028, r9027, r9016, MPFR_RNDN);
        mpfr_mul(r9029, r9017, r9028, MPFR_RNDN);
        mpfr_set_d(r9030, U_, MPFR_RNDN);
        mpfr_sub(r9031, r9019, r9030, MPFR_RNDN);
        mpfr_mul(r9032, r9029, r9031, MPFR_RNDN);
        mpfr_sub(r9033, r9026, r9032, MPFR_RNDN);
        mpfr_mul(r9034, r9019, r9033, MPFR_RNDN);
        mpfr_mul(r9035, r9018, r9034, MPFR_RNDN);
        mpfr_sqrt(r9036, r9035, MPFR_RNDN);
        ;
        mpfr_set_si(r9038, mpfr_cmp(r9036, r9037) <= 0, MPFR_RNDN);
        mpfr_mul(r9039, r9018, r9019, MPFR_RNDN);
        mpfr_sqrt(r9040, r9039, MPFR_RNDN);
        mpfr_mul(r9041, r9016, r9021, MPFR_RNDN);
        mpfr_mul(r9042, r9027, r9041, MPFR_RNDN);
        mpfr_sub(r9043, r9020, r9042, MPFR_RNDN);
        mpfr_mul(r9044, r9027, r9031, MPFR_RNDN);
        mpfr_mul(r9045, r9017, r9027, MPFR_RNDN);
        mpfr_mul(r9046, r9044, r9045, MPFR_RNDN);
        mpfr_sub(r9047, r9043, r9046, MPFR_RNDN);
        mpfr_sqrt(r9048, r9047, MPFR_RNDN);
        mpfr_mul(r9049, r9040, r9048, MPFR_RNDN);
        ;
        mpfr_set_si(r9051, mpfr_cmp(r9036, r9050) <= 0, MPFR_RNDN);
        mpfr_mul(r9052, r9019, r9047, MPFR_RNDN);
        mpfr_mul(r9053, r9018, r9052, MPFR_RNDN);
        mpfr_sqrt(r9054, r9053, MPFR_RNDN);
        mpfr_mul(r9055, r9020, r9039, MPFR_RNDN);
        mpfr_mul(r9056, r9016, r9019, MPFR_RNDN);
        mpfr_mul(r9057, r9017, r9056, MPFR_RNDN);
        mpfr_mul(r9058, r9057, r9027, MPFR_RNDN);
        mpfr_neg(r9059, r9041, MPFR_RNDN);
        mpfr_mul(r9060, r9017, r9031, MPFR_RNDN);
        mpfr_mul(r9061, r9060, r9027, MPFR_RNDN);
        mpfr_sub(r9062, r9059, r9061, MPFR_RNDN);
        mpfr_mul(r9063, r9058, r9062, MPFR_RNDN);
        mpfr_add(r9064, r9055, r9063, MPFR_RNDN);
        mpfr_sqrt(r9065, r9064, MPFR_RNDN);
        if (mpfr_get_si(r9051, MPFR_RNDN)) { mpfr_set(r9066, r9054, MPFR_RNDN); } else { mpfr_set(r9066, r9065, MPFR_RNDN); };
        if (mpfr_get_si(r9038, MPFR_RNDN)) { mpfr_set(r9067, r9049, MPFR_RNDN); } else { mpfr_set(r9067, r9066, MPFR_RNDN); };
        return mpfr_get_d(r9067, MPFR_RNDN);
}

static mpfr_t r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086, r9087, r9088, r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099, r9100, r9101, r9102, r9103, r9104, r9105, r9106, r9107, r9108, r9109, r9110, r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9068, "2", 10, MPFR_RNDN);
        mpfr_init(r9069);
        mpfr_init(r9070);
        mpfr_init(r9071);
        mpfr_init(r9072);
        mpfr_init(r9073);
        mpfr_init(r9074);
        mpfr_init(r9075);
        mpfr_init(r9076);
        mpfr_init(r9077);
        mpfr_init(r9078);
        mpfr_init(r9079);
        mpfr_init(r9080);
        mpfr_init(r9081);
        mpfr_init(r9082);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init(r9088);
        mpfr_init_set_str(r9089, "6.8526928380684e-310", 10, MPFR_RNDN);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init(r9094);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init(r9097);
        mpfr_init(r9098);
        mpfr_init(r9099);
        mpfr_init(r9100);
        mpfr_init(r9101);
        mpfr_init_set_str(r9102, "6.005172876874727e+128", 10, MPFR_RNDN);
        mpfr_init(r9103);
        mpfr_init(r9104);
        mpfr_init(r9105);
        mpfr_init(r9106);
        mpfr_init(r9107);
        mpfr_init(r9108);
        mpfr_init(r9109);
        mpfr_init(r9110);
        mpfr_init(r9111);
        mpfr_init(r9112);
        mpfr_init(r9113);
        mpfr_init(r9114);
        mpfr_init(r9115);
        mpfr_init(r9116);
        mpfr_init(r9117);
        mpfr_init(r9118);
        mpfr_init(r9119);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r9069, n, MPFR_RNDN);
        mpfr_mul(r9070, r9068, r9069, MPFR_RNDN);
        mpfr_set_d(r9071, U, MPFR_RNDN);
        mpfr_set_d(r9072, t, MPFR_RNDN);
        mpfr_set_d(r9073, l, MPFR_RNDN);
        mpfr_mul(r9074, r9073, r9073, MPFR_RNDN);
        mpfr_set_d(r9075, Om, MPFR_RNDN);
        mpfr_div(r9076, r9074, r9075, MPFR_RNDN);
        mpfr_mul(r9077, r9068, r9076, MPFR_RNDN);
        mpfr_sub(r9078, r9072, r9077, MPFR_RNDN);
        mpfr_div(r9079, r9073, r9075, MPFR_RNDN);
        mpfr_pow(r9080, r9079, r9068, MPFR_RNDN);
        mpfr_mul(r9081, r9069, r9080, MPFR_RNDN);
        mpfr_set_d(r9082, U_, MPFR_RNDN);
        mpfr_sub(r9083, r9071, r9082, MPFR_RNDN);
        mpfr_mul(r9084, r9081, r9083, MPFR_RNDN);
        mpfr_sub(r9085, r9078, r9084, MPFR_RNDN);
        mpfr_mul(r9086, r9071, r9085, MPFR_RNDN);
        mpfr_mul(r9087, r9070, r9086, MPFR_RNDN);
        mpfr_sqrt(r9088, r9087, MPFR_RNDN);
        ;
        mpfr_set_si(r9090, mpfr_cmp(r9088, r9089) <= 0, MPFR_RNDN);
        mpfr_mul(r9091, r9070, r9071, MPFR_RNDN);
        mpfr_sqrt(r9092, r9091, MPFR_RNDN);
        mpfr_mul(r9093, r9068, r9073, MPFR_RNDN);
        mpfr_mul(r9094, r9079, r9093, MPFR_RNDN);
        mpfr_sub(r9095, r9072, r9094, MPFR_RNDN);
        mpfr_mul(r9096, r9079, r9083, MPFR_RNDN);
        mpfr_mul(r9097, r9069, r9079, MPFR_RNDN);
        mpfr_mul(r9098, r9096, r9097, MPFR_RNDN);
        mpfr_sub(r9099, r9095, r9098, MPFR_RNDN);
        mpfr_sqrt(r9100, r9099, MPFR_RNDN);
        mpfr_mul(r9101, r9092, r9100, MPFR_RNDN);
        ;
        mpfr_set_si(r9103, mpfr_cmp(r9088, r9102) <= 0, MPFR_RNDN);
        mpfr_mul(r9104, r9071, r9099, MPFR_RNDN);
        mpfr_mul(r9105, r9070, r9104, MPFR_RNDN);
        mpfr_sqrt(r9106, r9105, MPFR_RNDN);
        mpfr_mul(r9107, r9072, r9091, MPFR_RNDN);
        mpfr_mul(r9108, r9068, r9071, MPFR_RNDN);
        mpfr_mul(r9109, r9069, r9108, MPFR_RNDN);
        mpfr_mul(r9110, r9109, r9079, MPFR_RNDN);
        mpfr_neg(r9111, r9093, MPFR_RNDN);
        mpfr_mul(r9112, r9069, r9083, MPFR_RNDN);
        mpfr_mul(r9113, r9112, r9079, MPFR_RNDN);
        mpfr_sub(r9114, r9111, r9113, MPFR_RNDN);
        mpfr_mul(r9115, r9110, r9114, MPFR_RNDN);
        mpfr_add(r9116, r9107, r9115, MPFR_RNDN);
        mpfr_sqrt(r9117, r9116, MPFR_RNDN);
        if (mpfr_get_si(r9103, MPFR_RNDN)) { mpfr_set(r9118, r9106, MPFR_RNDN); } else { mpfr_set(r9118, r9117, MPFR_RNDN); };
        if (mpfr_get_si(r9090, MPFR_RNDN)) { mpfr_set(r9119, r9101, MPFR_RNDN); } else { mpfr_set(r9119, r9118, MPFR_RNDN); };
        return mpfr_get_d(r9119, MPFR_RNDN);
}

