#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 r56507576 = beta;
        float r56507577 = alpha;
        float r56507578 = r56507576 - r56507577;
        float r56507579 = r56507577 + r56507576;
        float r56507580 = 2.0;
        float r56507581 = r56507579 + r56507580;
        float r56507582 = r56507578 / r56507581;
        float r56507583 = 1.0;
        float r56507584 = r56507582 + r56507583;
        float r56507585 = r56507584 / r56507580;
        return r56507585;
}

double f_id(double alpha, double beta) {
        double r56507586 = beta;
        double r56507587 = alpha;
        double r56507588 = r56507586 - r56507587;
        double r56507589 = r56507587 + r56507586;
        double r56507590 = 2.0;
        double r56507591 = r56507589 + r56507590;
        double r56507592 = r56507588 / r56507591;
        double r56507593 = 1.0;
        double r56507594 = r56507592 + r56507593;
        double r56507595 = r56507594 / r56507590;
        return r56507595;
}


double f_of(float alpha, float beta) {
        float r56507596 = beta;
        float r56507597 = alpha;
        float r56507598 = r56507596 - r56507597;
        float r56507599 = r56507597 + r56507596;
        float r56507600 = 2.0;
        float r56507601 = r56507599 + r56507600;
        float r56507602 = r56507598 / r56507601;
        float r56507603 = 1.0;
        float r56507604 = r56507602 + r56507603;
        float r56507605 = r56507604 / r56507600;
        float r56507606 = 2.2182256032010628e-13;
        bool r56507607 = r56507605 <= r56507606;
        float r56507608 = r56507596 / r56507600;
        float r56507609 = r56507600 + r56507597;
        float r56507610 = r56507596 + r56507609;
        float r56507611 = r56507608 / r56507610;
        float r56507612 = 4.0;
        float r56507613 = 8.0;
        float r56507614 = r56507613 / r56507597;
        float r56507615 = r56507612 - r56507614;
        float r56507616 = r56507597 * r56507597;
        float r56507617 = r56507600 * r56507616;
        float r56507618 = r56507615 / r56507617;
        float r56507619 = 1;
        float r56507620 = r56507619 / r56507597;
        float r56507621 = r56507620 / r56507619;
        float r56507622 = r56507618 - r56507621;
        float r56507623 = r56507611 - r56507622;
        float r56507624 = r56507596 / r56507601;
        float r56507625 = r56507619 / r56507601;
        float r56507626 = r56507597 * r56507625;
        float r56507627 = r56507626 - r56507603;
        float r56507628 = exp(r56507627);
        float r56507629 = log(r56507628);
        float r56507630 = r56507624 - r56507629;
        float r56507631 = r56507630 / r56507600;
        float r56507632 = r56507607 ? r56507623 : r56507631;
        return r56507632;
}

double f_od(double alpha, double beta) {
        double r56507633 = beta;
        double r56507634 = alpha;
        double r56507635 = r56507633 - r56507634;
        double r56507636 = r56507634 + r56507633;
        double r56507637 = 2.0;
        double r56507638 = r56507636 + r56507637;
        double r56507639 = r56507635 / r56507638;
        double r56507640 = 1.0;
        double r56507641 = r56507639 + r56507640;
        double r56507642 = r56507641 / r56507637;
        double r56507643 = 2.2182256032010628e-13;
        bool r56507644 = r56507642 <= r56507643;
        double r56507645 = r56507633 / r56507637;
        double r56507646 = r56507637 + r56507634;
        double r56507647 = r56507633 + r56507646;
        double r56507648 = r56507645 / r56507647;
        double r56507649 = 4.0;
        double r56507650 = 8.0;
        double r56507651 = r56507650 / r56507634;
        double r56507652 = r56507649 - r56507651;
        double r56507653 = r56507634 * r56507634;
        double r56507654 = r56507637 * r56507653;
        double r56507655 = r56507652 / r56507654;
        double r56507656 = 1;
        double r56507657 = r56507656 / r56507634;
        double r56507658 = r56507657 / r56507656;
        double r56507659 = r56507655 - r56507658;
        double r56507660 = r56507648 - r56507659;
        double r56507661 = r56507633 / r56507638;
        double r56507662 = r56507656 / r56507638;
        double r56507663 = r56507634 * r56507662;
        double r56507664 = r56507663 - r56507640;
        double r56507665 = exp(r56507664);
        double r56507666 = log(r56507665);
        double r56507667 = r56507661 - r56507666;
        double r56507668 = r56507667 / r56507637;
        double r56507669 = r56507644 ? r56507660 : r56507668;
        return r56507669;
}

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 r56507670, r56507671, r56507672, r56507673, r56507674, r56507675, r56507676, r56507677, r56507678, r56507679;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507670);
        mpfr_init(r56507671);
        mpfr_init(r56507672);
        mpfr_init(r56507673);
        mpfr_init_set_str(r56507674, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507675);
        mpfr_init(r56507676);
        mpfr_init_set_str(r56507677, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507678);
        mpfr_init(r56507679);
}

double f_im(double alpha, double beta) {
        mpfr_set_d(r56507670, beta, MPFR_RNDN);
        mpfr_set_d(r56507671, alpha, MPFR_RNDN);
        mpfr_sub(r56507672, r56507670, r56507671, MPFR_RNDN);
        mpfr_add(r56507673, r56507671, r56507670, MPFR_RNDN);
        ;
        mpfr_add(r56507675, r56507673, r56507674, MPFR_RNDN);
        mpfr_div(r56507676, r56507672, r56507675, MPFR_RNDN);
        ;
        mpfr_add(r56507678, r56507676, r56507677, MPFR_RNDN);
        mpfr_div(r56507679, r56507678, r56507674, MPFR_RNDN);
        return mpfr_get_d(r56507679, MPFR_RNDN);
}

static mpfr_t r56507680, r56507681, r56507682, r56507683, r56507684, r56507685, r56507686, r56507687, r56507688, r56507689, r56507690, r56507691, r56507692, r56507693, r56507694, r56507695, r56507696, r56507697, r56507698, r56507699, r56507700, r56507701, r56507702, r56507703, r56507704, r56507705, r56507706, r56507707, r56507708, r56507709, r56507710, r56507711, r56507712, r56507713, r56507714, r56507715, r56507716;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507680);
        mpfr_init(r56507681);
        mpfr_init(r56507682);
        mpfr_init(r56507683);
        mpfr_init_set_str(r56507684, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507685);
        mpfr_init(r56507686);
        mpfr_init_set_str(r56507687, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507688);
        mpfr_init(r56507689);
        mpfr_init_set_str(r56507690, "2.2182256032010628e-13", 10, MPFR_RNDN);
        mpfr_init(r56507691);
        mpfr_init(r56507692);
        mpfr_init(r56507693);
        mpfr_init(r56507694);
        mpfr_init(r56507695);
        mpfr_init_set_str(r56507696, "4.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r56507697, "8.0", 10, MPFR_RNDN);
        mpfr_init(r56507698);
        mpfr_init(r56507699);
        mpfr_init(r56507700);
        mpfr_init(r56507701);
        mpfr_init(r56507702);
        mpfr_init_set_str(r56507703, "1", 10, MPFR_RNDN);
        mpfr_init(r56507704);
        mpfr_init(r56507705);
        mpfr_init(r56507706);
        mpfr_init(r56507707);
        mpfr_init(r56507708);
        mpfr_init(r56507709);
        mpfr_init(r56507710);
        mpfr_init(r56507711);
        mpfr_init(r56507712);
        mpfr_init(r56507713);
        mpfr_init(r56507714);
        mpfr_init(r56507715);
        mpfr_init(r56507716);
}

double f_fm(double alpha, double beta) {
        mpfr_set_d(r56507680, beta, MPFR_RNDN);
        mpfr_set_d(r56507681, alpha, MPFR_RNDN);
        mpfr_sub(r56507682, r56507680, r56507681, MPFR_RNDN);
        mpfr_add(r56507683, r56507681, r56507680, MPFR_RNDN);
        ;
        mpfr_add(r56507685, r56507683, r56507684, MPFR_RNDN);
        mpfr_div(r56507686, r56507682, r56507685, MPFR_RNDN);
        ;
        mpfr_add(r56507688, r56507686, r56507687, MPFR_RNDN);
        mpfr_div(r56507689, r56507688, r56507684, MPFR_RNDN);
        ;
        mpfr_set_si(r56507691, mpfr_cmp(r56507689, r56507690) <= 0, MPFR_RNDN);
        mpfr_div(r56507692, r56507680, r56507684, MPFR_RNDN);
        mpfr_add(r56507693, r56507684, r56507681, MPFR_RNDN);
        mpfr_add(r56507694, r56507680, r56507693, MPFR_RNDN);
        mpfr_div(r56507695, r56507692, r56507694, MPFR_RNDN);
        ;
        ;
        mpfr_div(r56507698, r56507697, r56507681, MPFR_RNDN);
        mpfr_sub(r56507699, r56507696, r56507698, MPFR_RNDN);
        mpfr_mul(r56507700, r56507681, r56507681, MPFR_RNDN);
        mpfr_mul(r56507701, r56507684, r56507700, MPFR_RNDN);
        mpfr_div(r56507702, r56507699, r56507701, MPFR_RNDN);
        ;
        mpfr_div(r56507704, r56507703, r56507681, MPFR_RNDN);
        mpfr_div(r56507705, r56507704, r56507703, MPFR_RNDN);
        mpfr_sub(r56507706, r56507702, r56507705, MPFR_RNDN);
        mpfr_sub(r56507707, r56507695, r56507706, MPFR_RNDN);
        mpfr_div(r56507708, r56507680, r56507685, MPFR_RNDN);
        mpfr_div(r56507709, r56507703, r56507685, MPFR_RNDN);
        mpfr_mul(r56507710, r56507681, r56507709, MPFR_RNDN);
        mpfr_sub(r56507711, r56507710, r56507687, MPFR_RNDN);
        mpfr_exp(r56507712, r56507711, MPFR_RNDN);
        mpfr_log(r56507713, r56507712, MPFR_RNDN);
        mpfr_sub(r56507714, r56507708, r56507713, MPFR_RNDN);
        mpfr_div(r56507715, r56507714, r56507684, MPFR_RNDN);
        if (mpfr_get_si(r56507691, MPFR_RNDN)) { mpfr_set(r56507716, r56507707, MPFR_RNDN); } else { mpfr_set(r56507716, r56507715, MPFR_RNDN); };
        return mpfr_get_d(r56507716, MPFR_RNDN);
}

static mpfr_t r56507717, r56507718, r56507719, r56507720, r56507721, r56507722, r56507723, r56507724, r56507725, r56507726, r56507727, r56507728, r56507729, r56507730, r56507731, r56507732, r56507733, r56507734, r56507735, r56507736, r56507737, r56507738, r56507739, r56507740, r56507741, r56507742, r56507743, r56507744, r56507745, r56507746, r56507747, r56507748, r56507749, r56507750, r56507751, r56507752, r56507753;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507717);
        mpfr_init(r56507718);
        mpfr_init(r56507719);
        mpfr_init(r56507720);
        mpfr_init_set_str(r56507721, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507722);
        mpfr_init(r56507723);
        mpfr_init_set_str(r56507724, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507725);
        mpfr_init(r56507726);
        mpfr_init_set_str(r56507727, "2.2182256032010628e-13", 10, MPFR_RNDN);
        mpfr_init(r56507728);
        mpfr_init(r56507729);
        mpfr_init(r56507730);
        mpfr_init(r56507731);
        mpfr_init(r56507732);
        mpfr_init_set_str(r56507733, "4.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r56507734, "8.0", 10, MPFR_RNDN);
        mpfr_init(r56507735);
        mpfr_init(r56507736);
        mpfr_init(r56507737);
        mpfr_init(r56507738);
        mpfr_init(r56507739);
        mpfr_init_set_str(r56507740, "1", 10, MPFR_RNDN);
        mpfr_init(r56507741);
        mpfr_init(r56507742);
        mpfr_init(r56507743);
        mpfr_init(r56507744);
        mpfr_init(r56507745);
        mpfr_init(r56507746);
        mpfr_init(r56507747);
        mpfr_init(r56507748);
        mpfr_init(r56507749);
        mpfr_init(r56507750);
        mpfr_init(r56507751);
        mpfr_init(r56507752);
        mpfr_init(r56507753);
}

double f_dm(double alpha, double beta) {
        mpfr_set_d(r56507717, beta, MPFR_RNDN);
        mpfr_set_d(r56507718, alpha, MPFR_RNDN);
        mpfr_sub(r56507719, r56507717, r56507718, MPFR_RNDN);
        mpfr_add(r56507720, r56507718, r56507717, MPFR_RNDN);
        ;
        mpfr_add(r56507722, r56507720, r56507721, MPFR_RNDN);
        mpfr_div(r56507723, r56507719, r56507722, MPFR_RNDN);
        ;
        mpfr_add(r56507725, r56507723, r56507724, MPFR_RNDN);
        mpfr_div(r56507726, r56507725, r56507721, MPFR_RNDN);
        ;
        mpfr_set_si(r56507728, mpfr_cmp(r56507726, r56507727) <= 0, MPFR_RNDN);
        mpfr_div(r56507729, r56507717, r56507721, MPFR_RNDN);
        mpfr_add(r56507730, r56507721, r56507718, MPFR_RNDN);
        mpfr_add(r56507731, r56507717, r56507730, MPFR_RNDN);
        mpfr_div(r56507732, r56507729, r56507731, MPFR_RNDN);
        ;
        ;
        mpfr_div(r56507735, r56507734, r56507718, MPFR_RNDN);
        mpfr_sub(r56507736, r56507733, r56507735, MPFR_RNDN);
        mpfr_mul(r56507737, r56507718, r56507718, MPFR_RNDN);
        mpfr_mul(r56507738, r56507721, r56507737, MPFR_RNDN);
        mpfr_div(r56507739, r56507736, r56507738, MPFR_RNDN);
        ;
        mpfr_div(r56507741, r56507740, r56507718, MPFR_RNDN);
        mpfr_div(r56507742, r56507741, r56507740, MPFR_RNDN);
        mpfr_sub(r56507743, r56507739, r56507742, MPFR_RNDN);
        mpfr_sub(r56507744, r56507732, r56507743, MPFR_RNDN);
        mpfr_div(r56507745, r56507717, r56507722, MPFR_RNDN);
        mpfr_div(r56507746, r56507740, r56507722, MPFR_RNDN);
        mpfr_mul(r56507747, r56507718, r56507746, MPFR_RNDN);
        mpfr_sub(r56507748, r56507747, r56507724, MPFR_RNDN);
        mpfr_exp(r56507749, r56507748, MPFR_RNDN);
        mpfr_log(r56507750, r56507749, MPFR_RNDN);
        mpfr_sub(r56507751, r56507745, r56507750, MPFR_RNDN);
        mpfr_div(r56507752, r56507751, r56507721, MPFR_RNDN);
        if (mpfr_get_si(r56507728, MPFR_RNDN)) { mpfr_set(r56507753, r56507744, MPFR_RNDN); } else { mpfr_set(r56507753, r56507752, MPFR_RNDN); };
        return mpfr_get_d(r56507753, MPFR_RNDN);
}

