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

char *name = "Diagrams.Solve.Polynomial:cubForm  from diagrams-solve-0.1, D";

double f_if(float x, float y, float z, float t) {
        float r54675 = 1.0;
        float r54676 = 3.0;
        float r54677 = r54675 / r54676;
        float r54678 = x;
        float r54679 = y;
        float r54680 = 27.0;
        float r54681 = r54679 * r54680;
        float r54682 = r54678 / r54681;
        float r54683 = r54676 * r54682;
        float r54684 = z;
        float r54685 = 2.0;
        float r54686 = r54684 * r54685;
        float r54687 = r54683 / r54686;
        float r54688 = t;
        float r54689 = sqrt(r54688);
        float r54690 = r54687 * r54689;
        float r54691 = acos(r54690);
        float r54692 = r54677 * r54691;
        return r54692;
}

double f_id(double x, double y, double z, double t) {
        double r54693 = 1.0;
        double r54694 = 3.0;
        double r54695 = r54693 / r54694;
        double r54696 = x;
        double r54697 = y;
        double r54698 = 27.0;
        double r54699 = r54697 * r54698;
        double r54700 = r54696 / r54699;
        double r54701 = r54694 * r54700;
        double r54702 = z;
        double r54703 = 2.0;
        double r54704 = r54702 * r54703;
        double r54705 = r54701 / r54704;
        double r54706 = t;
        double r54707 = sqrt(r54706);
        double r54708 = r54705 * r54707;
        double r54709 = acos(r54708);
        double r54710 = r54695 * r54709;
        return r54710;
}


double f_of(float x, float y, float z, float t) {
        float r54711 = 1.0;
        float r54712 = 3.0;
        float r54713 = r54711 / r54712;
        float r54714 = x;
        float r54715 = y;
        float r54716 = 27.0;
        float r54717 = r54715 * r54716;
        float r54718 = r54714 / r54717;
        float r54719 = r54712 * r54718;
        float r54720 = z;
        float r54721 = 2.0;
        float r54722 = r54720 * r54721;
        float r54723 = r54719 / r54722;
        float r54724 = t;
        float r54725 = sqrt(r54724);
        float r54726 = r54723 * r54725;
        float r54727 = acos(r54726);
        float r54728 = r54713 * r54727;
        return r54728;
}

double f_od(double x, double y, double z, double t) {
        double r54729 = 1.0;
        double r54730 = 3.0;
        double r54731 = r54729 / r54730;
        double r54732 = x;
        double r54733 = y;
        double r54734 = 27.0;
        double r54735 = r54733 * r54734;
        double r54736 = r54732 / r54735;
        double r54737 = r54730 * r54736;
        double r54738 = z;
        double r54739 = 2.0;
        double r54740 = r54738 * r54739;
        double r54741 = r54737 / r54740;
        double r54742 = t;
        double r54743 = sqrt(r54742);
        double r54744 = r54741 * r54743;
        double r54745 = acos(r54744);
        double r54746 = r54731 * r54745;
        return r54746;
}

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 r54747, r54748, r54749, r54750, r54751, r54752, r54753, r54754, r54755, r54756, r54757, r54758, r54759, r54760, r54761, r54762, r54763, r54764;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54747, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54748, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54749);
        mpfr_init(r54750);
        mpfr_init(r54751);
        mpfr_init_set_str(r54752, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54753);
        mpfr_init(r54754);
        mpfr_init(r54755);
        mpfr_init(r54756);
        mpfr_init_set_str(r54757, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54758);
        mpfr_init(r54759);
        mpfr_init(r54760);
        mpfr_init(r54761);
        mpfr_init(r54762);
        mpfr_init(r54763);
        mpfr_init(r54764);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54749, r54747, r54748, MPFR_RNDN);
        mpfr_set_d(r54750, x, MPFR_RNDN);
        mpfr_set_d(r54751, y, MPFR_RNDN);
        ;
        mpfr_mul(r54753, r54751, r54752, MPFR_RNDN);
        mpfr_div(r54754, r54750, r54753, MPFR_RNDN);
        mpfr_mul(r54755, r54748, r54754, MPFR_RNDN);
        mpfr_set_d(r54756, z, MPFR_RNDN);
        ;
        mpfr_mul(r54758, r54756, r54757, MPFR_RNDN);
        mpfr_div(r54759, r54755, r54758, MPFR_RNDN);
        mpfr_set_d(r54760, t, MPFR_RNDN);
        mpfr_sqrt(r54761, r54760, MPFR_RNDN);
        mpfr_mul(r54762, r54759, r54761, MPFR_RNDN);
        mpfr_acos(r54763, r54762, MPFR_RNDN);
        mpfr_mul(r54764, r54749, r54763, MPFR_RNDN);
        return mpfr_get_d(r54764, MPFR_RNDN);
}

static mpfr_t r54765, r54766, r54767, r54768, r54769, r54770, r54771, r54772, r54773, r54774, r54775, r54776, r54777, r54778, r54779, r54780, r54781, r54782;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54765, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54766, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54767);
        mpfr_init(r54768);
        mpfr_init(r54769);
        mpfr_init_set_str(r54770, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54771);
        mpfr_init(r54772);
        mpfr_init(r54773);
        mpfr_init(r54774);
        mpfr_init_set_str(r54775, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54776);
        mpfr_init(r54777);
        mpfr_init(r54778);
        mpfr_init(r54779);
        mpfr_init(r54780);
        mpfr_init(r54781);
        mpfr_init(r54782);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54767, r54765, r54766, MPFR_RNDN);
        mpfr_set_d(r54768, x, MPFR_RNDN);
        mpfr_set_d(r54769, y, MPFR_RNDN);
        ;
        mpfr_mul(r54771, r54769, r54770, MPFR_RNDN);
        mpfr_div(r54772, r54768, r54771, MPFR_RNDN);
        mpfr_mul(r54773, r54766, r54772, MPFR_RNDN);
        mpfr_set_d(r54774, z, MPFR_RNDN);
        ;
        mpfr_mul(r54776, r54774, r54775, MPFR_RNDN);
        mpfr_div(r54777, r54773, r54776, MPFR_RNDN);
        mpfr_set_d(r54778, t, MPFR_RNDN);
        mpfr_sqrt(r54779, r54778, MPFR_RNDN);
        mpfr_mul(r54780, r54777, r54779, MPFR_RNDN);
        mpfr_acos(r54781, r54780, MPFR_RNDN);
        mpfr_mul(r54782, r54767, r54781, MPFR_RNDN);
        return mpfr_get_d(r54782, MPFR_RNDN);
}

static mpfr_t r54783, r54784, r54785, r54786, r54787, r54788, r54789, r54790, r54791, r54792, r54793, r54794, r54795, r54796, r54797, r54798, r54799, r54800;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54783, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54784, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54785);
        mpfr_init(r54786);
        mpfr_init(r54787);
        mpfr_init_set_str(r54788, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54789);
        mpfr_init(r54790);
        mpfr_init(r54791);
        mpfr_init(r54792);
        mpfr_init_set_str(r54793, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54794);
        mpfr_init(r54795);
        mpfr_init(r54796);
        mpfr_init(r54797);
        mpfr_init(r54798);
        mpfr_init(r54799);
        mpfr_init(r54800);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54785, r54783, r54784, MPFR_RNDN);
        mpfr_set_d(r54786, x, MPFR_RNDN);
        mpfr_set_d(r54787, y, MPFR_RNDN);
        ;
        mpfr_mul(r54789, r54787, r54788, MPFR_RNDN);
        mpfr_div(r54790, r54786, r54789, MPFR_RNDN);
        mpfr_mul(r54791, r54784, r54790, MPFR_RNDN);
        mpfr_set_d(r54792, z, MPFR_RNDN);
        ;
        mpfr_mul(r54794, r54792, r54793, MPFR_RNDN);
        mpfr_div(r54795, r54791, r54794, MPFR_RNDN);
        mpfr_set_d(r54796, t, MPFR_RNDN);
        mpfr_sqrt(r54797, r54796, MPFR_RNDN);
        mpfr_mul(r54798, r54795, r54797, MPFR_RNDN);
        mpfr_acos(r54799, r54798, MPFR_RNDN);
        mpfr_mul(r54800, r54785, r54799, MPFR_RNDN);
        return mpfr_get_d(r54800, MPFR_RNDN);
}

