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

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

double f_if(float t, float l, float Om, float Omc) {
        float r8737 = 1;
        float r8738 = Om;
        float r8739 = Omc;
        float r8740 = r8738 / r8739;
        float r8741 = 2;
        float r8742 = pow(r8740, r8741);
        float r8743 = r8737 - r8742;
        float r8744 = t;
        float r8745 = l;
        float r8746 = r8744 / r8745;
        float r8747 = pow(r8746, r8741);
        float r8748 = r8741 * r8747;
        float r8749 = r8737 + r8748;
        float r8750 = r8743 / r8749;
        float r8751 = sqrt(r8750);
        float r8752 = asin(r8751);
        return r8752;
}

double f_id(double t, double l, double Om, double Omc) {
        double r8753 = 1;
        double r8754 = Om;
        double r8755 = Omc;
        double r8756 = r8754 / r8755;
        double r8757 = 2;
        double r8758 = pow(r8756, r8757);
        double r8759 = r8753 - r8758;
        double r8760 = t;
        double r8761 = l;
        double r8762 = r8760 / r8761;
        double r8763 = pow(r8762, r8757);
        double r8764 = r8757 * r8763;
        double r8765 = r8753 + r8764;
        double r8766 = r8759 / r8765;
        double r8767 = sqrt(r8766);
        double r8768 = asin(r8767);
        return r8768;
}


double f_of(float t, float l, float Om, float Omc) {
        float r8769 = 1;
        float r8770 = Om;
        float r8771 = Omc;
        float r8772 = r8770 / r8771;
        float r8773 = 2;
        float r8774 = pow(r8772, r8773);
        float r8775 = r8769 - r8774;
        float r8776 = t;
        float r8777 = l;
        float r8778 = r8776 / r8777;
        float r8779 = pow(r8778, r8773);
        float r8780 = r8773 * r8779;
        float r8781 = r8769 + r8780;
        float r8782 = r8775 / r8781;
        float r8783 = sqrt(r8782);
        float r8784 = asin(r8783);
        return r8784;
}

double f_od(double t, double l, double Om, double Omc) {
        double r8785 = 1;
        double r8786 = Om;
        double r8787 = Omc;
        double r8788 = r8786 / r8787;
        double r8789 = 2;
        double r8790 = pow(r8788, r8789);
        double r8791 = r8785 - r8790;
        double r8792 = t;
        double r8793 = l;
        double r8794 = r8792 / r8793;
        double r8795 = pow(r8794, r8789);
        double r8796 = r8789 * r8795;
        double r8797 = r8785 + r8796;
        double r8798 = r8791 / r8797;
        double r8799 = sqrt(r8798);
        double r8800 = asin(r8799);
        return r8800;
}

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 r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8801, "1", 10, MPFR_RNDN);
        mpfr_init(r8802);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init_set_str(r8805, "2", 10, MPFR_RNDN);
        mpfr_init(r8806);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
        mpfr_init(r8811);
        mpfr_init(r8812);
        mpfr_init(r8813);
        mpfr_init(r8814);
        mpfr_init(r8815);
        mpfr_init(r8816);
}

double f_im(double t, double l, double Om, double Omc) {
        ;
        mpfr_set_d(r8802, Om, MPFR_RNDN);
        mpfr_set_d(r8803, Omc, MPFR_RNDN);
        mpfr_div(r8804, r8802, r8803, MPFR_RNDN);
        ;
        mpfr_pow(r8806, r8804, r8805, MPFR_RNDN);
        mpfr_sub(r8807, r8801, r8806, MPFR_RNDN);
        mpfr_set_d(r8808, t, MPFR_RNDN);
        mpfr_set_d(r8809, l, MPFR_RNDN);
        mpfr_div(r8810, r8808, r8809, MPFR_RNDN);
        mpfr_pow(r8811, r8810, r8805, MPFR_RNDN);
        mpfr_mul(r8812, r8805, r8811, MPFR_RNDN);
        mpfr_add(r8813, r8801, r8812, MPFR_RNDN);
        mpfr_div(r8814, r8807, r8813, MPFR_RNDN);
        mpfr_sqrt(r8815, r8814, MPFR_RNDN);
        mpfr_asin(r8816, r8815, MPFR_RNDN);
        return mpfr_get_d(r8816, MPFR_RNDN);
}

static mpfr_t r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824, r8825, r8826, r8827, r8828, r8829, r8830, r8831, r8832;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8817, "1", 10, MPFR_RNDN);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init_set_str(r8821, "2", 10, MPFR_RNDN);
        mpfr_init(r8822);
        mpfr_init(r8823);
        mpfr_init(r8824);
        mpfr_init(r8825);
        mpfr_init(r8826);
        mpfr_init(r8827);
        mpfr_init(r8828);
        mpfr_init(r8829);
        mpfr_init(r8830);
        mpfr_init(r8831);
        mpfr_init(r8832);
}

double f_fm(double t, double l, double Om, double Omc) {
        ;
        mpfr_set_d(r8818, Om, MPFR_RNDN);
        mpfr_set_d(r8819, Omc, MPFR_RNDN);
        mpfr_div(r8820, r8818, r8819, MPFR_RNDN);
        ;
        mpfr_pow(r8822, r8820, r8821, MPFR_RNDN);
        mpfr_sub(r8823, r8817, r8822, MPFR_RNDN);
        mpfr_set_d(r8824, t, MPFR_RNDN);
        mpfr_set_d(r8825, l, MPFR_RNDN);
        mpfr_div(r8826, r8824, r8825, MPFR_RNDN);
        mpfr_pow(r8827, r8826, r8821, MPFR_RNDN);
        mpfr_mul(r8828, r8821, r8827, MPFR_RNDN);
        mpfr_add(r8829, r8817, r8828, MPFR_RNDN);
        mpfr_div(r8830, r8823, r8829, MPFR_RNDN);
        mpfr_sqrt(r8831, r8830, MPFR_RNDN);
        mpfr_asin(r8832, r8831, MPFR_RNDN);
        return mpfr_get_d(r8832, MPFR_RNDN);
}

static mpfr_t r8833, r8834, r8835, r8836, r8837, r8838, r8839, r8840, r8841, r8842, r8843, r8844, r8845, r8846, r8847, r8848;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r8833, "1", 10, MPFR_RNDN);
        mpfr_init(r8834);
        mpfr_init(r8835);
        mpfr_init(r8836);
        mpfr_init_set_str(r8837, "2", 10, MPFR_RNDN);
        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);
}

double f_dm(double t, double l, double Om, double Omc) {
        ;
        mpfr_set_d(r8834, Om, MPFR_RNDN);
        mpfr_set_d(r8835, Omc, MPFR_RNDN);
        mpfr_div(r8836, r8834, r8835, MPFR_RNDN);
        ;
        mpfr_pow(r8838, r8836, r8837, MPFR_RNDN);
        mpfr_sub(r8839, r8833, r8838, MPFR_RNDN);
        mpfr_set_d(r8840, t, MPFR_RNDN);
        mpfr_set_d(r8841, l, MPFR_RNDN);
        mpfr_div(r8842, r8840, r8841, MPFR_RNDN);
        mpfr_pow(r8843, r8842, r8837, MPFR_RNDN);
        mpfr_mul(r8844, r8837, r8843, MPFR_RNDN);
        mpfr_add(r8845, r8833, r8844, MPFR_RNDN);
        mpfr_div(r8846, r8839, r8845, MPFR_RNDN);
        mpfr_sqrt(r8847, r8846, MPFR_RNDN);
        mpfr_asin(r8848, r8847, MPFR_RNDN);
        return mpfr_get_d(r8848, MPFR_RNDN);
}

