#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 r8697 = 2;
        float r8698 = n;
        float r8699 = r8697 * r8698;
        float r8700 = U;
        float r8701 = r8699 * r8700;
        float r8702 = t;
        float r8703 = l;
        float r8704 = r8703 * r8703;
        float r8705 = Om;
        float r8706 = r8704 / r8705;
        float r8707 = r8697 * r8706;
        float r8708 = r8702 - r8707;
        float r8709 = r8703 / r8705;
        float r8710 = pow(r8709, r8697);
        float r8711 = r8698 * r8710;
        float r8712 = U_;
        float r8713 = r8700 - r8712;
        float r8714 = r8711 * r8713;
        float r8715 = r8708 - r8714;
        float r8716 = r8701 * r8715;
        float r8717 = sqrt(r8716);
        return r8717;
}

double f_id(double n, double U, double t, double l, double Om, double U_) {
        double r8718 = 2;
        double r8719 = n;
        double r8720 = r8718 * r8719;
        double r8721 = U;
        double r8722 = r8720 * r8721;
        double r8723 = t;
        double r8724 = l;
        double r8725 = r8724 * r8724;
        double r8726 = Om;
        double r8727 = r8725 / r8726;
        double r8728 = r8718 * r8727;
        double r8729 = r8723 - r8728;
        double r8730 = r8724 / r8726;
        double r8731 = pow(r8730, r8718);
        double r8732 = r8719 * r8731;
        double r8733 = U_;
        double r8734 = r8721 - r8733;
        double r8735 = r8732 * r8734;
        double r8736 = r8729 - r8735;
        double r8737 = r8722 * r8736;
        double r8738 = sqrt(r8737);
        return r8738;
}


double f_of(float n, float U, float t, float l, float Om, float U_) {
        float r8739 = 2;
        float r8740 = n;
        float r8741 = r8739 * r8740;
        float r8742 = U;
        float r8743 = r8741 * r8742;
        float r8744 = l;
        float r8745 = Om;
        float r8746 = r8744 / r8745;
        float r8747 = -r8739;
        float r8748 = r8744 * r8747;
        float r8749 = r8746 * r8746;
        float r8750 = U_;
        float r8751 = r8750 - r8742;
        float r8752 = r8740 * r8751;
        float r8753 = t;
        float r8754 = fma(r8749, r8752, r8753);
        float r8755 = fma(r8746, r8748, r8754);
        float r8756 = r8743 * r8755;
        float r8757 = r8740 * r8739;
        float r8758 = 0;
        float r8759 = r8742 * r8758;
        float r8760 = r8757 * r8759;
        float r8761 = r8756 + r8760;
        float r8762 = sqrt(r8761);
        float r8763 = 3.077465490726689e-162;
        bool r8764 = r8762 <= r8763;
        float r8765 = sqrt(r8741);
        float r8766 = r8744 * r8744;
        float r8767 = r8766 / r8745;
        float r8768 = r8739 * r8767;
        float r8769 = r8753 - r8768;
        float r8770 = pow(r8746, r8739);
        float r8771 = r8740 * r8770;
        float r8772 = r8742 - r8750;
        float r8773 = r8771 * r8772;
        float r8774 = r8769 - r8773;
        float r8775 = r8742 * r8774;
        float r8776 = sqrt(r8775);
        float r8777 = r8765 * r8776;
        float r8778 = 8.314455715938814e+147;
        bool r8779 = r8762 <= r8778;
        float r8780 = sqrt(r8743);
        float r8781 = sqrt(r8774);
        float r8782 = r8780 * r8781;
        float r8783 = r8779 ? r8762 : r8782;
        float r8784 = r8764 ? r8777 : r8783;
        return r8784;
}

double f_od(double n, double U, double t, double l, double Om, double U_) {
        double r8785 = 2;
        double r8786 = n;
        double r8787 = r8785 * r8786;
        double r8788 = U;
        double r8789 = r8787 * r8788;
        double r8790 = l;
        double r8791 = Om;
        double r8792 = r8790 / r8791;
        double r8793 = -r8785;
        double r8794 = r8790 * r8793;
        double r8795 = r8792 * r8792;
        double r8796 = U_;
        double r8797 = r8796 - r8788;
        double r8798 = r8786 * r8797;
        double r8799 = t;
        double r8800 = fma(r8795, r8798, r8799);
        double r8801 = fma(r8792, r8794, r8800);
        double r8802 = r8789 * r8801;
        double r8803 = r8786 * r8785;
        double r8804 = 0;
        double r8805 = r8788 * r8804;
        double r8806 = r8803 * r8805;
        double r8807 = r8802 + r8806;
        double r8808 = sqrt(r8807);
        double r8809 = 3.077465490726689e-162;
        bool r8810 = r8808 <= r8809;
        double r8811 = sqrt(r8787);
        double r8812 = r8790 * r8790;
        double r8813 = r8812 / r8791;
        double r8814 = r8785 * r8813;
        double r8815 = r8799 - r8814;
        double r8816 = pow(r8792, r8785);
        double r8817 = r8786 * r8816;
        double r8818 = r8788 - r8796;
        double r8819 = r8817 * r8818;
        double r8820 = r8815 - r8819;
        double r8821 = r8788 * r8820;
        double r8822 = sqrt(r8821);
        double r8823 = r8811 * r8822;
        double r8824 = 8.314455715938814e+147;
        bool r8825 = r8808 <= r8824;
        double r8826 = sqrt(r8789);
        double r8827 = sqrt(r8820);
        double r8828 = r8826 * r8827;
        double r8829 = r8825 ? r8808 : r8828;
        double r8830 = r8810 ? r8823 : r8829;
        return r8830;
}

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 r8831, r8832, 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(592);
        mpfr_init_set_str(r8831, "2", 10, MPFR_RNDN);
        mpfr_init(r8832);
        mpfr_init(r8833);
        mpfr_init(r8834);
        mpfr_init(r8835);
        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(r8845);
        mpfr_init(r8846);
        mpfr_init(r8847);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init(r8850);
        mpfr_init(r8851);
}

double f_im(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r8832, n, MPFR_RNDN);
        mpfr_mul(r8833, r8831, r8832, MPFR_RNDN);
        mpfr_set_d(r8834, U, MPFR_RNDN);
        mpfr_mul(r8835, r8833, r8834, MPFR_RNDN);
        mpfr_set_d(r8836, t, MPFR_RNDN);
        mpfr_set_d(r8837, l, MPFR_RNDN);
        mpfr_mul(r8838, r8837, r8837, MPFR_RNDN);
        mpfr_set_d(r8839, Om, MPFR_RNDN);
        mpfr_div(r8840, r8838, r8839, MPFR_RNDN);
        mpfr_mul(r8841, r8831, r8840, MPFR_RNDN);
        mpfr_sub(r8842, r8836, r8841, MPFR_RNDN);
        mpfr_div(r8843, r8837, r8839, MPFR_RNDN);
        mpfr_pow(r8844, r8843, r8831, MPFR_RNDN);
        mpfr_mul(r8845, r8832, r8844, MPFR_RNDN);
        mpfr_set_d(r8846, U_, MPFR_RNDN);
        mpfr_sub(r8847, r8834, r8846, MPFR_RNDN);
        mpfr_mul(r8848, r8845, r8847, MPFR_RNDN);
        mpfr_sub(r8849, r8842, r8848, MPFR_RNDN);
        mpfr_mul(r8850, r8835, r8849, MPFR_RNDN);
        mpfr_sqrt(r8851, 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, r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8852, "2", 10, MPFR_RNDN);
        mpfr_init(r8853);
        mpfr_init(r8854);
        mpfr_init(r8855);
        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(r8866);
        mpfr_init(r8867);
        mpfr_init(r8868);
        mpfr_init(r8869);
        mpfr_init(r8870);
        mpfr_init_set_str(r8871, "0", 10, MPFR_RNDN);
        mpfr_init(r8872);
        mpfr_init(r8873);
        mpfr_init(r8874);
        mpfr_init(r8875);
        mpfr_init_set_str(r8876, "3.077465490726689e-162", 10, MPFR_RNDN);
        mpfr_init(r8877);
        mpfr_init(r8878);
        mpfr_init(r8879);
        mpfr_init(r8880);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
        mpfr_init(r8884);
        mpfr_init(r8885);
        mpfr_init(r8886);
        mpfr_init(r8887);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init_set_str(r8891, "8.314455715938814e+147", 10, MPFR_RNDN);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
}

double f_fm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r8853, n, MPFR_RNDN);
        mpfr_mul(r8854, r8852, r8853, MPFR_RNDN);
        mpfr_set_d(r8855, U, MPFR_RNDN);
        mpfr_mul(r8856, r8854, r8855, MPFR_RNDN);
        mpfr_set_d(r8857, l, MPFR_RNDN);
        mpfr_set_d(r8858, Om, MPFR_RNDN);
        mpfr_div(r8859, r8857, r8858, MPFR_RNDN);
        mpfr_neg(r8860, r8852, MPFR_RNDN);
        mpfr_mul(r8861, r8857, r8860, MPFR_RNDN);
        mpfr_mul(r8862, r8859, r8859, MPFR_RNDN);
        mpfr_set_d(r8863, U_, MPFR_RNDN);
        mpfr_sub(r8864, r8863, r8855, MPFR_RNDN);
        mpfr_mul(r8865, r8853, r8864, MPFR_RNDN);
        mpfr_set_d(r8866, t, MPFR_RNDN);
        mpfr_fma(r8867, r8862, r8865, r8866, MPFR_RNDN);
        mpfr_fma(r8868, r8859, r8861, r8867, MPFR_RNDN);
        mpfr_mul(r8869, r8856, r8868, MPFR_RNDN);
        mpfr_mul(r8870, r8853, r8852, MPFR_RNDN);
        ;
        mpfr_mul(r8872, r8855, r8871, MPFR_RNDN);
        mpfr_mul(r8873, r8870, r8872, MPFR_RNDN);
        mpfr_add(r8874, r8869, r8873, MPFR_RNDN);
        mpfr_sqrt(r8875, r8874, MPFR_RNDN);
        ;
        mpfr_set_si(r8877, mpfr_cmp(r8875, r8876) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8878, r8854, MPFR_RNDN);
        mpfr_mul(r8879, r8857, r8857, MPFR_RNDN);
        mpfr_div(r8880, r8879, r8858, MPFR_RNDN);
        mpfr_mul(r8881, r8852, r8880, MPFR_RNDN);
        mpfr_sub(r8882, r8866, r8881, MPFR_RNDN);
        mpfr_pow(r8883, r8859, r8852, MPFR_RNDN);
        mpfr_mul(r8884, r8853, r8883, MPFR_RNDN);
        mpfr_sub(r8885, r8855, r8863, MPFR_RNDN);
        mpfr_mul(r8886, r8884, r8885, MPFR_RNDN);
        mpfr_sub(r8887, r8882, r8886, MPFR_RNDN);
        mpfr_mul(r8888, r8855, r8887, MPFR_RNDN);
        mpfr_sqrt(r8889, r8888, MPFR_RNDN);
        mpfr_mul(r8890, r8878, r8889, MPFR_RNDN);
        ;
        mpfr_set_si(r8892, mpfr_cmp(r8875, r8891) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8893, r8856, MPFR_RNDN);
        mpfr_sqrt(r8894, r8887, MPFR_RNDN);
        mpfr_mul(r8895, r8893, r8894, MPFR_RNDN);
        if (mpfr_get_si(r8892, MPFR_RNDN)) { mpfr_set(r8896, r8875, MPFR_RNDN); } else { mpfr_set(r8896, r8895, MPFR_RNDN); };
        if (mpfr_get_si(r8877, MPFR_RNDN)) { mpfr_set(r8897, r8890, MPFR_RNDN); } else { mpfr_set(r8897, r8896, MPFR_RNDN); };
        return mpfr_get_d(r8897, MPFR_RNDN);
}

static mpfr_t r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908, r8909, r8910, r8911, r8912, r8913, r8914, r8915, r8916, r8917, r8918, r8919, r8920, r8921, r8922, r8923, r8924, r8925, r8926, r8927, r8928, r8929, r8930, r8931, r8932, r8933, r8934, r8935, r8936, r8937, r8938, r8939, r8940, r8941, r8942, r8943;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8898, "2", 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(r8912);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
        mpfr_init(r8916);
        mpfr_init_set_str(r8917, "0", 10, MPFR_RNDN);
        mpfr_init(r8918);
        mpfr_init(r8919);
        mpfr_init(r8920);
        mpfr_init(r8921);
        mpfr_init_set_str(r8922, "3.077465490726689e-162", 10, MPFR_RNDN);
        mpfr_init(r8923);
        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(r8933);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init_set_str(r8937, "8.314455715938814e+147", 10, MPFR_RNDN);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init(r8941);
        mpfr_init(r8942);
        mpfr_init(r8943);
}

double f_dm(double n, double U, double t, double l, double Om, double U_) {
        ;
        mpfr_set_d(r8899, n, MPFR_RNDN);
        mpfr_mul(r8900, r8898, r8899, MPFR_RNDN);
        mpfr_set_d(r8901, U, MPFR_RNDN);
        mpfr_mul(r8902, r8900, r8901, MPFR_RNDN);
        mpfr_set_d(r8903, l, MPFR_RNDN);
        mpfr_set_d(r8904, Om, MPFR_RNDN);
        mpfr_div(r8905, r8903, r8904, MPFR_RNDN);
        mpfr_neg(r8906, r8898, MPFR_RNDN);
        mpfr_mul(r8907, r8903, r8906, MPFR_RNDN);
        mpfr_mul(r8908, r8905, r8905, MPFR_RNDN);
        mpfr_set_d(r8909, U_, MPFR_RNDN);
        mpfr_sub(r8910, r8909, r8901, MPFR_RNDN);
        mpfr_mul(r8911, r8899, r8910, MPFR_RNDN);
        mpfr_set_d(r8912, t, MPFR_RNDN);
        mpfr_fma(r8913, r8908, r8911, r8912, MPFR_RNDN);
        mpfr_fma(r8914, r8905, r8907, r8913, MPFR_RNDN);
        mpfr_mul(r8915, r8902, r8914, MPFR_RNDN);
        mpfr_mul(r8916, r8899, r8898, MPFR_RNDN);
        ;
        mpfr_mul(r8918, r8901, r8917, MPFR_RNDN);
        mpfr_mul(r8919, r8916, r8918, MPFR_RNDN);
        mpfr_add(r8920, r8915, r8919, MPFR_RNDN);
        mpfr_sqrt(r8921, r8920, MPFR_RNDN);
        ;
        mpfr_set_si(r8923, mpfr_cmp(r8921, r8922) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8924, r8900, MPFR_RNDN);
        mpfr_mul(r8925, r8903, r8903, MPFR_RNDN);
        mpfr_div(r8926, r8925, r8904, MPFR_RNDN);
        mpfr_mul(r8927, r8898, r8926, MPFR_RNDN);
        mpfr_sub(r8928, r8912, r8927, MPFR_RNDN);
        mpfr_pow(r8929, r8905, r8898, MPFR_RNDN);
        mpfr_mul(r8930, r8899, r8929, MPFR_RNDN);
        mpfr_sub(r8931, r8901, r8909, MPFR_RNDN);
        mpfr_mul(r8932, r8930, r8931, MPFR_RNDN);
        mpfr_sub(r8933, r8928, r8932, MPFR_RNDN);
        mpfr_mul(r8934, r8901, r8933, MPFR_RNDN);
        mpfr_sqrt(r8935, r8934, MPFR_RNDN);
        mpfr_mul(r8936, r8924, r8935, MPFR_RNDN);
        ;
        mpfr_set_si(r8938, mpfr_cmp(r8921, r8937) <= 0, MPFR_RNDN);
        mpfr_sqrt(r8939, r8902, MPFR_RNDN);
        mpfr_sqrt(r8940, r8933, MPFR_RNDN);
        mpfr_mul(r8941, r8939, r8940, MPFR_RNDN);
        if (mpfr_get_si(r8938, MPFR_RNDN)) { mpfr_set(r8942, r8921, MPFR_RNDN); } else { mpfr_set(r8942, r8941, MPFR_RNDN); };
        if (mpfr_get_si(r8923, MPFR_RNDN)) { mpfr_set(r8943, r8936, MPFR_RNDN); } else { mpfr_set(r8943, r8942, MPFR_RNDN); };
        return mpfr_get_d(r8943, MPFR_RNDN);
}

