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

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

double f_if(float l, float Om, float kx, float ky) {
        float r8687 = 1;
        float r8688 = 2;
        float r8689 = r8687 / r8688;
        float r8690 = l;
        float r8691 = r8688 * r8690;
        float r8692 = Om;
        float r8693 = r8691 / r8692;
        float r8694 = pow(r8693, r8688);
        float r8695 = kx;
        float r8696 = sin(r8695);
        float r8697 = pow(r8696, r8688);
        float r8698 = ky;
        float r8699 = sin(r8698);
        float r8700 = pow(r8699, r8688);
        float r8701 = r8697 + r8700;
        float r8702 = r8694 * r8701;
        float r8703 = r8687 + r8702;
        float r8704 = sqrt(r8703);
        float r8705 = r8687 / r8704;
        float r8706 = r8687 + r8705;
        float r8707 = r8689 * r8706;
        float r8708 = sqrt(r8707);
        return r8708;
}

double f_id(double l, double Om, double kx, double ky) {
        double r8709 = 1;
        double r8710 = 2;
        double r8711 = r8709 / r8710;
        double r8712 = l;
        double r8713 = r8710 * r8712;
        double r8714 = Om;
        double r8715 = r8713 / r8714;
        double r8716 = pow(r8715, r8710);
        double r8717 = kx;
        double r8718 = sin(r8717);
        double r8719 = pow(r8718, r8710);
        double r8720 = ky;
        double r8721 = sin(r8720);
        double r8722 = pow(r8721, r8710);
        double r8723 = r8719 + r8722;
        double r8724 = r8716 * r8723;
        double r8725 = r8709 + r8724;
        double r8726 = sqrt(r8725);
        double r8727 = r8709 / r8726;
        double r8728 = r8709 + r8727;
        double r8729 = r8711 * r8728;
        double r8730 = sqrt(r8729);
        return r8730;
}


double f_of(float l, float Om, float kx, float ky) {
        float r8731 = 1;
        float r8732 = 2;
        float r8733 = r8731 / r8732;
        float r8734 = l;
        float r8735 = r8732 * r8734;
        float r8736 = Om;
        float r8737 = r8735 / r8736;
        float r8738 = pow(r8737, r8732);
        float r8739 = kx;
        float r8740 = sin(r8739);
        float r8741 = pow(r8740, r8732);
        float r8742 = ky;
        float r8743 = sin(r8742);
        float r8744 = pow(r8743, r8732);
        float r8745 = r8741 + r8744;
        float r8746 = r8738 * r8745;
        float r8747 = r8731 + r8746;
        float r8748 = sqrt(r8747);
        float r8749 = r8731 / r8748;
        float r8750 = exp(r8749);
        float r8751 = log(r8750);
        float r8752 = r8731 + r8751;
        float r8753 = r8733 * r8752;
        float r8754 = sqrt(r8753);
        return r8754;
}

double f_od(double l, double Om, double kx, double ky) {
        double r8755 = 1;
        double r8756 = 2;
        double r8757 = r8755 / r8756;
        double r8758 = l;
        double r8759 = r8756 * r8758;
        double r8760 = Om;
        double r8761 = r8759 / r8760;
        double r8762 = pow(r8761, r8756);
        double r8763 = kx;
        double r8764 = sin(r8763);
        double r8765 = pow(r8764, r8756);
        double r8766 = ky;
        double r8767 = sin(r8766);
        double r8768 = pow(r8767, r8756);
        double r8769 = r8765 + r8768;
        double r8770 = r8762 * r8769;
        double r8771 = r8755 + r8770;
        double r8772 = sqrt(r8771);
        double r8773 = r8755 / r8772;
        double r8774 = exp(r8773);
        double r8775 = log(r8774);
        double r8776 = r8755 + r8775;
        double r8777 = r8757 * r8776;
        double r8778 = sqrt(r8777);
        return r8778;
}

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 r8779, r8780, r8781, r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796, r8797, r8798, r8799, r8800;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8779, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8780, "2", 10, MPFR_RNDN);
        mpfr_init(r8781);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
        mpfr_init(r8793);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init(r8797);
        mpfr_init(r8798);
        mpfr_init(r8799);
        mpfr_init(r8800);
}

double f_im(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8781, r8779, r8780, MPFR_RNDN);
        mpfr_set_d(r8782, l, MPFR_RNDN);
        mpfr_mul(r8783, r8780, r8782, MPFR_RNDN);
        mpfr_set_d(r8784, Om, MPFR_RNDN);
        mpfr_div(r8785, r8783, r8784, MPFR_RNDN);
        mpfr_pow(r8786, r8785, r8780, MPFR_RNDN);
        mpfr_set_d(r8787, kx, MPFR_RNDN);
        mpfr_sin(r8788, r8787, MPFR_RNDN);
        mpfr_pow(r8789, r8788, r8780, MPFR_RNDN);
        mpfr_set_d(r8790, ky, MPFR_RNDN);
        mpfr_sin(r8791, r8790, MPFR_RNDN);
        mpfr_pow(r8792, r8791, r8780, MPFR_RNDN);
        mpfr_add(r8793, r8789, r8792, MPFR_RNDN);
        mpfr_mul(r8794, r8786, r8793, MPFR_RNDN);
        mpfr_add(r8795, r8779, r8794, MPFR_RNDN);
        mpfr_sqrt(r8796, r8795, MPFR_RNDN);
        mpfr_div(r8797, r8779, r8796, MPFR_RNDN);
        mpfr_add(r8798, r8779, r8797, MPFR_RNDN);
        mpfr_mul(r8799, r8781, r8798, MPFR_RNDN);
        mpfr_sqrt(r8800, r8799, MPFR_RNDN);
        return mpfr_get_d(r8800, MPFR_RNDN);
}

static mpfr_t r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810, r8811, r8812, r8813, r8814, r8815, r8816, r8817, r8818, r8819, r8820, r8821, r8822, r8823, r8824;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init_set_str(r8801, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8802, "2", 10, MPFR_RNDN);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        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);
        mpfr_init(r8817);
        mpfr_init(r8818);
        mpfr_init(r8819);
        mpfr_init(r8820);
        mpfr_init(r8821);
        mpfr_init(r8822);
        mpfr_init(r8823);
        mpfr_init(r8824);
}

double f_fm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8803, r8801, r8802, MPFR_RNDN);
        mpfr_set_d(r8804, l, MPFR_RNDN);
        mpfr_mul(r8805, r8802, r8804, MPFR_RNDN);
        mpfr_set_d(r8806, Om, MPFR_RNDN);
        mpfr_div(r8807, r8805, r8806, MPFR_RNDN);
        mpfr_pow(r8808, r8807, r8802, MPFR_RNDN);
        mpfr_set_d(r8809, kx, MPFR_RNDN);
        mpfr_sin(r8810, r8809, MPFR_RNDN);
        mpfr_pow(r8811, r8810, r8802, MPFR_RNDN);
        mpfr_set_d(r8812, ky, MPFR_RNDN);
        mpfr_sin(r8813, r8812, MPFR_RNDN);
        mpfr_pow(r8814, r8813, r8802, MPFR_RNDN);
        mpfr_add(r8815, r8811, r8814, MPFR_RNDN);
        mpfr_mul(r8816, r8808, r8815, MPFR_RNDN);
        mpfr_add(r8817, r8801, r8816, MPFR_RNDN);
        mpfr_sqrt(r8818, r8817, MPFR_RNDN);
        mpfr_div(r8819, r8801, r8818, MPFR_RNDN);
        mpfr_exp(r8820, r8819, MPFR_RNDN);
        mpfr_log(r8821, r8820, MPFR_RNDN);
        mpfr_add(r8822, r8801, r8821, MPFR_RNDN);
        mpfr_mul(r8823, r8803, r8822, MPFR_RNDN);
        mpfr_sqrt(r8824, r8823, MPFR_RNDN);
        return mpfr_get_d(r8824, MPFR_RNDN);
}

static mpfr_t r8825, r8826, r8827, r8828, r8829, r8830, r8831, r8832, 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(336);
        mpfr_init_set_str(r8825, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8826, "2", 10, MPFR_RNDN);
        mpfr_init(r8827);
        mpfr_init(r8828);
        mpfr_init(r8829);
        mpfr_init(r8830);
        mpfr_init(r8831);
        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);
}

double f_dm(double l, double Om, double kx, double ky) {
        ;
        ;
        mpfr_div(r8827, r8825, r8826, MPFR_RNDN);
        mpfr_set_d(r8828, l, MPFR_RNDN);
        mpfr_mul(r8829, r8826, r8828, MPFR_RNDN);
        mpfr_set_d(r8830, Om, MPFR_RNDN);
        mpfr_div(r8831, r8829, r8830, MPFR_RNDN);
        mpfr_pow(r8832, r8831, r8826, MPFR_RNDN);
        mpfr_set_d(r8833, kx, MPFR_RNDN);
        mpfr_sin(r8834, r8833, MPFR_RNDN);
        mpfr_pow(r8835, r8834, r8826, MPFR_RNDN);
        mpfr_set_d(r8836, ky, MPFR_RNDN);
        mpfr_sin(r8837, r8836, MPFR_RNDN);
        mpfr_pow(r8838, r8837, r8826, MPFR_RNDN);
        mpfr_add(r8839, r8835, r8838, MPFR_RNDN);
        mpfr_mul(r8840, r8832, r8839, MPFR_RNDN);
        mpfr_add(r8841, r8825, r8840, MPFR_RNDN);
        mpfr_sqrt(r8842, r8841, MPFR_RNDN);
        mpfr_div(r8843, r8825, r8842, MPFR_RNDN);
        mpfr_exp(r8844, r8843, MPFR_RNDN);
        mpfr_log(r8845, r8844, MPFR_RNDN);
        mpfr_add(r8846, r8825, r8845, MPFR_RNDN);
        mpfr_mul(r8847, r8827, r8846, MPFR_RNDN);
        mpfr_sqrt(r8848, r8847, MPFR_RNDN);
        return mpfr_get_d(r8848, MPFR_RNDN);
}

