#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 r54613 = 1.0;
        float r54614 = 3.0;
        float r54615 = r54613 / r54614;
        float r54616 = x;
        float r54617 = y;
        float r54618 = 27.0;
        float r54619 = r54617 * r54618;
        float r54620 = r54616 / r54619;
        float r54621 = r54614 * r54620;
        float r54622 = z;
        float r54623 = 2.0;
        float r54624 = r54622 * r54623;
        float r54625 = r54621 / r54624;
        float r54626 = t;
        float r54627 = sqrt(r54626);
        float r54628 = r54625 * r54627;
        float r54629 = acos(r54628);
        float r54630 = r54615 * r54629;
        return r54630;
}

double f_id(double x, double y, double z, double t) {
        double r54631 = 1.0;
        double r54632 = 3.0;
        double r54633 = r54631 / r54632;
        double r54634 = x;
        double r54635 = y;
        double r54636 = 27.0;
        double r54637 = r54635 * r54636;
        double r54638 = r54634 / r54637;
        double r54639 = r54632 * r54638;
        double r54640 = z;
        double r54641 = 2.0;
        double r54642 = r54640 * r54641;
        double r54643 = r54639 / r54642;
        double r54644 = t;
        double r54645 = sqrt(r54644);
        double r54646 = r54643 * r54645;
        double r54647 = acos(r54646);
        double r54648 = r54633 * r54647;
        return r54648;
}


double f_of(float x, float y, float z, float t) {
        float r54649 = 1.0;
        float r54650 = 3.0;
        float r54651 = r54649 / r54650;
        float r54652 = x;
        float r54653 = y;
        float r54654 = 27.0;
        float r54655 = r54653 * r54654;
        float r54656 = r54652 / r54655;
        float r54657 = r54650 * r54656;
        float r54658 = z;
        float r54659 = 2.0;
        float r54660 = r54658 * r54659;
        float r54661 = r54657 / r54660;
        float r54662 = t;
        float r54663 = sqrt(r54662);
        float r54664 = r54661 * r54663;
        float r54665 = acos(r54664);
        float r54666 = r54651 * r54665;
        return r54666;
}

double f_od(double x, double y, double z, double t) {
        double r54667 = 1.0;
        double r54668 = 3.0;
        double r54669 = r54667 / r54668;
        double r54670 = x;
        double r54671 = y;
        double r54672 = 27.0;
        double r54673 = r54671 * r54672;
        double r54674 = r54670 / r54673;
        double r54675 = r54668 * r54674;
        double r54676 = z;
        double r54677 = 2.0;
        double r54678 = r54676 * r54677;
        double r54679 = r54675 / r54678;
        double r54680 = t;
        double r54681 = sqrt(r54680);
        double r54682 = r54679 * r54681;
        double r54683 = acos(r54682);
        double r54684 = r54669 * r54683;
        return r54684;
}

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 r54685, r54686, r54687, r54688, r54689, r54690, r54691, r54692, r54693, r54694, r54695, r54696, r54697, r54698, r54699, r54700, r54701, r54702;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54685, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54686, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54687);
        mpfr_init(r54688);
        mpfr_init(r54689);
        mpfr_init_set_str(r54690, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54691);
        mpfr_init(r54692);
        mpfr_init(r54693);
        mpfr_init(r54694);
        mpfr_init_set_str(r54695, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54696);
        mpfr_init(r54697);
        mpfr_init(r54698);
        mpfr_init(r54699);
        mpfr_init(r54700);
        mpfr_init(r54701);
        mpfr_init(r54702);
}

double f_im(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54687, r54685, r54686, MPFR_RNDN);
        mpfr_set_d(r54688, x, MPFR_RNDN);
        mpfr_set_d(r54689, y, MPFR_RNDN);
        ;
        mpfr_mul(r54691, r54689, r54690, MPFR_RNDN);
        mpfr_div(r54692, r54688, r54691, MPFR_RNDN);
        mpfr_mul(r54693, r54686, r54692, MPFR_RNDN);
        mpfr_set_d(r54694, z, MPFR_RNDN);
        ;
        mpfr_mul(r54696, r54694, r54695, MPFR_RNDN);
        mpfr_div(r54697, r54693, r54696, MPFR_RNDN);
        mpfr_set_d(r54698, t, MPFR_RNDN);
        mpfr_sqrt(r54699, r54698, MPFR_RNDN);
        mpfr_mul(r54700, r54697, r54699, MPFR_RNDN);
        mpfr_acos(r54701, r54700, MPFR_RNDN);
        mpfr_mul(r54702, r54687, r54701, MPFR_RNDN);
        return mpfr_get_d(r54702, MPFR_RNDN);
}

static mpfr_t r54703, r54704, r54705, r54706, r54707, r54708, r54709, r54710, r54711, r54712, r54713, r54714, r54715, r54716, r54717, r54718, r54719, r54720;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54703, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54704, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54705);
        mpfr_init(r54706);
        mpfr_init(r54707);
        mpfr_init_set_str(r54708, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54709);
        mpfr_init(r54710);
        mpfr_init(r54711);
        mpfr_init(r54712);
        mpfr_init_set_str(r54713, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54714);
        mpfr_init(r54715);
        mpfr_init(r54716);
        mpfr_init(r54717);
        mpfr_init(r54718);
        mpfr_init(r54719);
        mpfr_init(r54720);
}

double f_fm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54705, r54703, r54704, MPFR_RNDN);
        mpfr_set_d(r54706, x, MPFR_RNDN);
        mpfr_set_d(r54707, y, MPFR_RNDN);
        ;
        mpfr_mul(r54709, r54707, r54708, MPFR_RNDN);
        mpfr_div(r54710, r54706, r54709, MPFR_RNDN);
        mpfr_mul(r54711, r54704, r54710, MPFR_RNDN);
        mpfr_set_d(r54712, z, MPFR_RNDN);
        ;
        mpfr_mul(r54714, r54712, r54713, MPFR_RNDN);
        mpfr_div(r54715, r54711, r54714, MPFR_RNDN);
        mpfr_set_d(r54716, t, MPFR_RNDN);
        mpfr_sqrt(r54717, r54716, MPFR_RNDN);
        mpfr_mul(r54718, r54715, r54717, MPFR_RNDN);
        mpfr_acos(r54719, r54718, MPFR_RNDN);
        mpfr_mul(r54720, r54705, r54719, MPFR_RNDN);
        return mpfr_get_d(r54720, MPFR_RNDN);
}

static mpfr_t r54721, r54722, r54723, r54724, r54725, r54726, r54727, r54728, r54729, r54730, r54731, r54732, r54733, r54734, r54735, r54736, r54737, r54738;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r54721, "1.0", 10, MPFR_RNDN);
        mpfr_init_set_str(r54722, "3.0", 10, MPFR_RNDN);
        mpfr_init(r54723);
        mpfr_init(r54724);
        mpfr_init(r54725);
        mpfr_init_set_str(r54726, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54727);
        mpfr_init(r54728);
        mpfr_init(r54729);
        mpfr_init(r54730);
        mpfr_init_set_str(r54731, "2.0", 10, MPFR_RNDN);
        mpfr_init(r54732);
        mpfr_init(r54733);
        mpfr_init(r54734);
        mpfr_init(r54735);
        mpfr_init(r54736);
        mpfr_init(r54737);
        mpfr_init(r54738);
}

double f_dm(double x, double y, double z, double t) {
        ;
        ;
        mpfr_div(r54723, r54721, r54722, MPFR_RNDN);
        mpfr_set_d(r54724, x, MPFR_RNDN);
        mpfr_set_d(r54725, y, MPFR_RNDN);
        ;
        mpfr_mul(r54727, r54725, r54726, MPFR_RNDN);
        mpfr_div(r54728, r54724, r54727, MPFR_RNDN);
        mpfr_mul(r54729, r54722, r54728, MPFR_RNDN);
        mpfr_set_d(r54730, z, MPFR_RNDN);
        ;
        mpfr_mul(r54732, r54730, r54731, MPFR_RNDN);
        mpfr_div(r54733, r54729, r54732, MPFR_RNDN);
        mpfr_set_d(r54734, t, MPFR_RNDN);
        mpfr_sqrt(r54735, r54734, MPFR_RNDN);
        mpfr_mul(r54736, r54733, r54735, MPFR_RNDN);
        mpfr_acos(r54737, r54736, MPFR_RNDN);
        mpfr_mul(r54738, r54723, r54737, MPFR_RNDN);
        return mpfr_get_d(r54738, MPFR_RNDN);
}

