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

char *name = "Octave 3.8, jcobi/1";

double f_if(float alpha, float beta) {
        float r17669 = beta;
        float r17670 = alpha;
        float r17671 = r17669 - r17670;
        float r17672 = r17670 + r17669;
        float r17673 = 2.0f;
        float r17674 = r17672 + r17673;
        float r17675 = r17671 / r17674;
        float r17676 = 1.0f;
        float r17677 = r17675 + r17676;
        float r17678 = r17677 / r17673;
        return r17678;
}

double f_id(double alpha, double beta) {
        double r17679 = beta;
        double r17680 = alpha;
        double r17681 = r17679 - r17680;
        double r17682 = r17680 + r17679;
        double r17683 = 2.0;
        double r17684 = r17682 + r17683;
        double r17685 = r17681 / r17684;
        double r17686 = 1.0;
        double r17687 = r17685 + r17686;
        double r17688 = r17687 / r17683;
        return r17688;
}


double f_of(float alpha, float beta) {
        float r17689 = beta;
        float r17690 = alpha;
        float r17691 = r17689 - r17690;
        float r17692 = r17690 + r17689;
        float r17693 = 2.0f;
        float r17694 = r17692 + r17693;
        float r17695 = r17691 / r17694;
        float r17696 = -0.9997063657335743f;
        bool r17697 = r17695 <= r17696;
        float r17698 = 8.0f;
        float r17699 = r17698 / r17690;
        float r17700 = r17699 / r17690;
        float r17701 = r17693 + r17700;
        float r17702 = r17693 * r17690;
        float r17703 = r17701 / r17702;
        float r17704 = r17689 / r17693;
        float r17705 = r17693 + r17689;
        float r17706 = r17690 + r17705;
        float r17707 = r17704 / r17706;
        float r17708 = 4.0f;
        float r17709 = r17690 * r17690;
        float r17710 = r17708 / r17709;
        float r17711 = r17710 / r17693;
        float r17712 = r17707 - r17711;
        float r17713 = r17703 + r17712;
        float r17714 = r17689 / r17694;
        float r17715 = r17690 / r17694;
        float r17716 = 1.0f;
        float r17717 = r17715 - r17716;
        float r17718 = r17714 - r17717;
        float r17719 = log(r17718);
        float r17720 = exp(r17719);
        float r17721 = r17720 / r17693;
        float r17722 = r17697 ? r17713 : r17721;
        return r17722;
}

double f_od(double alpha, double beta) {
        double r17723 = beta;
        double r17724 = alpha;
        double r17725 = r17723 - r17724;
        double r17726 = r17724 + r17723;
        double r17727 = 2.0;
        double r17728 = r17726 + r17727;
        double r17729 = r17725 / r17728;
        double r17730 = -0.9997063657335743;
        bool r17731 = r17729 <= r17730;
        double r17732 = 8.0;
        double r17733 = r17732 / r17724;
        double r17734 = r17733 / r17724;
        double r17735 = r17727 + r17734;
        double r17736 = r17727 * r17724;
        double r17737 = r17735 / r17736;
        double r17738 = r17723 / r17727;
        double r17739 = r17727 + r17723;
        double r17740 = r17724 + r17739;
        double r17741 = r17738 / r17740;
        double r17742 = 4.0;
        double r17743 = r17724 * r17724;
        double r17744 = r17742 / r17743;
        double r17745 = r17744 / r17727;
        double r17746 = r17741 - r17745;
        double r17747 = r17737 + r17746;
        double r17748 = r17723 / r17728;
        double r17749 = r17724 / r17728;
        double r17750 = 1.0;
        double r17751 = r17749 - r17750;
        double r17752 = r17748 - r17751;
        double r17753 = log(r17752);
        double r17754 = exp(r17753);
        double r17755 = r17754 / r17727;
        double r17756 = r17731 ? r17747 : r17755;
        return r17756;
}

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 r17757, r17758, r17759, r17760, r17761, r17762, r17763, r17764, r17765, r17766;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r17757);
        mpfr_init(r17758);
        mpfr_init(r17759);
        mpfr_init(r17760);
        mpfr_init_set_str(r17761, "2.0", 10, MPFR_RNDN);
        mpfr_init(r17762);
        mpfr_init(r17763);
        mpfr_init_set_str(r17764, "1.0", 10, MPFR_RNDN);
        mpfr_init(r17765);
        mpfr_init(r17766);
}

double f_im(double alpha, double beta) {
        mpfr_set_d(r17757, beta, MPFR_RNDN);
        mpfr_set_d(r17758, alpha, MPFR_RNDN);
        mpfr_sub(r17759, r17757, r17758, MPFR_RNDN);
        mpfr_add(r17760, r17758, r17757, MPFR_RNDN);
        ;
        mpfr_add(r17762, r17760, r17761, MPFR_RNDN);
        mpfr_div(r17763, r17759, r17762, MPFR_RNDN);
        ;
        mpfr_add(r17765, r17763, r17764, MPFR_RNDN);
        mpfr_div(r17766, r17765, r17761, MPFR_RNDN);
        return mpfr_get_d(r17766, MPFR_RNDN);
}

static mpfr_t r17767, r17768, r17769, r17770, r17771, r17772, r17773, r17774, r17775, r17776, r17777, r17778, r17779, r17780, r17781, r17782, r17783, r17784, r17785, r17786, r17787, r17788, r17789, r17790, r17791, r17792, r17793, r17794, r17795, r17796, r17797, r17798, r17799, r17800;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17767);
        mpfr_init(r17768);
        mpfr_init(r17769);
        mpfr_init(r17770);
        mpfr_init_set_str(r17771, "2.0", 10, MPFR_RNDN);
        mpfr_init(r17772);
        mpfr_init(r17773);
        mpfr_init_set_str(r17774, "-0.9997063657335743", 10, MPFR_RNDN);
        mpfr_init(r17775);
        mpfr_init_set_str(r17776, "8.0", 10, MPFR_RNDN);
        mpfr_init(r17777);
        mpfr_init(r17778);
        mpfr_init(r17779);
        mpfr_init(r17780);
        mpfr_init(r17781);
        mpfr_init(r17782);
        mpfr_init(r17783);
        mpfr_init(r17784);
        mpfr_init(r17785);
        mpfr_init_set_str(r17786, "4.0", 10, MPFR_RNDN);
        mpfr_init(r17787);
        mpfr_init(r17788);
        mpfr_init(r17789);
        mpfr_init(r17790);
        mpfr_init(r17791);
        mpfr_init(r17792);
        mpfr_init(r17793);
        mpfr_init_set_str(r17794, "1.0", 10, MPFR_RNDN);
        mpfr_init(r17795);
        mpfr_init(r17796);
        mpfr_init(r17797);
        mpfr_init(r17798);
        mpfr_init(r17799);
        mpfr_init(r17800);
}

double f_fm(double alpha, double beta) {
        mpfr_set_d(r17767, beta, MPFR_RNDN);
        mpfr_set_d(r17768, alpha, MPFR_RNDN);
        mpfr_sub(r17769, r17767, r17768, MPFR_RNDN);
        mpfr_add(r17770, r17768, r17767, MPFR_RNDN);
        ;
        mpfr_add(r17772, r17770, r17771, MPFR_RNDN);
        mpfr_div(r17773, r17769, r17772, MPFR_RNDN);
        ;
        mpfr_set_si(r17775, mpfr_cmp(r17773, r17774) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r17777, r17776, r17768, MPFR_RNDN);
        mpfr_div(r17778, r17777, r17768, MPFR_RNDN);
        mpfr_add(r17779, r17771, r17778, MPFR_RNDN);
        mpfr_mul(r17780, r17771, r17768, MPFR_RNDN);
        mpfr_div(r17781, r17779, r17780, MPFR_RNDN);
        mpfr_div(r17782, r17767, r17771, MPFR_RNDN);
        mpfr_add(r17783, r17771, r17767, MPFR_RNDN);
        mpfr_add(r17784, r17768, r17783, MPFR_RNDN);
        mpfr_div(r17785, r17782, r17784, MPFR_RNDN);
        ;
        mpfr_mul(r17787, r17768, r17768, MPFR_RNDN);
        mpfr_div(r17788, r17786, r17787, MPFR_RNDN);
        mpfr_div(r17789, r17788, r17771, MPFR_RNDN);
        mpfr_sub(r17790, r17785, r17789, MPFR_RNDN);
        mpfr_add(r17791, r17781, r17790, MPFR_RNDN);
        mpfr_div(r17792, r17767, r17772, MPFR_RNDN);
        mpfr_div(r17793, r17768, r17772, MPFR_RNDN);
        ;
        mpfr_sub(r17795, r17793, r17794, MPFR_RNDN);
        mpfr_sub(r17796, r17792, r17795, MPFR_RNDN);
        mpfr_log(r17797, r17796, MPFR_RNDN);
        mpfr_exp(r17798, r17797, MPFR_RNDN);
        mpfr_div(r17799, r17798, r17771, MPFR_RNDN);
        if (mpfr_get_si(r17775, MPFR_RNDN)) { mpfr_set(r17800, r17791, MPFR_RNDN); } else { mpfr_set(r17800, r17799, MPFR_RNDN); };
        return mpfr_get_d(r17800, MPFR_RNDN);
}

static mpfr_t r17801, r17802, r17803, r17804, r17805, r17806, r17807, r17808, r17809, r17810, r17811, r17812, r17813, r17814, r17815, r17816, r17817, r17818, r17819, r17820, r17821, r17822, r17823, r17824, r17825, r17826, r17827, r17828, r17829, r17830, r17831, r17832, r17833, r17834;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r17801);
        mpfr_init(r17802);
        mpfr_init(r17803);
        mpfr_init(r17804);
        mpfr_init_set_str(r17805, "2.0", 10, MPFR_RNDN);
        mpfr_init(r17806);
        mpfr_init(r17807);
        mpfr_init_set_str(r17808, "-0.9997063657335743", 10, MPFR_RNDN);
        mpfr_init(r17809);
        mpfr_init_set_str(r17810, "8.0", 10, MPFR_RNDN);
        mpfr_init(r17811);
        mpfr_init(r17812);
        mpfr_init(r17813);
        mpfr_init(r17814);
        mpfr_init(r17815);
        mpfr_init(r17816);
        mpfr_init(r17817);
        mpfr_init(r17818);
        mpfr_init(r17819);
        mpfr_init_set_str(r17820, "4.0", 10, MPFR_RNDN);
        mpfr_init(r17821);
        mpfr_init(r17822);
        mpfr_init(r17823);
        mpfr_init(r17824);
        mpfr_init(r17825);
        mpfr_init(r17826);
        mpfr_init(r17827);
        mpfr_init_set_str(r17828, "1.0", 10, MPFR_RNDN);
        mpfr_init(r17829);
        mpfr_init(r17830);
        mpfr_init(r17831);
        mpfr_init(r17832);
        mpfr_init(r17833);
        mpfr_init(r17834);
}

double f_dm(double alpha, double beta) {
        mpfr_set_d(r17801, beta, MPFR_RNDN);
        mpfr_set_d(r17802, alpha, MPFR_RNDN);
        mpfr_sub(r17803, r17801, r17802, MPFR_RNDN);
        mpfr_add(r17804, r17802, r17801, MPFR_RNDN);
        ;
        mpfr_add(r17806, r17804, r17805, MPFR_RNDN);
        mpfr_div(r17807, r17803, r17806, MPFR_RNDN);
        ;
        mpfr_set_si(r17809, mpfr_cmp(r17807, r17808) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r17811, r17810, r17802, MPFR_RNDN);
        mpfr_div(r17812, r17811, r17802, MPFR_RNDN);
        mpfr_add(r17813, r17805, r17812, MPFR_RNDN);
        mpfr_mul(r17814, r17805, r17802, MPFR_RNDN);
        mpfr_div(r17815, r17813, r17814, MPFR_RNDN);
        mpfr_div(r17816, r17801, r17805, MPFR_RNDN);
        mpfr_add(r17817, r17805, r17801, MPFR_RNDN);
        mpfr_add(r17818, r17802, r17817, MPFR_RNDN);
        mpfr_div(r17819, r17816, r17818, MPFR_RNDN);
        ;
        mpfr_mul(r17821, r17802, r17802, MPFR_RNDN);
        mpfr_div(r17822, r17820, r17821, MPFR_RNDN);
        mpfr_div(r17823, r17822, r17805, MPFR_RNDN);
        mpfr_sub(r17824, r17819, r17823, MPFR_RNDN);
        mpfr_add(r17825, r17815, r17824, MPFR_RNDN);
        mpfr_div(r17826, r17801, r17806, MPFR_RNDN);
        mpfr_div(r17827, r17802, r17806, MPFR_RNDN);
        ;
        mpfr_sub(r17829, r17827, r17828, MPFR_RNDN);
        mpfr_sub(r17830, r17826, r17829, MPFR_RNDN);
        mpfr_log(r17831, r17830, MPFR_RNDN);
        mpfr_exp(r17832, r17831, MPFR_RNDN);
        mpfr_div(r17833, r17832, r17805, MPFR_RNDN);
        if (mpfr_get_si(r17809, MPFR_RNDN)) { mpfr_set(r17834, r17825, MPFR_RNDN); } else { mpfr_set(r17834, r17833, MPFR_RNDN); };
        return mpfr_get_d(r17834, MPFR_RNDN);
}

