#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 r8809 = 2.0f;
        float r8810 = t;
        float r8811 = 3.0f;
        float r8812 = pow(r8810, r8811);
        float r8813 = l;
        float r8814 = r8813 * r8813;
        float r8815 = r8812 / r8814;
        float r8816 = k;
        float r8817 = sin(r8816);
        float r8818 = r8815 * r8817;
        float r8819 = tan(r8816);
        float r8820 = r8818 * r8819;
        float r8821 = 1.0f;
        float r8822 = r8816 / r8810;
        float r8823 = pow(r8822, r8809);
        float r8824 = r8821 + r8823;
        float r8825 = r8824 + r8821;
        float r8826 = r8820 * r8825;
        float r8827 = r8809 / r8826;
        return r8827;
}

double f_id(double t, double l, double k) {
        double r8828 = 2.0;
        double r8829 = t;
        double r8830 = 3.0;
        double r8831 = pow(r8829, r8830);
        double r8832 = l;
        double r8833 = r8832 * r8832;
        double r8834 = r8831 / r8833;
        double r8835 = k;
        double r8836 = sin(r8835);
        double r8837 = r8834 * r8836;
        double r8838 = tan(r8835);
        double r8839 = r8837 * r8838;
        double r8840 = 1.0;
        double r8841 = r8835 / r8829;
        double r8842 = pow(r8841, r8828);
        double r8843 = r8840 + r8842;
        double r8844 = r8843 + r8840;
        double r8845 = r8839 * r8844;
        double r8846 = r8828 / r8845;
        return r8846;
}


double f_of(float t, float l, float k) {
        float r8847 = k;
        float r8848 = sin(r8847);
        float r8849 = l;
        float r8850 = t;
        float r8851 = r8849 / r8850;
        float r8852 = r8848 / r8851;
        float r8853 = r8847 / r8850;
        float r8854 = 1.0f;
        float r8855 = fma(r8853, r8853, r8854);
        float r8856 = tan(r8847);
        float r8857 = fma(r8855, r8856, r8856);
        float r8858 = r8854 / r8851;
        float r8859 = r8857 * r8858;
        float r8860 = r8859 * r8850;
        float r8861 = r8852 * r8860;
        float r8862 = -2.36471331288109e+261f;
        bool r8863 = r8861 <= r8862;
        float r8864 = 2.0f;
        float r8865 = r8864 / r8852;
        float r8866 = cos(r8847);
        float r8867 = r8848 / r8866;
        float r8868 = r8850 / r8849;
        float r8869 = r8850 * r8868;
        float r8870 = r8849 / r8847;
        float r8871 = r8847 / r8870;
        float r8872 = fma(r8864, r8869, r8871);
        float r8873 = r8867 * r8872;
        float r8874 = r8865 / r8873;
        float r8875 = 1.3463305703141285e+307f;
        bool r8876 = r8861 <= r8875;
        float r8877 = r8864 / r8861;
        float r8878 = r8848 / r8849;
        float r8879 = r8850 * r8873;
        float r8880 = r8878 * r8879;
        float r8881 = r8864 / r8880;
        float r8882 = r8876 ? r8877 : r8881;
        float r8883 = r8863 ? r8874 : r8882;
        return r8883;
}

double f_od(double t, double l, double k) {
        double r8884 = k;
        double r8885 = sin(r8884);
        double r8886 = l;
        double r8887 = t;
        double r8888 = r8886 / r8887;
        double r8889 = r8885 / r8888;
        double r8890 = r8884 / r8887;
        double r8891 = 1.0;
        double r8892 = fma(r8890, r8890, r8891);
        double r8893 = tan(r8884);
        double r8894 = fma(r8892, r8893, r8893);
        double r8895 = r8891 / r8888;
        double r8896 = r8894 * r8895;
        double r8897 = r8896 * r8887;
        double r8898 = r8889 * r8897;
        double r8899 = -2.36471331288109e+261;
        bool r8900 = r8898 <= r8899;
        double r8901 = 2.0;
        double r8902 = r8901 / r8889;
        double r8903 = cos(r8884);
        double r8904 = r8885 / r8903;
        double r8905 = r8887 / r8886;
        double r8906 = r8887 * r8905;
        double r8907 = r8886 / r8884;
        double r8908 = r8884 / r8907;
        double r8909 = fma(r8901, r8906, r8908);
        double r8910 = r8904 * r8909;
        double r8911 = r8902 / r8910;
        double r8912 = 1.3463305703141285e+307;
        bool r8913 = r8898 <= r8912;
        double r8914 = r8901 / r8898;
        double r8915 = r8885 / r8886;
        double r8916 = r8887 * r8910;
        double r8917 = r8915 * r8916;
        double r8918 = r8901 / r8917;
        double r8919 = r8913 ? r8914 : r8918;
        double r8920 = r8900 ? r8911 : r8919;
        return r8920;
}

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 r8921, r8922, r8923, r8924, r8925, r8926, r8927, r8928, r8929, r8930, r8931, r8932, r8933, r8934, r8935, r8936, r8937, r8938, r8939;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8921, "2", 10, MPFR_RNDN);
        mpfr_init(r8922);
        mpfr_init_set_str(r8923, "3", 10, MPFR_RNDN);
        mpfr_init(r8924);
        mpfr_init(r8925);
        mpfr_init(r8926);
        mpfr_init(r8927);
        mpfr_init(r8928);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init(r8931);
        mpfr_init(r8932);
        mpfr_init_set_str(r8933, "1", 10, MPFR_RNDN);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r8922, t, MPFR_RNDN);
        ;
        mpfr_pow(r8924, r8922, r8923, MPFR_RNDN);
        mpfr_set_d(r8925, l, MPFR_RNDN);
        mpfr_mul(r8926, r8925, r8925, MPFR_RNDN);
        mpfr_div(r8927, r8924, r8926, MPFR_RNDN);
        mpfr_set_d(r8928, k, MPFR_RNDN);
        mpfr_sin(r8929, r8928, MPFR_RNDN);
        mpfr_mul(r8930, r8927, r8929, MPFR_RNDN);
        mpfr_tan(r8931, r8928, MPFR_RNDN);
        mpfr_mul(r8932, r8930, r8931, MPFR_RNDN);
        ;
        mpfr_div(r8934, r8928, r8922, MPFR_RNDN);
        mpfr_pow(r8935, r8934, r8921, MPFR_RNDN);
        mpfr_add(r8936, r8933, r8935, MPFR_RNDN);
        mpfr_add(r8937, r8936, r8933, MPFR_RNDN);
        mpfr_mul(r8938, r8932, r8937, MPFR_RNDN);
        mpfr_div(r8939, r8921, r8938, MPFR_RNDN);
        return mpfr_get_d(r8939, MPFR_RNDN);
}

static mpfr_t r8940, r8941, r8942, r8943, r8944, r8945, r8946, r8947, r8948, r8949, r8950, r8951, r8952, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963, r8964, r8965, r8966, r8967, r8968, r8969, r8970, r8971, r8972, r8973, r8974, r8975, r8976;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8940);
        mpfr_init(r8941);
        mpfr_init(r8942);
        mpfr_init(r8943);
        mpfr_init(r8944);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init_set_str(r8947, "1", 10, MPFR_RNDN);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init_set_str(r8955, "-2.36471331288109e+261", 10, MPFR_RNDN);
        mpfr_init(r8956);
        mpfr_init_set_str(r8957, "2", 10, MPFR_RNDN);
        mpfr_init(r8958);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init(r8961);
        mpfr_init(r8962);
        mpfr_init(r8963);
        mpfr_init(r8964);
        mpfr_init(r8965);
        mpfr_init(r8966);
        mpfr_init(r8967);
        mpfr_init_set_str(r8968, "1.3463305703141285e+307", 10, MPFR_RNDN);
        mpfr_init(r8969);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init(r8973);
        mpfr_init(r8974);
        mpfr_init(r8975);
        mpfr_init(r8976);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r8940, k, MPFR_RNDN);
        mpfr_sin(r8941, r8940, MPFR_RNDN);
        mpfr_set_d(r8942, l, MPFR_RNDN);
        mpfr_set_d(r8943, t, MPFR_RNDN);
        mpfr_div(r8944, r8942, r8943, MPFR_RNDN);
        mpfr_div(r8945, r8941, r8944, MPFR_RNDN);
        mpfr_div(r8946, r8940, r8943, MPFR_RNDN);
        ;
        mpfr_fma(r8948, r8946, r8946, r8947, MPFR_RNDN);
        mpfr_tan(r8949, r8940, MPFR_RNDN);
        mpfr_fma(r8950, r8948, r8949, r8949, MPFR_RNDN);
        mpfr_div(r8951, r8947, r8944, MPFR_RNDN);
        mpfr_mul(r8952, r8950, r8951, MPFR_RNDN);
        mpfr_mul(r8953, r8952, r8943, MPFR_RNDN);
        mpfr_mul(r8954, r8945, r8953, MPFR_RNDN);
        ;
        mpfr_set_si(r8956, mpfr_cmp(r8954, r8955) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8958, r8957, r8945, MPFR_RNDN);
        mpfr_cos(r8959, r8940, MPFR_RNDN);
        mpfr_div(r8960, r8941, r8959, MPFR_RNDN);
        mpfr_div(r8961, r8943, r8942, MPFR_RNDN);
        mpfr_mul(r8962, r8943, r8961, MPFR_RNDN);
        mpfr_div(r8963, r8942, r8940, MPFR_RNDN);
        mpfr_div(r8964, r8940, r8963, MPFR_RNDN);
        mpfr_fma(r8965, r8957, r8962, r8964, MPFR_RNDN);
        mpfr_mul(r8966, r8960, r8965, MPFR_RNDN);
        mpfr_div(r8967, r8958, r8966, MPFR_RNDN);
        ;
        mpfr_set_si(r8969, mpfr_cmp(r8954, r8968) <= 0, MPFR_RNDN);
        mpfr_div(r8970, r8957, r8954, MPFR_RNDN);
        mpfr_div(r8971, r8941, r8942, MPFR_RNDN);
        mpfr_mul(r8972, r8943, r8966, MPFR_RNDN);
        mpfr_mul(r8973, r8971, r8972, MPFR_RNDN);
        mpfr_div(r8974, r8957, r8973, MPFR_RNDN);
        if (mpfr_get_si(r8969, MPFR_RNDN)) { mpfr_set(r8975, r8970, MPFR_RNDN); } else { mpfr_set(r8975, r8974, MPFR_RNDN); };
        if (mpfr_get_si(r8956, MPFR_RNDN)) { mpfr_set(r8976, r8967, MPFR_RNDN); } else { mpfr_set(r8976, r8975, MPFR_RNDN); };
        return mpfr_get_d(r8976, MPFR_RNDN);
}

static mpfr_t r8977, r8978, r8979, r8980, r8981, r8982, r8983, r8984, r8985, r8986, r8987, r8988, r8989, r8990, r8991, r8992, r8993, r8994, r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006, r9007, r9008, r9009, r9010, r9011, r9012, r9013;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8977);
        mpfr_init(r8978);
        mpfr_init(r8979);
        mpfr_init(r8980);
        mpfr_init(r8981);
        mpfr_init(r8982);
        mpfr_init(r8983);
        mpfr_init_set_str(r8984, "1", 10, MPFR_RNDN);
        mpfr_init(r8985);
        mpfr_init(r8986);
        mpfr_init(r8987);
        mpfr_init(r8988);
        mpfr_init(r8989);
        mpfr_init(r8990);
        mpfr_init(r8991);
        mpfr_init_set_str(r8992, "-2.36471331288109e+261", 10, MPFR_RNDN);
        mpfr_init(r8993);
        mpfr_init_set_str(r8994, "2", 10, MPFR_RNDN);
        mpfr_init(r8995);
        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_set_str(r9005, "1.3463305703141285e+307", 10, MPFR_RNDN);
        mpfr_init(r9006);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
        mpfr_init(r9010);
        mpfr_init(r9011);
        mpfr_init(r9012);
        mpfr_init(r9013);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r8977, k, MPFR_RNDN);
        mpfr_sin(r8978, r8977, MPFR_RNDN);
        mpfr_set_d(r8979, l, MPFR_RNDN);
        mpfr_set_d(r8980, t, MPFR_RNDN);
        mpfr_div(r8981, r8979, r8980, MPFR_RNDN);
        mpfr_div(r8982, r8978, r8981, MPFR_RNDN);
        mpfr_div(r8983, r8977, r8980, MPFR_RNDN);
        ;
        mpfr_fma(r8985, r8983, r8983, r8984, MPFR_RNDN);
        mpfr_tan(r8986, r8977, MPFR_RNDN);
        mpfr_fma(r8987, r8985, r8986, r8986, MPFR_RNDN);
        mpfr_div(r8988, r8984, r8981, MPFR_RNDN);
        mpfr_mul(r8989, r8987, r8988, MPFR_RNDN);
        mpfr_mul(r8990, r8989, r8980, MPFR_RNDN);
        mpfr_mul(r8991, r8982, r8990, MPFR_RNDN);
        ;
        mpfr_set_si(r8993, mpfr_cmp(r8991, r8992) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8995, r8994, r8982, MPFR_RNDN);
        mpfr_cos(r8996, r8977, MPFR_RNDN);
        mpfr_div(r8997, r8978, r8996, MPFR_RNDN);
        mpfr_div(r8998, r8980, r8979, MPFR_RNDN);
        mpfr_mul(r8999, r8980, r8998, MPFR_RNDN);
        mpfr_div(r9000, r8979, r8977, MPFR_RNDN);
        mpfr_div(r9001, r8977, r9000, MPFR_RNDN);
        mpfr_fma(r9002, r8994, r8999, r9001, MPFR_RNDN);
        mpfr_mul(r9003, r8997, r9002, MPFR_RNDN);
        mpfr_div(r9004, r8995, r9003, MPFR_RNDN);
        ;
        mpfr_set_si(r9006, mpfr_cmp(r8991, r9005) <= 0, MPFR_RNDN);
        mpfr_div(r9007, r8994, r8991, MPFR_RNDN);
        mpfr_div(r9008, r8978, r8979, MPFR_RNDN);
        mpfr_mul(r9009, r8980, r9003, MPFR_RNDN);
        mpfr_mul(r9010, r9008, r9009, MPFR_RNDN);
        mpfr_div(r9011, r8994, r9010, MPFR_RNDN);
        if (mpfr_get_si(r9006, MPFR_RNDN)) { mpfr_set(r9012, r9007, MPFR_RNDN); } else { mpfr_set(r9012, r9011, MPFR_RNDN); };
        if (mpfr_get_si(r8993, MPFR_RNDN)) { mpfr_set(r9013, r9004, MPFR_RNDN); } else { mpfr_set(r9013, r9012, MPFR_RNDN); };
        return mpfr_get_d(r9013, MPFR_RNDN);
}

