#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 r54757 = 1.0;
        float r54758 = 3.0;
        float r54759 = r54757 / r54758;
        float r54760 = x;
        float r54761 = y;
        float r54762 = 27.0;
        float r54763 = r54761 * r54762;
        float r54764 = r54760 / r54763;
        float r54765 = r54758 * r54764;
        float r54766 = z;
        float r54767 = 2.0;
        float r54768 = r54766 * r54767;
        float r54769 = r54765 / r54768;
        float r54770 = t;
        float r54771 = sqrt(r54770);
        float r54772 = r54769 * r54771;
        float r54773 = acos(r54772);
        float r54774 = r54759 * r54773;
        return r54774;
}

double f_id(double x, double y, double z, double t) {
        double r54775 = 1.0;
        double r54776 = 3.0;
        double r54777 = r54775 / r54776;
        double r54778 = x;
        double r54779 = y;
        double r54780 = 27.0;
        double r54781 = r54779 * r54780;
        double r54782 = r54778 / r54781;
        double r54783 = r54776 * r54782;
        double r54784 = z;
        double r54785 = 2.0;
        double r54786 = r54784 * r54785;
        double r54787 = r54783 / r54786;
        double r54788 = t;
        double r54789 = sqrt(r54788);
        double r54790 = r54787 * r54789;
        double r54791 = acos(r54790);
        double r54792 = r54777 * r54791;
        return r54792;
}


double f_of(float x, float y, float z, float t) {
        float r54793 = 1.0;
        float r54794 = 3.0;
        float r54795 = r54793 / r54794;
        float r54796 = x;
        float r54797 = y;
        float r54798 = 27.0;
        float r54799 = r54797 * r54798;
        float r54800 = r54796 / r54799;
        float r54801 = r54794 * r54800;
        float r54802 = z;
        float r54803 = 2.0;
        float r54804 = r54802 * r54803;
        float r54805 = r54801 / r54804;
        float r54806 = t;
        float r54807 = sqrt(r54806);
        float r54808 = r54805 * r54807;
        float r54809 = acos(r54808);
        float r54810 = r54795 * r54809;
        return r54810;
}

double f_od(double x, double y, double z, double t) {
        double r54811 = 1.0;
        double r54812 = 3.0;
        double r54813 = r54811 / r54812;
        double r54814 = x;
        double r54815 = y;
        double r54816 = 27.0;
        double r54817 = r54815 * r54816;
        double r54818 = r54814 / r54817;
        double r54819 = r54812 * r54818;
        double r54820 = z;
        double r54821 = 2.0;
        double r54822 = r54820 * r54821;
        double r54823 = r54819 / r54822;
        double r54824 = t;
        double r54825 = sqrt(r54824);
        double r54826 = r54823 * r54825;
        double r54827 = acos(r54826);
        double r54828 = r54813 * r54827;
        return r54828;
}

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 r54829, r54830, r54831, r54832, r54833, r54834, r54835, r54836, r54837, r54838, r54839, r54840, r54841, r54842, r54843, r54844, r54845, r54846;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54829, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54830, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54831);
        mpfr_init(r54832);
        mpfr_init(r54833);
        mpfr_init_set_str(r54834, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54835);
        mpfr_init(r54836);
        mpfr_init(r54837);
        mpfr_init(r54838);
        mpfr_init_set_str(r54839, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54840);
        mpfr_init(r54841);
        mpfr_init(r54842);
        mpfr_init(r54843);
        mpfr_init(r54844);
        mpfr_init(r54845);
        mpfr_init(r54846);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54831, r54829, r54830, MPFR_RNDN);
        mpfr_set_d(r54832, x, MPFR_RNDN);
        mpfr_set_d(r54833, y, MPFR_RNDN);
        ;
        mpfr_mul(r54835, r54833, r54834, MPFR_RNDN);
        mpfr_div(r54836, r54832, r54835, MPFR_RNDN);
        mpfr_mul(r54837, r54830, r54836, MPFR_RNDN);
        mpfr_set_d(r54838, z, MPFR_RNDN);
        ;
        mpfr_mul(r54840, r54838, r54839, MPFR_RNDN);
        mpfr_div(r54841, r54837, r54840, MPFR_RNDN);
        mpfr_set_d(r54842, t, MPFR_RNDN);
        mpfr_sqrt(r54843, r54842, MPFR_RNDN);
        mpfr_mul(r54844, r54841, r54843, MPFR_RNDN);
        mpfr_acos(r54845, r54844, MPFR_RNDN);
        mpfr_mul(r54846, r54831, r54845, MPFR_RNDN);
        return mpfr_get_d(r54846, MPFR_RNDN);
}

static mpfr_t r54847, r54848, r54849, r54850, r54851, r54852, r54853, r54854, r54855, r54856, r54857, r54858, r54859, r54860, r54861, r54862, r54863, r54864;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54847, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54848, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54849);
        mpfr_init(r54850);
        mpfr_init(r54851);
        mpfr_init_set_str(r54852, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54853);
        mpfr_init(r54854);
        mpfr_init(r54855);
        mpfr_init(r54856);
        mpfr_init_set_str(r54857, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54858);
        mpfr_init(r54859);
        mpfr_init(r54860);
        mpfr_init(r54861);
        mpfr_init(r54862);
        mpfr_init(r54863);
        mpfr_init(r54864);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54849, r54847, r54848, MPFR_RNDN);
        mpfr_set_d(r54850, x, MPFR_RNDN);
        mpfr_set_d(r54851, y, MPFR_RNDN);
        ;
        mpfr_mul(r54853, r54851, r54852, MPFR_RNDN);
        mpfr_div(r54854, r54850, r54853, MPFR_RNDN);
        mpfr_mul(r54855, r54848, r54854, MPFR_RNDN);
        mpfr_set_d(r54856, z, MPFR_RNDN);
        ;
        mpfr_mul(r54858, r54856, r54857, MPFR_RNDN);
        mpfr_div(r54859, r54855, r54858, MPFR_RNDN);
        mpfr_set_d(r54860, t, MPFR_RNDN);
        mpfr_sqrt(r54861, r54860, MPFR_RNDN);
        mpfr_mul(r54862, r54859, r54861, MPFR_RNDN);
        mpfr_acos(r54863, r54862, MPFR_RNDN);
        mpfr_mul(r54864, r54849, r54863, MPFR_RNDN);
        return mpfr_get_d(r54864, MPFR_RNDN);
}

static mpfr_t r54865, r54866, r54867, r54868, r54869, r54870, r54871, r54872, r54873, r54874, r54875, r54876, r54877, r54878, r54879, r54880, r54881, r54882;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54865, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54866, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54867);
        mpfr_init(r54868);
        mpfr_init(r54869);
        mpfr_init_set_str(r54870, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54871);
        mpfr_init(r54872);
        mpfr_init(r54873);
        mpfr_init(r54874);
        mpfr_init_set_str(r54875, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54876);
        mpfr_init(r54877);
        mpfr_init(r54878);
        mpfr_init(r54879);
        mpfr_init(r54880);
        mpfr_init(r54881);
        mpfr_init(r54882);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54867, r54865, r54866, MPFR_RNDN);
        mpfr_set_d(r54868, x, MPFR_RNDN);
        mpfr_set_d(r54869, y, MPFR_RNDN);
        ;
        mpfr_mul(r54871, r54869, r54870, MPFR_RNDN);
        mpfr_div(r54872, r54868, r54871, MPFR_RNDN);
        mpfr_mul(r54873, r54866, r54872, MPFR_RNDN);
        mpfr_set_d(r54874, z, MPFR_RNDN);
        ;
        mpfr_mul(r54876, r54874, r54875, MPFR_RNDN);
        mpfr_div(r54877, r54873, r54876, MPFR_RNDN);
        mpfr_set_d(r54878, t, MPFR_RNDN);
        mpfr_sqrt(r54879, r54878, MPFR_RNDN);
        mpfr_mul(r54880, r54877, r54879, MPFR_RNDN);
        mpfr_acos(r54881, r54880, MPFR_RNDN);
        mpfr_mul(r54882, r54867, r54881, MPFR_RNDN);
        return mpfr_get_d(r54882, MPFR_RNDN);
}

