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

char *name = "Diagrams.Solve.Tridiagonal:solveCyclicTriDiagonal from diagrams-solve-0.1, B";

double f_if(float x, float y, float z, float t, float a, float b) {
        float r51592 = x;
        float r51593 = y;
        float r51594 = z;
        float r51595 = r51593 * r51594;
        float r51596 = t;
        float r51597 = r51595 / r51596;
        float r51598 = r51592 + r51597;
        float r51599 = a;
        float r51600 = 1.0f;
        float r51601 = r51599 + r51600;
        float r51602 = b;
        float r51603 = r51593 * r51602;
        float r51604 = r51603 / r51596;
        float r51605 = r51601 + r51604;
        float r51606 = r51598 / r51605;
        return r51606;
}

double f_id(double x, double y, double z, double t, double a, double b) {
        double r51607 = x;
        double r51608 = y;
        double r51609 = z;
        double r51610 = r51608 * r51609;
        double r51611 = t;
        double r51612 = r51610 / r51611;
        double r51613 = r51607 + r51612;
        double r51614 = a;
        double r51615 = 1.0;
        double r51616 = r51614 + r51615;
        double r51617 = b;
        double r51618 = r51608 * r51617;
        double r51619 = r51618 / r51611;
        double r51620 = r51616 + r51619;
        double r51621 = r51613 / r51620;
        return r51621;
}


double f_of(float x, float y, float z, float t, float a, float b) {
        float r51622 = x;
        float r51623 = y;
        float r51624 = z;
        float r51625 = r51623 * r51624;
        float r51626 = t;
        float r51627 = r51625 / r51626;
        float r51628 = r51622 + r51627;
        float r51629 = a;
        float r51630 = 1.0f;
        float r51631 = r51629 + r51630;
        float r51632 = b;
        float r51633 = r51623 * r51632;
        float r51634 = r51633 / r51626;
        float r51635 = r51631 + r51634;
        float r51636 = r51628 / r51635;
        float r51637 = -1.6242936666275148e+39f;
        bool r51638 = r51636 <= r51637;
        float r51639 = 1.0f;
        float r51640 = r51639 / r51635;
        float r51641 = r51628 * r51640;
        float r51642 = -1.4475800306973208e-69f;
        bool r51643 = r51636 <= r51642;
        float r51644 = r51626 / r51632;
        float r51645 = r51623 / r51644;
        float r51646 = r51631 + r51645;
        float r51647 = r51628 / r51646;
        float r51648 = 0.0f;
        bool r51649 = r51636 <= r51648;
        float r51650 = r51649 ? r51647 : r51641;
        float r51651 = r51643 ? r51647 : r51650;
        float r51652 = r51638 ? r51641 : r51651;
        return r51652;
}

double f_od(double x, double y, double z, double t, double a, double b) {
        double r51653 = x;
        double r51654 = y;
        double r51655 = z;
        double r51656 = r51654 * r51655;
        double r51657 = t;
        double r51658 = r51656 / r51657;
        double r51659 = r51653 + r51658;
        double r51660 = a;
        double r51661 = 1.0;
        double r51662 = r51660 + r51661;
        double r51663 = b;
        double r51664 = r51654 * r51663;
        double r51665 = r51664 / r51657;
        double r51666 = r51662 + r51665;
        double r51667 = r51659 / r51666;
        double r51668 = -1.6242936666275148e+39;
        bool r51669 = r51667 <= r51668;
        double r51670 = 1.0;
        double r51671 = r51670 / r51666;
        double r51672 = r51659 * r51671;
        double r51673 = -1.4475800306973208e-69;
        bool r51674 = r51667 <= r51673;
        double r51675 = r51657 / r51663;
        double r51676 = r51654 / r51675;
        double r51677 = r51662 + r51676;
        double r51678 = r51659 / r51677;
        double r51679 = 0.0;
        bool r51680 = r51667 <= r51679;
        double r51681 = r51680 ? r51678 : r51672;
        double r51682 = r51674 ? r51678 : r51681;
        double r51683 = r51669 ? r51672 : r51682;
        return r51683;
}

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 r51684, r51685, r51686, r51687, r51688, r51689, r51690, r51691, r51692, r51693, r51694, r51695, r51696, r51697, r51698;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r51684);
        mpfr_init(r51685);
        mpfr_init(r51686);
        mpfr_init(r51687);
        mpfr_init(r51688);
        mpfr_init(r51689);
        mpfr_init(r51690);
        mpfr_init(r51691);
        mpfr_init_set_str(r51692, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51693);
        mpfr_init(r51694);
        mpfr_init(r51695);
        mpfr_init(r51696);
        mpfr_init(r51697);
        mpfr_init(r51698);
}

double f_im(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r51684, x, MPFR_RNDN);
        mpfr_set_d(r51685, y, MPFR_RNDN);
        mpfr_set_d(r51686, z, MPFR_RNDN);
        mpfr_mul(r51687, r51685, r51686, MPFR_RNDN);
        mpfr_set_d(r51688, t, MPFR_RNDN);
        mpfr_div(r51689, r51687, r51688, MPFR_RNDN);
        mpfr_add(r51690, r51684, r51689, MPFR_RNDN);
        mpfr_set_d(r51691, a, MPFR_RNDN);
        ;
        mpfr_add(r51693, r51691, r51692, MPFR_RNDN);
        mpfr_set_d(r51694, b, MPFR_RNDN);
        mpfr_mul(r51695, r51685, r51694, MPFR_RNDN);
        mpfr_div(r51696, r51695, r51688, MPFR_RNDN);
        mpfr_add(r51697, r51693, r51696, MPFR_RNDN);
        mpfr_div(r51698, r51690, r51697, MPFR_RNDN);
        return mpfr_get_d(r51698, MPFR_RNDN);
}

static mpfr_t r51699, r51700, r51701, r51702, r51703, r51704, r51705, r51706, r51707, r51708, r51709, r51710, r51711, r51712, r51713, r51714, r51715, r51716, r51717, r51718, r51719, r51720, r51721, r51722, r51723, r51724, r51725, r51726, r51727, r51728, r51729;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51699);
        mpfr_init(r51700);
        mpfr_init(r51701);
        mpfr_init(r51702);
        mpfr_init(r51703);
        mpfr_init(r51704);
        mpfr_init(r51705);
        mpfr_init(r51706);
        mpfr_init_set_str(r51707, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51708);
        mpfr_init(r51709);
        mpfr_init(r51710);
        mpfr_init(r51711);
        mpfr_init(r51712);
        mpfr_init(r51713);
        mpfr_init_set_str(r51714, "-1.6242936666275148e+39", 10, MPFR_RNDN);
        mpfr_init(r51715);
        mpfr_init_set_str(r51716, "1", 10, MPFR_RNDN);
        mpfr_init(r51717);
        mpfr_init(r51718);
        mpfr_init_set_str(r51719, "-1.4475800306973208e-69", 10, MPFR_RNDN);
        mpfr_init(r51720);
        mpfr_init(r51721);
        mpfr_init(r51722);
        mpfr_init(r51723);
        mpfr_init(r51724);
        mpfr_init_set_str(r51725, "0.0", 10, MPFR_RNDN);
        mpfr_init(r51726);
        mpfr_init(r51727);
        mpfr_init(r51728);
        mpfr_init(r51729);
}

double f_fm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r51699, x, MPFR_RNDN);
        mpfr_set_d(r51700, y, MPFR_RNDN);
        mpfr_set_d(r51701, z, MPFR_RNDN);
        mpfr_mul(r51702, r51700, r51701, MPFR_RNDN);
        mpfr_set_d(r51703, t, MPFR_RNDN);
        mpfr_div(r51704, r51702, r51703, MPFR_RNDN);
        mpfr_add(r51705, r51699, r51704, MPFR_RNDN);
        mpfr_set_d(r51706, a, MPFR_RNDN);
        ;
        mpfr_add(r51708, r51706, r51707, MPFR_RNDN);
        mpfr_set_d(r51709, b, MPFR_RNDN);
        mpfr_mul(r51710, r51700, r51709, MPFR_RNDN);
        mpfr_div(r51711, r51710, r51703, MPFR_RNDN);
        mpfr_add(r51712, r51708, r51711, MPFR_RNDN);
        mpfr_div(r51713, r51705, r51712, MPFR_RNDN);
        ;
        mpfr_set_si(r51715, mpfr_cmp(r51713, r51714) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r51717, r51716, r51712, MPFR_RNDN);
        mpfr_mul(r51718, r51705, r51717, MPFR_RNDN);
        ;
        mpfr_set_si(r51720, mpfr_cmp(r51713, r51719) <= 0, MPFR_RNDN);
        mpfr_div(r51721, r51703, r51709, MPFR_RNDN);
        mpfr_div(r51722, r51700, r51721, MPFR_RNDN);
        mpfr_add(r51723, r51708, r51722, MPFR_RNDN);
        mpfr_div(r51724, r51705, r51723, MPFR_RNDN);
        ;
        mpfr_set_si(r51726, mpfr_cmp(r51713, r51725) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r51726, MPFR_RNDN)) { mpfr_set(r51727, r51724, MPFR_RNDN); } else { mpfr_set(r51727, r51718, MPFR_RNDN); };
        if (mpfr_get_si(r51720, MPFR_RNDN)) { mpfr_set(r51728, r51724, MPFR_RNDN); } else { mpfr_set(r51728, r51727, MPFR_RNDN); };
        if (mpfr_get_si(r51715, MPFR_RNDN)) { mpfr_set(r51729, r51718, MPFR_RNDN); } else { mpfr_set(r51729, r51728, MPFR_RNDN); };
        return mpfr_get_d(r51729, MPFR_RNDN);
}

static mpfr_t r51730, r51731, r51732, r51733, r51734, r51735, r51736, r51737, r51738, r51739, r51740, r51741, r51742, r51743, r51744, r51745, r51746, r51747, r51748, r51749, r51750, r51751, r51752, r51753, r51754, r51755, r51756, r51757, r51758, r51759, r51760;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r51730);
        mpfr_init(r51731);
        mpfr_init(r51732);
        mpfr_init(r51733);
        mpfr_init(r51734);
        mpfr_init(r51735);
        mpfr_init(r51736);
        mpfr_init(r51737);
        mpfr_init_set_str(r51738, "1.0", 10, MPFR_RNDN);
        mpfr_init(r51739);
        mpfr_init(r51740);
        mpfr_init(r51741);
        mpfr_init(r51742);
        mpfr_init(r51743);
        mpfr_init(r51744);
        mpfr_init_set_str(r51745, "-1.6242936666275148e+39", 10, MPFR_RNDN);
        mpfr_init(r51746);
        mpfr_init_set_str(r51747, "1", 10, MPFR_RNDN);
        mpfr_init(r51748);
        mpfr_init(r51749);
        mpfr_init_set_str(r51750, "-1.4475800306973208e-69", 10, MPFR_RNDN);
        mpfr_init(r51751);
        mpfr_init(r51752);
        mpfr_init(r51753);
        mpfr_init(r51754);
        mpfr_init(r51755);
        mpfr_init_set_str(r51756, "0.0", 10, MPFR_RNDN);
        mpfr_init(r51757);
        mpfr_init(r51758);
        mpfr_init(r51759);
        mpfr_init(r51760);
}

double f_dm(double x, double y, double z, double t, double a, double b) {
        mpfr_set_d(r51730, x, MPFR_RNDN);
        mpfr_set_d(r51731, y, MPFR_RNDN);
        mpfr_set_d(r51732, z, MPFR_RNDN);
        mpfr_mul(r51733, r51731, r51732, MPFR_RNDN);
        mpfr_set_d(r51734, t, MPFR_RNDN);
        mpfr_div(r51735, r51733, r51734, MPFR_RNDN);
        mpfr_add(r51736, r51730, r51735, MPFR_RNDN);
        mpfr_set_d(r51737, a, MPFR_RNDN);
        ;
        mpfr_add(r51739, r51737, r51738, MPFR_RNDN);
        mpfr_set_d(r51740, b, MPFR_RNDN);
        mpfr_mul(r51741, r51731, r51740, MPFR_RNDN);
        mpfr_div(r51742, r51741, r51734, MPFR_RNDN);
        mpfr_add(r51743, r51739, r51742, MPFR_RNDN);
        mpfr_div(r51744, r51736, r51743, MPFR_RNDN);
        ;
        mpfr_set_si(r51746, mpfr_cmp(r51744, r51745) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r51748, r51747, r51743, MPFR_RNDN);
        mpfr_mul(r51749, r51736, r51748, MPFR_RNDN);
        ;
        mpfr_set_si(r51751, mpfr_cmp(r51744, r51750) <= 0, MPFR_RNDN);
        mpfr_div(r51752, r51734, r51740, MPFR_RNDN);
        mpfr_div(r51753, r51731, r51752, MPFR_RNDN);
        mpfr_add(r51754, r51739, r51753, MPFR_RNDN);
        mpfr_div(r51755, r51736, r51754, MPFR_RNDN);
        ;
        mpfr_set_si(r51757, mpfr_cmp(r51744, r51756) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r51757, MPFR_RNDN)) { mpfr_set(r51758, r51755, MPFR_RNDN); } else { mpfr_set(r51758, r51749, MPFR_RNDN); };
        if (mpfr_get_si(r51751, MPFR_RNDN)) { mpfr_set(r51759, r51755, MPFR_RNDN); } else { mpfr_set(r51759, r51758, MPFR_RNDN); };
        if (mpfr_get_si(r51746, MPFR_RNDN)) { mpfr_set(r51760, r51749, MPFR_RNDN); } else { mpfr_set(r51760, r51759, MPFR_RNDN); };
        return mpfr_get_d(r51760, MPFR_RNDN);
}

