#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 r8929 = 2;
        float r8930 = n;
        float r8931 = r8929 * r8930;
        float r8932 = U;
        float r8933 = r8931 * r8932;
        float r8934 = t;
        float r8935 = l;
        float r8936 = r8935 * r8935;
        float r8937 = Om;
        float r8938 = r8936 / r8937;
        float r8939 = r8929 * r8938;
        float r8940 = r8934 - r8939;
        float r8941 = r8935 / r8937;
        float r8942 = pow(r8941, r8929);
        float r8943 = r8930 * r8942;
        float r8944 = U_;
        float r8945 = r8932 - r8944;
        float r8946 = r8943 * r8945;
        float r8947 = r8940 - r8946;
        float r8948 = r8933 * r8947;
        float r8949 = sqrt(r8948);
        return r8949;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r8950 = 2;
        double r8951 = n;
        double r8952 = r8950 * r8951;
        double r8953 = U;
        double r8954 = r8952 * r8953;
        double r8955 = t;
        double r8956 = l;
        double r8957 = r8956 * r8956;
        double r8958 = Om;
        double r8959 = r8957 / r8958;
        double r8960 = r8950 * r8959;
        double r8961 = r8955 - r8960;
        double r8962 = r8956 / r8958;
        double r8963 = pow(r8962, r8950);
        double r8964 = r8951 * r8963;
        double r8965 = U_;
        double r8966 = r8953 - r8965;
        double r8967 = r8964 * r8966;
        double r8968 = r8961 - r8967;
        double r8969 = r8954 * r8968;
        double r8970 = sqrt(r8969);
        return r8970;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r8971 = 2;
        float r8972 = n;
        float r8973 = r8971 * r8972;
        float r8974 = U;
        float r8975 = t;
        float r8976 = l;
        float r8977 = r8976 * r8976;
        float r8978 = Om;
        float r8979 = r8977 / r8978;
        float r8980 = r8971 * r8979;
        float r8981 = r8975 - r8980;
        float r8982 = r8976 / r8978;
        float r8983 = pow(r8982, r8971);
        float r8984 = r8972 * r8983;
        float r8985 = U_;
        float r8986 = r8974 - r8985;
        float r8987 = r8984 * r8986;
        float r8988 = r8981 - r8987;
        float r8989 = r8974 * r8988;
        float r8990 = r8973 * r8989;
        float r8991 = 4.2799990785414e-313;
        bool r8992 = r8990 <= r8991;
        float r8993 = r8974 * r8972;
        float r8994 = r8993 * r8971;
        float r8995 = r8982 * r8972;
        float r8996 = r8982 * r8995;
        float r8997 = r8985 - r8974;
        float r8998 = r8971 / r8978;
        float r8999 = r8998 * r8977;
        float r9000 = r8975 - r8999;
        float r9001 = fma(r8996, r8997, r9000);
        float r9002 = r8994 * r9001;
        float r9003 = r8972 * r8971;
        float r9004 = 0;
        float r9005 = r8974 * r9004;
        float r9006 = r9003 * r9005;
        float r9007 = r9002 + r9006;
        float r9008 = sqrt(r9007);
        float r9009 = 3.4777793799200777e+248;
        bool r9010 = r8990 <= r9009;
        float r9011 = sqrt(r8990);
        float r9012 = 1;
        float r9013 = sqrt(r9012);
        float r9014 = r8973 * r8974;
        float r9015 = r8972 * r8997;
        float r9016 = r8982 * r8982;
        float r9017 = fma(r9015, r9016, r8975);
        float r9018 = r8976 * r8972;
        float r9019 = r8974 * r8971;
        float r9020 = r9018 * r9019;
        float r9021 = -r8971;
        float r9022 = r8978 / r8976;
        float r9023 = r9021 / r9022;
        float r9024 = r9020 * r9023;
        float r9025 = fma(r9014, r9017, r9024);
        float r9026 = sqrt(r9025);
        float r9027 = r9013 * r9026;
        float r9028 = r9010 ? r9011 : r9027;
        float r9029 = r8992 ? r9008 : r9028;
        return r9029;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r9030 = 2;
        double r9031 = n;
        double r9032 = r9030 * r9031;
        double r9033 = U;
        double r9034 = t;
        double r9035 = l;
        double r9036 = r9035 * r9035;
        double r9037 = Om;
        double r9038 = r9036 / r9037;
        double r9039 = r9030 * r9038;
        double r9040 = r9034 - r9039;
        double r9041 = r9035 / r9037;
        double r9042 = pow(r9041, r9030);
        double r9043 = r9031 * r9042;
        double r9044 = U_;
        double r9045 = r9033 - r9044;
        double r9046 = r9043 * r9045;
        double r9047 = r9040 - r9046;
        double r9048 = r9033 * r9047;
        double r9049 = r9032 * r9048;
        double r9050 = 4.2799990785414e-313;
        bool r9051 = r9049 <= r9050;
        double r9052 = r9033 * r9031;
        double r9053 = r9052 * r9030;
        double r9054 = r9041 * r9031;
        double r9055 = r9041 * r9054;
        double r9056 = r9044 - r9033;
        double r9057 = r9030 / r9037;
        double r9058 = r9057 * r9036;
        double r9059 = r9034 - r9058;
        double r9060 = fma(r9055, r9056, r9059);
        double r9061 = r9053 * r9060;
        double r9062 = r9031 * r9030;
        double r9063 = 0;
        double r9064 = r9033 * r9063;
        double r9065 = r9062 * r9064;
        double r9066 = r9061 + r9065;
        double r9067 = sqrt(r9066);
        double r9068 = 3.4777793799200777e+248;
        bool r9069 = r9049 <= r9068;
        double r9070 = sqrt(r9049);
        double r9071 = 1;
        double r9072 = sqrt(r9071);
        double r9073 = r9032 * r9033;
        double r9074 = r9031 * r9056;
        double r9075 = r9041 * r9041;
        double r9076 = fma(r9074, r9075, r9034);
        double r9077 = r9035 * r9031;
        double r9078 = r9033 * r9030;
        double r9079 = r9077 * r9078;
        double r9080 = -r9030;
        double r9081 = r9037 / r9035;
        double r9082 = r9080 / r9081;
        double r9083 = r9079 * r9082;
        double r9084 = fma(r9073, r9076, r9083);
        double r9085 = sqrt(r9084);
        double r9086 = r9072 * r9085;
        double r9087 = r9069 ? r9070 : r9086;
        double r9088 = r9051 ? r9067 : r9087;
        return r9088;
}

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 r9089, r9090, r9091, r9092, r9093, r9094, r9095, r9096, r9097, r9098, r9099, r9100, r9101, r9102, r9103, r9104, r9105, r9106, r9107, r9108, r9109;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9089, "2", 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(r9102);
        mpfr_init(r9103);
        mpfr_init(r9104);
        mpfr_init(r9105);
        mpfr_init(r9106);
        mpfr_init(r9107);
        mpfr_init(r9108);
        mpfr_init(r9109);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r9090, n, MPFR_RNDN);
        mpfr_mul(r9091, r9089, r9090, MPFR_RNDN);
        mpfr_set_d(r9092, U, MPFR_RNDN);
        mpfr_mul(r9093, r9091, r9092, MPFR_RNDN);
        mpfr_set_d(r9094, t, MPFR_RNDN);
        mpfr_set_d(r9095, l, MPFR_RNDN);
        mpfr_mul(r9096, r9095, r9095, MPFR_RNDN);
        mpfr_set_d(r9097, Om, MPFR_RNDN);
        mpfr_div(r9098, r9096, r9097, MPFR_RNDN);
        mpfr_mul(r9099, r9089, r9098, MPFR_RNDN);
        mpfr_sub(r9100, r9094, r9099, MPFR_RNDN);
        mpfr_div(r9101, r9095, r9097, MPFR_RNDN);
        mpfr_pow(r9102, r9101, r9089, MPFR_RNDN);
        mpfr_mul(r9103, r9090, r9102, MPFR_RNDN);
        mpfr_set_d(r9104, U_, MPFR_RNDN);
        mpfr_sub(r9105, r9092, r9104, MPFR_RNDN);
        mpfr_mul(r9106, r9103, r9105, MPFR_RNDN);
        mpfr_sub(r9107, r9100, r9106, MPFR_RNDN);
        mpfr_mul(r9108, r9093, r9107, MPFR_RNDN);
        mpfr_sqrt(r9109, r9108, MPFR_RNDN);
        return mpfr_get_d(r9109, MPFR_RNDN);
}

static mpfr_t r9110, r9111, r9112, r9113, r9114, r9115, r9116, r9117, r9118, r9119, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128, r9129, r9130, r9131, r9132, r9133, r9134, r9135, r9136, r9137, r9138, r9139, r9140, r9141, r9142, r9143, r9144, r9145, r9146, r9147, r9148, r9149, r9150, r9151, r9152, r9153, r9154, r9155, r9156, r9157, r9158, r9159, r9160, r9161, r9162, r9163, r9164, r9165, r9166, r9167, r9168;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9110, "2", 10, MPFR_RNDN);
        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);
        mpfr_init(r9120);
        mpfr_init(r9121);
        mpfr_init(r9122);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
        mpfr_init(r9129);
        mpfr_init_set_str(r9130, "4.2799990785414e-313", 10, MPFR_RNDN);
        mpfr_init(r9131);
        mpfr_init(r9132);
        mpfr_init(r9133);
        mpfr_init(r9134);
        mpfr_init(r9135);
        mpfr_init(r9136);
        mpfr_init(r9137);
        mpfr_init(r9138);
        mpfr_init(r9139);
        mpfr_init(r9140);
        mpfr_init(r9141);
        mpfr_init(r9142);
        mpfr_init_set_str(r9143, "0", 10, MPFR_RNDN);
        mpfr_init(r9144);
        mpfr_init(r9145);
        mpfr_init(r9146);
        mpfr_init(r9147);
        mpfr_init_set_str(r9148, "3.4777793799200777e+248", 10, MPFR_RNDN);
        mpfr_init(r9149);
        mpfr_init(r9150);
        mpfr_init_set_str(r9151, "1", 10, MPFR_RNDN);
        mpfr_init(r9152);
        mpfr_init(r9153);
        mpfr_init(r9154);
        mpfr_init(r9155);
        mpfr_init(r9156);
        mpfr_init(r9157);
        mpfr_init(r9158);
        mpfr_init(r9159);
        mpfr_init(r9160);
        mpfr_init(r9161);
        mpfr_init(r9162);
        mpfr_init(r9163);
        mpfr_init(r9164);
        mpfr_init(r9165);
        mpfr_init(r9166);
        mpfr_init(r9167);
        mpfr_init(r9168);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r9111, n, MPFR_RNDN);
        mpfr_mul(r9112, r9110, r9111, MPFR_RNDN);
        mpfr_set_d(r9113, U, MPFR_RNDN);
        mpfr_set_d(r9114, t, MPFR_RNDN);
        mpfr_set_d(r9115, l, MPFR_RNDN);
        mpfr_mul(r9116, r9115, r9115, MPFR_RNDN);
        mpfr_set_d(r9117, Om, MPFR_RNDN);
        mpfr_div(r9118, r9116, r9117, MPFR_RNDN);
        mpfr_mul(r9119, r9110, r9118, MPFR_RNDN);
        mpfr_sub(r9120, r9114, r9119, MPFR_RNDN);
        mpfr_div(r9121, r9115, r9117, MPFR_RNDN);
        mpfr_pow(r9122, r9121, r9110, MPFR_RNDN);
        mpfr_mul(r9123, r9111, r9122, MPFR_RNDN);
        mpfr_set_d(r9124, U_, MPFR_RNDN);
        mpfr_sub(r9125, r9113, r9124, MPFR_RNDN);
        mpfr_mul(r9126, r9123, r9125, MPFR_RNDN);
        mpfr_sub(r9127, r9120, r9126, MPFR_RNDN);
        mpfr_mul(r9128, r9113, r9127, MPFR_RNDN);
        mpfr_mul(r9129, r9112, r9128, MPFR_RNDN);
        ;
        mpfr_set_si(r9131, mpfr_cmp(r9129, r9130) <= 0, MPFR_RNDN);
        mpfr_mul(r9132, r9113, r9111, MPFR_RNDN);
        mpfr_mul(r9133, r9132, r9110, MPFR_RNDN);
        mpfr_mul(r9134, r9121, r9111, MPFR_RNDN);
        mpfr_mul(r9135, r9121, r9134, MPFR_RNDN);
        mpfr_sub(r9136, r9124, r9113, MPFR_RNDN);
        mpfr_div(r9137, r9110, r9117, MPFR_RNDN);
        mpfr_mul(r9138, r9137, r9116, MPFR_RNDN);
        mpfr_sub(r9139, r9114, r9138, MPFR_RNDN);
        mpfr_fma(r9140, r9135, r9136, r9139, MPFR_RNDN);
        mpfr_mul(r9141, r9133, r9140, MPFR_RNDN);
        mpfr_mul(r9142, r9111, r9110, MPFR_RNDN);
        ;
        mpfr_mul(r9144, r9113, r9143, MPFR_RNDN);
        mpfr_mul(r9145, r9142, r9144, MPFR_RNDN);
        mpfr_add(r9146, r9141, r9145, MPFR_RNDN);
        mpfr_sqrt(r9147, r9146, MPFR_RNDN);
        ;
        mpfr_set_si(r9149, mpfr_cmp(r9129, r9148) <= 0, MPFR_RNDN);
        mpfr_sqrt(r9150, r9129, MPFR_RNDN);
        ;
        mpfr_sqrt(r9152, r9151, MPFR_RNDN);
        mpfr_mul(r9153, r9112, r9113, MPFR_RNDN);
        mpfr_mul(r9154, r9111, r9136, MPFR_RNDN);
        mpfr_mul(r9155, r9121, r9121, MPFR_RNDN);
        mpfr_fma(r9156, r9154, r9155, r9114, MPFR_RNDN);
        mpfr_mul(r9157, r9115, r9111, MPFR_RNDN);
        mpfr_mul(r9158, r9113, r9110, MPFR_RNDN);
        mpfr_mul(r9159, r9157, r9158, MPFR_RNDN);
        mpfr_neg(r9160, r9110, MPFR_RNDN);
        mpfr_div(r9161, r9117, r9115, MPFR_RNDN);
        mpfr_div(r9162, r9160, r9161, MPFR_RNDN);
        mpfr_mul(r9163, r9159, r9162, MPFR_RNDN);
        mpfr_fma(r9164, r9153, r9156, r9163, MPFR_RNDN);
        mpfr_sqrt(r9165, r9164, MPFR_RNDN);
        mpfr_mul(r9166, r9152, r9165, MPFR_RNDN);
        if (mpfr_get_si(r9149, MPFR_RNDN)) { mpfr_set(r9167, r9150, MPFR_RNDN); } else { mpfr_set(r9167, r9166, MPFR_RNDN); };
        if (mpfr_get_si(r9131, MPFR_RNDN)) { mpfr_set(r9168, r9147, MPFR_RNDN); } else { mpfr_set(r9168, r9167, MPFR_RNDN); };
        return mpfr_get_d(r9168, MPFR_RNDN);
}

static mpfr_t r9169, r9170, r9171, r9172, r9173, r9174, r9175, r9176, r9177, r9178, r9179, r9180, r9181, r9182, r9183, r9184, r9185, r9186, r9187, r9188, r9189, r9190, r9191, r9192, r9193, r9194, r9195, r9196, r9197, r9198, r9199, r9200, r9201, r9202, r9203, r9204, r9205, r9206, r9207, r9208, r9209, r9210, r9211, r9212, r9213, r9214, r9215, r9216, r9217, r9218, r9219, r9220, r9221, r9222, r9223, r9224, r9225, r9226, r9227;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9169, "2", 10, MPFR_RNDN);
        mpfr_init(r9170);
        mpfr_init(r9171);
        mpfr_init(r9172);
        mpfr_init(r9173);
        mpfr_init(r9174);
        mpfr_init(r9175);
        mpfr_init(r9176);
        mpfr_init(r9177);
        mpfr_init(r9178);
        mpfr_init(r9179);
        mpfr_init(r9180);
        mpfr_init(r9181);
        mpfr_init(r9182);
        mpfr_init(r9183);
        mpfr_init(r9184);
        mpfr_init(r9185);
        mpfr_init(r9186);
        mpfr_init(r9187);
        mpfr_init(r9188);
        mpfr_init_set_str(r9189, "4.2799990785414e-313", 10, MPFR_RNDN);
        mpfr_init(r9190);
        mpfr_init(r9191);
        mpfr_init(r9192);
        mpfr_init(r9193);
        mpfr_init(r9194);
        mpfr_init(r9195);
        mpfr_init(r9196);
        mpfr_init(r9197);
        mpfr_init(r9198);
        mpfr_init(r9199);
        mpfr_init(r9200);
        mpfr_init(r9201);
        mpfr_init_set_str(r9202, "0", 10, MPFR_RNDN);
        mpfr_init(r9203);
        mpfr_init(r9204);
        mpfr_init(r9205);
        mpfr_init(r9206);
        mpfr_init_set_str(r9207, "3.4777793799200777e+248", 10, MPFR_RNDN);
        mpfr_init(r9208);
        mpfr_init(r9209);
        mpfr_init_set_str(r9210, "1", 10, MPFR_RNDN);
        mpfr_init(r9211);
        mpfr_init(r9212);
        mpfr_init(r9213);
        mpfr_init(r9214);
        mpfr_init(r9215);
        mpfr_init(r9216);
        mpfr_init(r9217);
        mpfr_init(r9218);
        mpfr_init(r9219);
        mpfr_init(r9220);
        mpfr_init(r9221);
        mpfr_init(r9222);
        mpfr_init(r9223);
        mpfr_init(r9224);
        mpfr_init(r9225);
        mpfr_init(r9226);
        mpfr_init(r9227);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r9170, n, MPFR_RNDN);
        mpfr_mul(r9171, r9169, r9170, MPFR_RNDN);
        mpfr_set_d(r9172, U, MPFR_RNDN);
        mpfr_set_d(r9173, t, MPFR_RNDN);
        mpfr_set_d(r9174, l, MPFR_RNDN);
        mpfr_mul(r9175, r9174, r9174, MPFR_RNDN);
        mpfr_set_d(r9176, Om, MPFR_RNDN);
        mpfr_div(r9177, r9175, r9176, MPFR_RNDN);
        mpfr_mul(r9178, r9169, r9177, MPFR_RNDN);
        mpfr_sub(r9179, r9173, r9178, MPFR_RNDN);
        mpfr_div(r9180, r9174, r9176, MPFR_RNDN);
        mpfr_pow(r9181, r9180, r9169, MPFR_RNDN);
        mpfr_mul(r9182, r9170, r9181, MPFR_RNDN);
        mpfr_set_d(r9183, U_, MPFR_RNDN);
        mpfr_sub(r9184, r9172, r9183, MPFR_RNDN);
        mpfr_mul(r9185, r9182, r9184, MPFR_RNDN);
        mpfr_sub(r9186, r9179, r9185, MPFR_RNDN);
        mpfr_mul(r9187, r9172, r9186, MPFR_RNDN);
        mpfr_mul(r9188, r9171, r9187, MPFR_RNDN);
        ;
        mpfr_set_si(r9190, mpfr_cmp(r9188, r9189) <= 0, MPFR_RNDN);
        mpfr_mul(r9191, r9172, r9170, MPFR_RNDN);
        mpfr_mul(r9192, r9191, r9169, MPFR_RNDN);
        mpfr_mul(r9193, r9180, r9170, MPFR_RNDN);
        mpfr_mul(r9194, r9180, r9193, MPFR_RNDN);
        mpfr_sub(r9195, r9183, r9172, MPFR_RNDN);
        mpfr_div(r9196, r9169, r9176, MPFR_RNDN);
        mpfr_mul(r9197, r9196, r9175, MPFR_RNDN);
        mpfr_sub(r9198, r9173, r9197, MPFR_RNDN);
        mpfr_fma(r9199, r9194, r9195, r9198, MPFR_RNDN);
        mpfr_mul(r9200, r9192, r9199, MPFR_RNDN);
        mpfr_mul(r9201, r9170, r9169, MPFR_RNDN);
        ;
        mpfr_mul(r9203, r9172, r9202, MPFR_RNDN);
        mpfr_mul(r9204, r9201, r9203, MPFR_RNDN);
        mpfr_add(r9205, r9200, r9204, MPFR_RNDN);
        mpfr_sqrt(r9206, r9205, MPFR_RNDN);
        ;
        mpfr_set_si(r9208, mpfr_cmp(r9188, r9207) <= 0, MPFR_RNDN);
        mpfr_sqrt(r9209, r9188, MPFR_RNDN);
        ;
        mpfr_sqrt(r9211, r9210, MPFR_RNDN);
        mpfr_mul(r9212, r9171, r9172, MPFR_RNDN);
        mpfr_mul(r9213, r9170, r9195, MPFR_RNDN);
        mpfr_mul(r9214, r9180, r9180, MPFR_RNDN);
        mpfr_fma(r9215, r9213, r9214, r9173, MPFR_RNDN);
        mpfr_mul(r9216, r9174, r9170, MPFR_RNDN);
        mpfr_mul(r9217, r9172, r9169, MPFR_RNDN);
        mpfr_mul(r9218, r9216, r9217, MPFR_RNDN);
        mpfr_neg(r9219, r9169, MPFR_RNDN);
        mpfr_div(r9220, r9176, r9174, MPFR_RNDN);
        mpfr_div(r9221, r9219, r9220, MPFR_RNDN);
        mpfr_mul(r9222, r9218, r9221, MPFR_RNDN);
        mpfr_fma(r9223, r9212, r9215, r9222, MPFR_RNDN);
        mpfr_sqrt(r9224, r9223, MPFR_RNDN);
        mpfr_mul(r9225, r9211, r9224, MPFR_RNDN);
        if (mpfr_get_si(r9208, MPFR_RNDN)) { mpfr_set(r9226, r9209, MPFR_RNDN); } else { mpfr_set(r9226, r9225, MPFR_RNDN); };
        if (mpfr_get_si(r9190, MPFR_RNDN)) { mpfr_set(r9227, r9206, MPFR_RNDN); } else { mpfr_set(r9227, r9226, MPFR_RNDN); };
        return mpfr_get_d(r9227, MPFR_RNDN);
}

