#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 r8731 = 2.0f;
        float r8732 = t;
        float r8733 = 3.0f;
        float r8734 = pow(r8732, r8733);
        float r8735 = l;
        float r8736 = r8735 * r8735;
        float r8737 = r8734 / r8736;
        float r8738 = k;
        float r8739 = sin(r8738);
        float r8740 = r8737 * r8739;
        float r8741 = tan(r8738);
        float r8742 = r8740 * r8741;
        float r8743 = 1.0f;
        float r8744 = r8738 / r8732;
        float r8745 = pow(r8744, r8731);
        float r8746 = r8743 + r8745;
        float r8747 = r8746 - r8743;
        float r8748 = r8742 * r8747;
        float r8749 = r8731 / r8748;
        return r8749;
}

double f_id(double t, double l, double k) {
        double r8750 = 2.0;
        double r8751 = t;
        double r8752 = 3.0;
        double r8753 = pow(r8751, r8752);
        double r8754 = l;
        double r8755 = r8754 * r8754;
        double r8756 = r8753 / r8755;
        double r8757 = k;
        double r8758 = sin(r8757);
        double r8759 = r8756 * r8758;
        double r8760 = tan(r8757);
        double r8761 = r8759 * r8760;
        double r8762 = 1.0;
        double r8763 = r8757 / r8751;
        double r8764 = pow(r8763, r8750);
        double r8765 = r8762 + r8764;
        double r8766 = r8765 - r8762;
        double r8767 = r8761 * r8766;
        double r8768 = r8750 / r8767;
        return r8768;
}


double f_of(float t, float l, float k) {
        float r8769 = k;
        float r8770 = cos(r8769);
        float r8771 = l;
        float r8772 = 2.0f;
        float r8773 = pow(r8771, r8772);
        float r8774 = r8770 * r8773;
        float r8775 = sin(r8769);
        float r8776 = pow(r8775, r8772);
        float r8777 = pow(r8769, r8772);
        float r8778 = r8776 * r8777;
        float r8779 = t;
        float r8780 = r8778 * r8779;
        float r8781 = r8774 / r8780;
        float r8782 = r8781 * r8772;
        float r8783 = -5.102484297178739e+304f;
        bool r8784 = r8782 <= r8783;
        float r8785 = tan(r8769);
        float r8786 = r8779 * r8785;
        float r8787 = r8771 / r8786;
        float r8788 = r8772 / r8779;
        float r8789 = r8788 / r8775;
        float r8790 = r8769 / r8779;
        float r8791 = fabs(r8790);
        float r8792 = r8789 / r8791;
        float r8793 = r8787 * r8792;
        float r8794 = r8779 * r8791;
        float r8795 = r8771 / r8794;
        float r8796 = r8793 * r8795;
        float r8797 = -1.7772874778501266e-209f;
        bool r8798 = r8782 <= r8797;
        float r8799 = r8798 ? r8782 : r8796;
        float r8800 = r8784 ? r8796 : r8799;
        return r8800;
}

double f_od(double t, double l, double k) {
        double r8801 = k;
        double r8802 = cos(r8801);
        double r8803 = l;
        double r8804 = 2.0;
        double r8805 = pow(r8803, r8804);
        double r8806 = r8802 * r8805;
        double r8807 = sin(r8801);
        double r8808 = pow(r8807, r8804);
        double r8809 = pow(r8801, r8804);
        double r8810 = r8808 * r8809;
        double r8811 = t;
        double r8812 = r8810 * r8811;
        double r8813 = r8806 / r8812;
        double r8814 = r8813 * r8804;
        double r8815 = -5.102484297178739e+304;
        bool r8816 = r8814 <= r8815;
        double r8817 = tan(r8801);
        double r8818 = r8811 * r8817;
        double r8819 = r8803 / r8818;
        double r8820 = r8804 / r8811;
        double r8821 = r8820 / r8807;
        double r8822 = r8801 / r8811;
        double r8823 = fabs(r8822);
        double r8824 = r8821 / r8823;
        double r8825 = r8819 * r8824;
        double r8826 = r8811 * r8823;
        double r8827 = r8803 / r8826;
        double r8828 = r8825 * r8827;
        double r8829 = -1.7772874778501266e-209;
        bool r8830 = r8814 <= r8829;
        double r8831 = r8830 ? r8814 : r8828;
        double r8832 = r8816 ? r8828 : r8831;
        return r8832;
}

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 r8833, r8834, r8835, r8836, r8837, r8838, r8839, r8840, r8841, r8842, r8843, r8844, r8845, r8846, r8847, r8848, r8849, r8850, r8851;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(4432);
        mpfr_init_set_str(r8833, "2", 10, MPFR_RNDN);
        mpfr_init(r8834);
        mpfr_init_set_str(r8835, "3", 10, MPFR_RNDN);
        mpfr_init(r8836);
        mpfr_init(r8837);
        mpfr_init(r8838);
        mpfr_init(r8839);
        mpfr_init(r8840);
        mpfr_init(r8841);
        mpfr_init(r8842);
        mpfr_init(r8843);
        mpfr_init(r8844);
        mpfr_init_set_str(r8845, "1", 10, MPFR_RNDN);
        mpfr_init(r8846);
        mpfr_init(r8847);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init(r8850);
        mpfr_init(r8851);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r8834, t, MPFR_RNDN);
        ;
        mpfr_pow(r8836, r8834, r8835, MPFR_RNDN);
        mpfr_set_d(r8837, l, MPFR_RNDN);
        mpfr_mul(r8838, r8837, r8837, MPFR_RNDN);
        mpfr_div(r8839, r8836, r8838, MPFR_RNDN);
        mpfr_set_d(r8840, k, MPFR_RNDN);
        mpfr_sin(r8841, r8840, MPFR_RNDN);
        mpfr_mul(r8842, r8839, r8841, MPFR_RNDN);
        mpfr_tan(r8843, r8840, MPFR_RNDN);
        mpfr_mul(r8844, r8842, r8843, MPFR_RNDN);
        ;
        mpfr_div(r8846, r8840, r8834, MPFR_RNDN);
        mpfr_pow(r8847, r8846, r8833, MPFR_RNDN);
        mpfr_add(r8848, r8845, r8847, MPFR_RNDN);
        mpfr_sub(r8849, r8848, r8845, MPFR_RNDN);
        mpfr_mul(r8850, r8844, r8849, MPFR_RNDN);
        mpfr_div(r8851, r8833, r8850, MPFR_RNDN);
        return mpfr_get_d(r8851, MPFR_RNDN);
}

static mpfr_t r8852, r8853, r8854, r8855, r8856, r8857, r8858, r8859, r8860, r8861, r8862, r8863, r8864, r8865, r8866, r8867, r8868, r8869, r8870, r8871, r8872, r8873, r8874, r8875, r8876, r8877, r8878, r8879, r8880, r8881, r8882, r8883;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(4432);
        mpfr_init(r8852);
        mpfr_init(r8853);
        mpfr_init(r8854);
        mpfr_init_set_str(r8855, "2", 10, MPFR_RNDN);
        mpfr_init(r8856);
        mpfr_init(r8857);
        mpfr_init(r8858);
        mpfr_init(r8859);
        mpfr_init(r8860);
        mpfr_init(r8861);
        mpfr_init(r8862);
        mpfr_init(r8863);
        mpfr_init(r8864);
        mpfr_init(r8865);
        mpfr_init_set_str(r8866, "-5.102484297178739e+304", 10, MPFR_RNDN);
        mpfr_init(r8867);
        mpfr_init(r8868);
        mpfr_init(r8869);
        mpfr_init(r8870);
        mpfr_init(r8871);
        mpfr_init(r8872);
        mpfr_init(r8873);
        mpfr_init(r8874);
        mpfr_init(r8875);
        mpfr_init(r8876);
        mpfr_init(r8877);
        mpfr_init(r8878);
        mpfr_init(r8879);
        mpfr_init_set_str(r8880, "-1.7772874778501266e-209", 10, MPFR_RNDN);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r8852, k, MPFR_RNDN);
        mpfr_cos(r8853, r8852, MPFR_RNDN);
        mpfr_set_d(r8854, l, MPFR_RNDN);
        ;
        mpfr_pow(r8856, r8854, r8855, MPFR_RNDN);
        mpfr_mul(r8857, r8853, r8856, MPFR_RNDN);
        mpfr_sin(r8858, r8852, MPFR_RNDN);
        mpfr_pow(r8859, r8858, r8855, MPFR_RNDN);
        mpfr_pow(r8860, r8852, r8855, MPFR_RNDN);
        mpfr_mul(r8861, r8859, r8860, MPFR_RNDN);
        mpfr_set_d(r8862, t, MPFR_RNDN);
        mpfr_mul(r8863, r8861, r8862, MPFR_RNDN);
        mpfr_div(r8864, r8857, r8863, MPFR_RNDN);
        mpfr_mul(r8865, r8864, r8855, MPFR_RNDN);
        ;
        mpfr_set_si(r8867, mpfr_cmp(r8865, r8866) <= 0, MPFR_RNDN);
        mpfr_tan(r8868, r8852, MPFR_RNDN);
        mpfr_mul(r8869, r8862, r8868, MPFR_RNDN);
        mpfr_div(r8870, r8854, r8869, MPFR_RNDN);
        mpfr_div(r8871, r8855, r8862, MPFR_RNDN);
        mpfr_div(r8872, r8871, r8858, MPFR_RNDN);
        mpfr_div(r8873, r8852, r8862, MPFR_RNDN);
        mpfr_abs(r8874, r8873, MPFR_RNDN);
        mpfr_div(r8875, r8872, r8874, MPFR_RNDN);
        mpfr_mul(r8876, r8870, r8875, MPFR_RNDN);
        mpfr_mul(r8877, r8862, r8874, MPFR_RNDN);
        mpfr_div(r8878, r8854, r8877, MPFR_RNDN);
        mpfr_mul(r8879, r8876, r8878, MPFR_RNDN);
        ;
        mpfr_set_si(r8881, mpfr_cmp(r8865, r8880) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r8881, MPFR_RNDN)) { mpfr_set(r8882, r8865, MPFR_RNDN); } else { mpfr_set(r8882, r8879, MPFR_RNDN); };
        if (mpfr_get_si(r8867, MPFR_RNDN)) { mpfr_set(r8883, r8879, MPFR_RNDN); } else { mpfr_set(r8883, r8882, MPFR_RNDN); };
        return mpfr_get_d(r8883, MPFR_RNDN);
}

static mpfr_t r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908, r8909, r8910, r8911, r8912, r8913, r8914, r8915;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(4432);
        mpfr_init(r8884);
        mpfr_init(r8885);
        mpfr_init(r8886);
        mpfr_init_set_str(r8887, "2", 10, MPFR_RNDN);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
        mpfr_init_set_str(r8898, "-5.102484297178739e+304", 10, MPFR_RNDN);
        mpfr_init(r8899);
        mpfr_init(r8900);
        mpfr_init(r8901);
        mpfr_init(r8902);
        mpfr_init(r8903);
        mpfr_init(r8904);
        mpfr_init(r8905);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
        mpfr_init(r8909);
        mpfr_init(r8910);
        mpfr_init(r8911);
        mpfr_init_set_str(r8912, "-1.7772874778501266e-209", 10, MPFR_RNDN);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r8884, k, MPFR_RNDN);
        mpfr_cos(r8885, r8884, MPFR_RNDN);
        mpfr_set_d(r8886, l, MPFR_RNDN);
        ;
        mpfr_pow(r8888, r8886, r8887, MPFR_RNDN);
        mpfr_mul(r8889, r8885, r8888, MPFR_RNDN);
        mpfr_sin(r8890, r8884, MPFR_RNDN);
        mpfr_pow(r8891, r8890, r8887, MPFR_RNDN);
        mpfr_pow(r8892, r8884, r8887, MPFR_RNDN);
        mpfr_mul(r8893, r8891, r8892, MPFR_RNDN);
        mpfr_set_d(r8894, t, MPFR_RNDN);
        mpfr_mul(r8895, r8893, r8894, MPFR_RNDN);
        mpfr_div(r8896, r8889, r8895, MPFR_RNDN);
        mpfr_mul(r8897, r8896, r8887, MPFR_RNDN);
        ;
        mpfr_set_si(r8899, mpfr_cmp(r8897, r8898) <= 0, MPFR_RNDN);
        mpfr_tan(r8900, r8884, MPFR_RNDN);
        mpfr_mul(r8901, r8894, r8900, MPFR_RNDN);
        mpfr_div(r8902, r8886, r8901, MPFR_RNDN);
        mpfr_div(r8903, r8887, r8894, MPFR_RNDN);
        mpfr_div(r8904, r8903, r8890, MPFR_RNDN);
        mpfr_div(r8905, r8884, r8894, MPFR_RNDN);
        mpfr_abs(r8906, r8905, MPFR_RNDN);
        mpfr_div(r8907, r8904, r8906, MPFR_RNDN);
        mpfr_mul(r8908, r8902, r8907, MPFR_RNDN);
        mpfr_mul(r8909, r8894, r8906, MPFR_RNDN);
        mpfr_div(r8910, r8886, r8909, MPFR_RNDN);
        mpfr_mul(r8911, r8908, r8910, MPFR_RNDN);
        ;
        mpfr_set_si(r8913, mpfr_cmp(r8897, r8912) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r8913, MPFR_RNDN)) { mpfr_set(r8914, r8897, MPFR_RNDN); } else { mpfr_set(r8914, r8911, MPFR_RNDN); };
        if (mpfr_get_si(r8899, MPFR_RNDN)) { mpfr_set(r8915, r8911, MPFR_RNDN); } else { mpfr_set(r8915, r8914, MPFR_RNDN); };
        return mpfr_get_d(r8915, MPFR_RNDN);
}

