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

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

double f_if(float t, float l, float k) {
        float r8916 = 2.0f;
        float r8917 = t;
        float r8918 = 3.0f;
        float r8919 = pow(r8917, r8918);
        float r8920 = l;
        float r8921 = r8920 * r8920;
        float r8922 = r8919 / r8921;
        float r8923 = k;
        float r8924 = sin(r8923);
        float r8925 = r8922 * r8924;
        float r8926 = tan(r8923);
        float r8927 = r8925 * r8926;
        float r8928 = 1.0f;
        float r8929 = r8923 / r8917;
        float r8930 = pow(r8929, r8916);
        float r8931 = r8928 + r8930;
        float r8932 = r8931 + r8928;
        float r8933 = r8927 * r8932;
        float r8934 = r8916 / r8933;
        return r8934;
}

double f_id(double t, double l, double k) {
        double r8935 = 2.0;
        double r8936 = t;
        double r8937 = 3.0;
        double r8938 = pow(r8936, r8937);
        double r8939 = l;
        double r8940 = r8939 * r8939;
        double r8941 = r8938 / r8940;
        double r8942 = k;
        double r8943 = sin(r8942);
        double r8944 = r8941 * r8943;
        double r8945 = tan(r8942);
        double r8946 = r8944 * r8945;
        double r8947 = 1.0;
        double r8948 = r8942 / r8936;
        double r8949 = pow(r8948, r8935);
        double r8950 = r8947 + r8949;
        double r8951 = r8950 + r8947;
        double r8952 = r8946 * r8951;
        double r8953 = r8935 / r8952;
        return r8953;
}


double f_of(float t, float l, float k) {
        float r8954 = k;
        float r8955 = sin(r8954);
        float r8956 = l;
        float r8957 = t;
        float r8958 = r8956 / r8957;
        float r8959 = r8955 / r8958;
        float r8960 = r8954 / r8957;
        float r8961 = 1.0f;
        float r8962 = fma(r8960, r8960, r8961);
        float r8963 = tan(r8954);
        float r8964 = fma(r8962, r8963, r8963);
        float r8965 = r8961 / r8958;
        float r8966 = r8964 * r8965;
        float r8967 = r8966 * r8957;
        float r8968 = r8959 * r8967;
        float r8969 = -2.6294014879752607e+307f;
        bool r8970 = r8968 <= r8969;
        float r8971 = 2.0f;
        float r8972 = r8957 * r8955;
        float r8973 = r8972 / r8956;
        float r8974 = r8971 / r8973;
        float r8975 = cos(r8954);
        float r8976 = r8955 / r8975;
        float r8977 = r8957 / r8956;
        float r8978 = r8977 * r8957;
        float r8979 = r8956 / r8954;
        float r8980 = r8954 / r8979;
        float r8981 = fma(r8971, r8978, r8980);
        float r8982 = r8976 * r8981;
        float r8983 = r8974 / r8982;
        float r8984 = 6.179793228191375e+296f;
        bool r8985 = r8968 <= r8984;
        float r8986 = r8971 / r8968;
        float r8987 = r8982 * r8957;
        float r8988 = r8955 / r8956;
        float r8989 = r8987 * r8988;
        float r8990 = r8971 / r8989;
        float r8991 = r8985 ? r8986 : r8990;
        float r8992 = r8970 ? r8983 : r8991;
        return r8992;
}

double f_od(double t, double l, double k) {
        double r8993 = k;
        double r8994 = sin(r8993);
        double r8995 = l;
        double r8996 = t;
        double r8997 = r8995 / r8996;
        double r8998 = r8994 / r8997;
        double r8999 = r8993 / r8996;
        double r9000 = 1.0;
        double r9001 = fma(r8999, r8999, r9000);
        double r9002 = tan(r8993);
        double r9003 = fma(r9001, r9002, r9002);
        double r9004 = r9000 / r8997;
        double r9005 = r9003 * r9004;
        double r9006 = r9005 * r8996;
        double r9007 = r8998 * r9006;
        double r9008 = -2.6294014879752607e+307;
        bool r9009 = r9007 <= r9008;
        double r9010 = 2.0;
        double r9011 = r8996 * r8994;
        double r9012 = r9011 / r8995;
        double r9013 = r9010 / r9012;
        double r9014 = cos(r8993);
        double r9015 = r8994 / r9014;
        double r9016 = r8996 / r8995;
        double r9017 = r9016 * r8996;
        double r9018 = r8995 / r8993;
        double r9019 = r8993 / r9018;
        double r9020 = fma(r9010, r9017, r9019);
        double r9021 = r9015 * r9020;
        double r9022 = r9013 / r9021;
        double r9023 = 6.179793228191375e+296;
        bool r9024 = r9007 <= r9023;
        double r9025 = r9010 / r9007;
        double r9026 = r9021 * r8996;
        double r9027 = r8994 / r8995;
        double r9028 = r9026 * r9027;
        double r9029 = r9010 / r9028;
        double r9030 = r9024 ? r9025 : r9029;
        double r9031 = r9009 ? r9022 : r9030;
        return r9031;
}

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 r9032, r9033, r9034, r9035, r9036, r9037, r9038, r9039, r9040, r9041, r9042, r9043, r9044, r9045, r9046, r9047, r9048, r9049, r9050;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r9032, "2", 10, MPFR_RNDN);
        mpfr_init(r9033);
        mpfr_init_set_str(r9034, "3", 10, MPFR_RNDN);
        mpfr_init(r9035);
        mpfr_init(r9036);
        mpfr_init(r9037);
        mpfr_init(r9038);
        mpfr_init(r9039);
        mpfr_init(r9040);
        mpfr_init(r9041);
        mpfr_init(r9042);
        mpfr_init(r9043);
        mpfr_init_set_str(r9044, "1", 10, MPFR_RNDN);
        mpfr_init(r9045);
        mpfr_init(r9046);
        mpfr_init(r9047);
        mpfr_init(r9048);
        mpfr_init(r9049);
        mpfr_init(r9050);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r9033, t, MPFR_RNDN);
        ;
        mpfr_pow(r9035, r9033, r9034, MPFR_RNDN);
        mpfr_set_d(r9036, l, MPFR_RNDN);
        mpfr_mul(r9037, r9036, r9036, MPFR_RNDN);
        mpfr_div(r9038, r9035, r9037, MPFR_RNDN);
        mpfr_set_d(r9039, k, MPFR_RNDN);
        mpfr_sin(r9040, r9039, MPFR_RNDN);
        mpfr_mul(r9041, r9038, r9040, MPFR_RNDN);
        mpfr_tan(r9042, r9039, MPFR_RNDN);
        mpfr_mul(r9043, r9041, r9042, MPFR_RNDN);
        ;
        mpfr_div(r9045, r9039, r9033, MPFR_RNDN);
        mpfr_pow(r9046, r9045, r9032, MPFR_RNDN);
        mpfr_add(r9047, r9044, r9046, MPFR_RNDN);
        mpfr_add(r9048, r9047, r9044, MPFR_RNDN);
        mpfr_mul(r9049, r9043, r9048, MPFR_RNDN);
        mpfr_div(r9050, r9032, r9049, MPFR_RNDN);
        return mpfr_get_d(r9050, MPFR_RNDN);
}

static mpfr_t r9051, r9052, r9053, r9054, r9055, r9056, r9057, r9058, r9059, r9060, r9061, r9062, r9063, r9064, r9065, r9066, r9067, r9068, r9069, r9070, r9071, r9072, r9073, r9074, r9075, r9076, r9077, r9078, r9079, r9080, r9081, r9082, r9083, r9084, r9085, r9086, r9087, r9088, r9089;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9051);
        mpfr_init(r9052);
        mpfr_init(r9053);
        mpfr_init(r9054);
        mpfr_init(r9055);
        mpfr_init(r9056);
        mpfr_init(r9057);
        mpfr_init_set_str(r9058, "1", 10, MPFR_RNDN);
        mpfr_init(r9059);
        mpfr_init(r9060);
        mpfr_init(r9061);
        mpfr_init(r9062);
        mpfr_init(r9063);
        mpfr_init(r9064);
        mpfr_init(r9065);
        mpfr_init_set_str(r9066, "-2.6294014879752607e+307", 10, MPFR_RNDN);
        mpfr_init(r9067);
        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_set_str(r9081, "6.179793228191375e+296", 10, MPFR_RNDN);
        mpfr_init(r9082);
        mpfr_init(r9083);
        mpfr_init(r9084);
        mpfr_init(r9085);
        mpfr_init(r9086);
        mpfr_init(r9087);
        mpfr_init(r9088);
        mpfr_init(r9089);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r9051, k, MPFR_RNDN);
        mpfr_sin(r9052, r9051, MPFR_RNDN);
        mpfr_set_d(r9053, l, MPFR_RNDN);
        mpfr_set_d(r9054, t, MPFR_RNDN);
        mpfr_div(r9055, r9053, r9054, MPFR_RNDN);
        mpfr_div(r9056, r9052, r9055, MPFR_RNDN);
        mpfr_div(r9057, r9051, r9054, MPFR_RNDN);
        ;
        mpfr_fma(r9059, r9057, r9057, r9058, MPFR_RNDN);
        mpfr_tan(r9060, r9051, MPFR_RNDN);
        mpfr_fma(r9061, r9059, r9060, r9060, MPFR_RNDN);
        mpfr_div(r9062, r9058, r9055, MPFR_RNDN);
        mpfr_mul(r9063, r9061, r9062, MPFR_RNDN);
        mpfr_mul(r9064, r9063, r9054, MPFR_RNDN);
        mpfr_mul(r9065, r9056, r9064, MPFR_RNDN);
        ;
        mpfr_set_si(r9067, mpfr_cmp(r9065, r9066) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9069, r9054, r9052, MPFR_RNDN);
        mpfr_div(r9070, r9069, r9053, MPFR_RNDN);
        mpfr_div(r9071, r9068, r9070, MPFR_RNDN);
        mpfr_cos(r9072, r9051, MPFR_RNDN);
        mpfr_div(r9073, r9052, r9072, MPFR_RNDN);
        mpfr_div(r9074, r9054, r9053, MPFR_RNDN);
        mpfr_mul(r9075, r9074, r9054, MPFR_RNDN);
        mpfr_div(r9076, r9053, r9051, MPFR_RNDN);
        mpfr_div(r9077, r9051, r9076, MPFR_RNDN);
        mpfr_fma(r9078, r9068, r9075, r9077, MPFR_RNDN);
        mpfr_mul(r9079, r9073, r9078, MPFR_RNDN);
        mpfr_div(r9080, r9071, r9079, MPFR_RNDN);
        ;
        mpfr_set_si(r9082, mpfr_cmp(r9065, r9081) <= 0, MPFR_RNDN);
        mpfr_div(r9083, r9068, r9065, MPFR_RNDN);
        mpfr_mul(r9084, r9079, r9054, MPFR_RNDN);
        mpfr_div(r9085, r9052, r9053, MPFR_RNDN);
        mpfr_mul(r9086, r9084, r9085, MPFR_RNDN);
        mpfr_div(r9087, r9068, r9086, MPFR_RNDN);
        if (mpfr_get_si(r9082, MPFR_RNDN)) { mpfr_set(r9088, r9083, MPFR_RNDN); } else { mpfr_set(r9088, r9087, MPFR_RNDN); };
        if (mpfr_get_si(r9067, MPFR_RNDN)) { mpfr_set(r9089, r9080, MPFR_RNDN); } else { mpfr_set(r9089, r9088, MPFR_RNDN); };
        return mpfr_get_d(r9089, MPFR_RNDN);
}

static mpfr_t 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, r9120, r9121, r9122, r9123, r9124, r9125, r9126, r9127, r9128;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9090);
        mpfr_init(r9091);
        mpfr_init(r9092);
        mpfr_init(r9093);
        mpfr_init(r9094);
        mpfr_init(r9095);
        mpfr_init(r9096);
        mpfr_init_set_str(r9097, "1", 10, MPFR_RNDN);
        mpfr_init(r9098);
        mpfr_init(r9099);
        mpfr_init(r9100);
        mpfr_init(r9101);
        mpfr_init(r9102);
        mpfr_init(r9103);
        mpfr_init(r9104);
        mpfr_init_set_str(r9105, "-2.6294014879752607e+307", 10, MPFR_RNDN);
        mpfr_init(r9106);
        mpfr_init_set_str(r9107, "2", 10, MPFR_RNDN);
        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);
        mpfr_init_set_str(r9120, "6.179793228191375e+296", 10, MPFR_RNDN);
        mpfr_init(r9121);
        mpfr_init(r9122);
        mpfr_init(r9123);
        mpfr_init(r9124);
        mpfr_init(r9125);
        mpfr_init(r9126);
        mpfr_init(r9127);
        mpfr_init(r9128);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r9090, k, MPFR_RNDN);
        mpfr_sin(r9091, r9090, MPFR_RNDN);
        mpfr_set_d(r9092, l, MPFR_RNDN);
        mpfr_set_d(r9093, t, MPFR_RNDN);
        mpfr_div(r9094, r9092, r9093, MPFR_RNDN);
        mpfr_div(r9095, r9091, r9094, MPFR_RNDN);
        mpfr_div(r9096, r9090, r9093, MPFR_RNDN);
        ;
        mpfr_fma(r9098, r9096, r9096, r9097, MPFR_RNDN);
        mpfr_tan(r9099, r9090, MPFR_RNDN);
        mpfr_fma(r9100, r9098, r9099, r9099, MPFR_RNDN);
        mpfr_div(r9101, r9097, r9094, MPFR_RNDN);
        mpfr_mul(r9102, r9100, r9101, MPFR_RNDN);
        mpfr_mul(r9103, r9102, r9093, MPFR_RNDN);
        mpfr_mul(r9104, r9095, r9103, MPFR_RNDN);
        ;
        mpfr_set_si(r9106, mpfr_cmp(r9104, r9105) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r9108, r9093, r9091, MPFR_RNDN);
        mpfr_div(r9109, r9108, r9092, MPFR_RNDN);
        mpfr_div(r9110, r9107, r9109, MPFR_RNDN);
        mpfr_cos(r9111, r9090, MPFR_RNDN);
        mpfr_div(r9112, r9091, r9111, MPFR_RNDN);
        mpfr_div(r9113, r9093, r9092, MPFR_RNDN);
        mpfr_mul(r9114, r9113, r9093, MPFR_RNDN);
        mpfr_div(r9115, r9092, r9090, MPFR_RNDN);
        mpfr_div(r9116, r9090, r9115, MPFR_RNDN);
        mpfr_fma(r9117, r9107, r9114, r9116, MPFR_RNDN);
        mpfr_mul(r9118, r9112, r9117, MPFR_RNDN);
        mpfr_div(r9119, r9110, r9118, MPFR_RNDN);
        ;
        mpfr_set_si(r9121, mpfr_cmp(r9104, r9120) <= 0, MPFR_RNDN);
        mpfr_div(r9122, r9107, r9104, MPFR_RNDN);
        mpfr_mul(r9123, r9118, r9093, MPFR_RNDN);
        mpfr_div(r9124, r9091, r9092, MPFR_RNDN);
        mpfr_mul(r9125, r9123, r9124, MPFR_RNDN);
        mpfr_div(r9126, r9107, r9125, MPFR_RNDN);
        if (mpfr_get_si(r9121, MPFR_RNDN)) { mpfr_set(r9127, r9122, MPFR_RNDN); } else { mpfr_set(r9127, r9126, MPFR_RNDN); };
        if (mpfr_get_si(r9106, MPFR_RNDN)) { mpfr_set(r9128, r9119, MPFR_RNDN); } else { mpfr_set(r9128, r9127, MPFR_RNDN); };
        return mpfr_get_d(r9128, MPFR_RNDN);
}

