#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 r8688 = 2.0f;
        float r8689 = t;
        float r8690 = 3.0f;
        float r8691 = pow(r8689, r8690);
        float r8692 = l;
        float r8693 = r8692 * r8692;
        float r8694 = r8691 / r8693;
        float r8695 = k;
        float r8696 = sin(r8695);
        float r8697 = r8694 * r8696;
        float r8698 = tan(r8695);
        float r8699 = r8697 * r8698;
        float r8700 = 1.0f;
        float r8701 = r8695 / r8689;
        float r8702 = pow(r8701, r8688);
        float r8703 = r8700 + r8702;
        float r8704 = r8703 - r8700;
        float r8705 = r8699 * r8704;
        float r8706 = r8688 / r8705;
        return r8706;
}

double f_id(double t, double l, double k) {
        double r8707 = 2.0;
        double r8708 = t;
        double r8709 = 3.0;
        double r8710 = pow(r8708, r8709);
        double r8711 = l;
        double r8712 = r8711 * r8711;
        double r8713 = r8710 / r8712;
        double r8714 = k;
        double r8715 = sin(r8714);
        double r8716 = r8713 * r8715;
        double r8717 = tan(r8714);
        double r8718 = r8716 * r8717;
        double r8719 = 1.0;
        double r8720 = r8714 / r8708;
        double r8721 = pow(r8720, r8707);
        double r8722 = r8719 + r8721;
        double r8723 = r8722 - r8719;
        double r8724 = r8718 * r8723;
        double r8725 = r8707 / r8724;
        return r8725;
}


double f_of(float t, float l, float k) {
        float r8726 = l;
        float r8727 = t;
        float r8728 = r8726 / r8727;
        float r8729 = k;
        float r8730 = r8729 / r8727;
        float r8731 = fabs(r8730);
        float r8732 = r8728 / r8731;
        float r8733 = tan(r8729);
        float r8734 = r8728 / r8733;
        float r8735 = 2.0f;
        float r8736 = r8735 / r8727;
        float r8737 = sin(r8729);
        float r8738 = r8736 / r8737;
        float r8739 = r8738 / r8731;
        float r8740 = r8734 * r8739;
        float r8741 = r8732 * r8740;
        return r8741;
}

double f_od(double t, double l, double k) {
        double r8742 = l;
        double r8743 = t;
        double r8744 = r8742 / r8743;
        double r8745 = k;
        double r8746 = r8745 / r8743;
        double r8747 = fabs(r8746);
        double r8748 = r8744 / r8747;
        double r8749 = tan(r8745);
        double r8750 = r8744 / r8749;
        double r8751 = 2.0;
        double r8752 = r8751 / r8743;
        double r8753 = sin(r8745);
        double r8754 = r8752 / r8753;
        double r8755 = r8754 / r8747;
        double r8756 = r8750 * r8755;
        double r8757 = r8748 * r8756;
        return r8757;
}

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 r8758, r8759, r8760, r8761, r8762, r8763, r8764, r8765, r8766, r8767, r8768, r8769, r8770, r8771, r8772, r8773, r8774, r8775, r8776;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(4176);
        mpfr_init_set_str(r8758, "2", 10, MPFR_RNDN);
        mpfr_init(r8759);
        mpfr_init_set_str(r8760, "3", 10, MPFR_RNDN);
        mpfr_init(r8761);
        mpfr_init(r8762);
        mpfr_init(r8763);
        mpfr_init(r8764);
        mpfr_init(r8765);
        mpfr_init(r8766);
        mpfr_init(r8767);
        mpfr_init(r8768);
        mpfr_init(r8769);
        mpfr_init_set_str(r8770, "1", 10, MPFR_RNDN);
        mpfr_init(r8771);
        mpfr_init(r8772);
        mpfr_init(r8773);
        mpfr_init(r8774);
        mpfr_init(r8775);
        mpfr_init(r8776);
}

double f_im(double t, double l, double k) {
        ;
        mpfr_set_d(r8759, t, MPFR_RNDN);
        ;
        mpfr_pow(r8761, r8759, r8760, MPFR_RNDN);
        mpfr_set_d(r8762, l, MPFR_RNDN);
        mpfr_mul(r8763, r8762, r8762, MPFR_RNDN);
        mpfr_div(r8764, r8761, r8763, MPFR_RNDN);
        mpfr_set_d(r8765, k, MPFR_RNDN);
        mpfr_sin(r8766, r8765, MPFR_RNDN);
        mpfr_mul(r8767, r8764, r8766, MPFR_RNDN);
        mpfr_tan(r8768, r8765, MPFR_RNDN);
        mpfr_mul(r8769, r8767, r8768, MPFR_RNDN);
        ;
        mpfr_div(r8771, r8765, r8759, MPFR_RNDN);
        mpfr_pow(r8772, r8771, r8758, MPFR_RNDN);
        mpfr_add(r8773, r8770, r8772, MPFR_RNDN);
        mpfr_sub(r8774, r8773, r8770, MPFR_RNDN);
        mpfr_mul(r8775, r8769, r8774, MPFR_RNDN);
        mpfr_div(r8776, r8758, r8775, MPFR_RNDN);
        return mpfr_get_d(r8776, MPFR_RNDN);
}

static mpfr_t r8777, r8778, r8779, r8780, r8781, r8782, r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(4176);
        mpfr_init(r8777);
        mpfr_init(r8778);
        mpfr_init(r8779);
        mpfr_init(r8780);
        mpfr_init(r8781);
        mpfr_init(r8782);
        mpfr_init(r8783);
        mpfr_init(r8784);
        mpfr_init(r8785);
        mpfr_init_set_str(r8786, "2", 10, MPFR_RNDN);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init(r8792);
}

double f_fm(double t, double l, double k) {
        mpfr_set_d(r8777, l, MPFR_RNDN);
        mpfr_set_d(r8778, t, MPFR_RNDN);
        mpfr_div(r8779, r8777, r8778, MPFR_RNDN);
        mpfr_set_d(r8780, k, MPFR_RNDN);
        mpfr_div(r8781, r8780, r8778, MPFR_RNDN);
        mpfr_abs(r8782, r8781, MPFR_RNDN);
        mpfr_div(r8783, r8779, r8782, MPFR_RNDN);
        mpfr_tan(r8784, r8780, MPFR_RNDN);
        mpfr_div(r8785, r8779, r8784, MPFR_RNDN);
        ;
        mpfr_div(r8787, r8786, r8778, MPFR_RNDN);
        mpfr_sin(r8788, r8780, MPFR_RNDN);
        mpfr_div(r8789, r8787, r8788, MPFR_RNDN);
        mpfr_div(r8790, r8789, r8782, MPFR_RNDN);
        mpfr_mul(r8791, r8785, r8790, MPFR_RNDN);
        mpfr_mul(r8792, r8783, r8791, MPFR_RNDN);
        return mpfr_get_d(r8792, MPFR_RNDN);
}

static mpfr_t r8793, r8794, r8795, r8796, r8797, r8798, r8799, r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(4176);
        mpfr_init(r8793);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
        mpfr_init(r8797);
        mpfr_init(r8798);
        mpfr_init(r8799);
        mpfr_init(r8800);
        mpfr_init(r8801);
        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);
}

double f_dm(double t, double l, double k) {
        mpfr_set_d(r8793, l, MPFR_RNDN);
        mpfr_set_d(r8794, t, MPFR_RNDN);
        mpfr_div(r8795, r8793, r8794, MPFR_RNDN);
        mpfr_set_d(r8796, k, MPFR_RNDN);
        mpfr_div(r8797, r8796, r8794, MPFR_RNDN);
        mpfr_abs(r8798, r8797, MPFR_RNDN);
        mpfr_div(r8799, r8795, r8798, MPFR_RNDN);
        mpfr_tan(r8800, r8796, MPFR_RNDN);
        mpfr_div(r8801, r8795, r8800, MPFR_RNDN);
        ;
        mpfr_div(r8803, r8802, r8794, MPFR_RNDN);
        mpfr_sin(r8804, r8796, MPFR_RNDN);
        mpfr_div(r8805, r8803, r8804, MPFR_RNDN);
        mpfr_div(r8806, r8805, r8798, MPFR_RNDN);
        mpfr_mul(r8807, r8801, r8806, MPFR_RNDN);
        mpfr_mul(r8808, r8799, r8807, MPFR_RNDN);
        return mpfr_get_d(r8808, MPFR_RNDN);
}

