#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, E";

double f_if(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54701 = x;
        float r54702 = 18.0;
        float r54703 = r54701 * r54702;
        float r54704 = y;
        float r54705 = r54703 * r54704;
        float r54706 = z;
        float r54707 = r54705 * r54706;
        float r54708 = t;
        float r54709 = r54707 * r54708;
        float r54710 = a;
        float r54711 = 4.0;
        float r54712 = r54710 * r54711;
        float r54713 = r54712 * r54708;
        float r54714 = r54709 - r54713;
        float r54715 = b;
        float r54716 = c;
        float r54717 = r54715 * r54716;
        float r54718 = r54714 + r54717;
        float r54719 = r54701 * r54711;
        float r54720 = i;
        float r54721 = r54719 * r54720;
        float r54722 = r54718 - r54721;
        float r54723 = j;
        float r54724 = 27.0;
        float r54725 = r54723 * r54724;
        float r54726 = k;
        float r54727 = r54725 * r54726;
        float r54728 = r54722 - r54727;
        return r54728;
}

double f_id(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54729 = x;
        double r54730 = 18.0;
        double r54731 = r54729 * r54730;
        double r54732 = y;
        double r54733 = r54731 * r54732;
        double r54734 = z;
        double r54735 = r54733 * r54734;
        double r54736 = t;
        double r54737 = r54735 * r54736;
        double r54738 = a;
        double r54739 = 4.0;
        double r54740 = r54738 * r54739;
        double r54741 = r54740 * r54736;
        double r54742 = r54737 - r54741;
        double r54743 = b;
        double r54744 = c;
        double r54745 = r54743 * r54744;
        double r54746 = r54742 + r54745;
        double r54747 = r54729 * r54739;
        double r54748 = i;
        double r54749 = r54747 * r54748;
        double r54750 = r54746 - r54749;
        double r54751 = j;
        double r54752 = 27.0;
        double r54753 = r54751 * r54752;
        double r54754 = k;
        double r54755 = r54753 * r54754;
        double r54756 = r54750 - r54755;
        return r54756;
}


double f_of(float x, float y, float z, float t, float a, float b, float c, float i, float j, float k) {
        float r54757 = t;
        float r54758 = -3.451377696271175e+40;
        bool r54759 = r54757 <= r54758;
        float r54760 = b;
        float r54761 = c;
        float r54762 = r54760 * r54761;
        float r54763 = 4.0;
        float r54764 = x;
        float r54765 = i;
        float r54766 = r54764 * r54765;
        float r54767 = a;
        float r54768 = r54767 * r54757;
        float r54769 = r54766 + r54768;
        float r54770 = r54763 * r54769;
        float r54771 = r54762 - r54770;
        float r54772 = 18.0;
        float r54773 = r54772 * r54764;
        float r54774 = y;
        float r54775 = r54773 * r54774;
        float r54776 = z;
        float r54777 = r54775 * r54776;
        float r54778 = r54757 * r54777;
        float r54779 = 27.0;
        float r54780 = k;
        float r54781 = j;
        float r54782 = r54780 * r54781;
        float r54783 = r54779 * r54782;
        float r54784 = r54778 - r54783;
        float r54785 = r54771 + r54784;
        float r54786 = 1.6132803911069745e-23;
        bool r54787 = r54757 <= r54786;
        float r54788 = r54757 * r54764;
        float r54789 = r54774 * r54788;
        float r54790 = r54776 * r54789;
        float r54791 = r54772 * r54790;
        float r54792 = r54791 - r54783;
        float r54793 = r54771 + r54792;
        float r54794 = r54787 ? r54793 : r54785;
        float r54795 = r54759 ? r54785 : r54794;
        return r54795;
}

double f_od(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        double r54796 = t;
        double r54797 = -3.451377696271175e+40;
        bool r54798 = r54796 <= r54797;
        double r54799 = b;
        double r54800 = c;
        double r54801 = r54799 * r54800;
        double r54802 = 4.0;
        double r54803 = x;
        double r54804 = i;
        double r54805 = r54803 * r54804;
        double r54806 = a;
        double r54807 = r54806 * r54796;
        double r54808 = r54805 + r54807;
        double r54809 = r54802 * r54808;
        double r54810 = r54801 - r54809;
        double r54811 = 18.0;
        double r54812 = r54811 * r54803;
        double r54813 = y;
        double r54814 = r54812 * r54813;
        double r54815 = z;
        double r54816 = r54814 * r54815;
        double r54817 = r54796 * r54816;
        double r54818 = 27.0;
        double r54819 = k;
        double r54820 = j;
        double r54821 = r54819 * r54820;
        double r54822 = r54818 * r54821;
        double r54823 = r54817 - r54822;
        double r54824 = r54810 + r54823;
        double r54825 = 1.6132803911069745e-23;
        bool r54826 = r54796 <= r54825;
        double r54827 = r54796 * r54803;
        double r54828 = r54813 * r54827;
        double r54829 = r54815 * r54828;
        double r54830 = r54811 * r54829;
        double r54831 = r54830 - r54822;
        double r54832 = r54810 + r54831;
        double r54833 = r54826 ? r54832 : r54824;
        double r54834 = r54798 ? r54824 : r54833;
        return r54834;
}

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 r54835, r54836, r54837, r54838, r54839, r54840, r54841, r54842, r54843, r54844, r54845, r54846, r54847, r54848, r54849, r54850, r54851, r54852, r54853, r54854, r54855, r54856, r54857, r54858, r54859, r54860, r54861, r54862;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54835);
        mpfr_init_set_str(r54836, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54837);
        mpfr_init(r54838);
        mpfr_init(r54839);
        mpfr_init(r54840);
        mpfr_init(r54841);
        mpfr_init(r54842);
        mpfr_init(r54843);
        mpfr_init(r54844);
        mpfr_init_set_str(r54845, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54846);
        mpfr_init(r54847);
        mpfr_init(r54848);
        mpfr_init(r54849);
        mpfr_init(r54850);
        mpfr_init(r54851);
        mpfr_init(r54852);
        mpfr_init(r54853);
        mpfr_init(r54854);
        mpfr_init(r54855);
        mpfr_init(r54856);
        mpfr_init(r54857);
        mpfr_init_set_str(r54858, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54859);
        mpfr_init(r54860);
        mpfr_init(r54861);
        mpfr_init(r54862);
}

double f_im(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54835, x, MPFR_RNDN);
        ;
        mpfr_mul(r54837, r54835, r54836, MPFR_RNDN);
        mpfr_set_d(r54838, y, MPFR_RNDN);
        mpfr_mul(r54839, r54837, r54838, MPFR_RNDN);
        mpfr_set_d(r54840, z, MPFR_RNDN);
        mpfr_mul(r54841, r54839, r54840, MPFR_RNDN);
        mpfr_set_d(r54842, t, MPFR_RNDN);
        mpfr_mul(r54843, r54841, r54842, MPFR_RNDN);
        mpfr_set_d(r54844, a, MPFR_RNDN);
        ;
        mpfr_mul(r54846, r54844, r54845, MPFR_RNDN);
        mpfr_mul(r54847, r54846, r54842, MPFR_RNDN);
        mpfr_sub(r54848, r54843, r54847, MPFR_RNDN);
        mpfr_set_d(r54849, b, MPFR_RNDN);
        mpfr_set_d(r54850, c, MPFR_RNDN);
        mpfr_mul(r54851, r54849, r54850, MPFR_RNDN);
        mpfr_add(r54852, r54848, r54851, MPFR_RNDN);
        mpfr_mul(r54853, r54835, r54845, MPFR_RNDN);
        mpfr_set_d(r54854, i, MPFR_RNDN);
        mpfr_mul(r54855, r54853, r54854, MPFR_RNDN);
        mpfr_sub(r54856, r54852, r54855, MPFR_RNDN);
        mpfr_set_d(r54857, j, MPFR_RNDN);
        ;
        mpfr_mul(r54859, r54857, r54858, MPFR_RNDN);
        mpfr_set_d(r54860, k, MPFR_RNDN);
        mpfr_mul(r54861, r54859, r54860, MPFR_RNDN);
        mpfr_sub(r54862, r54856, r54861, MPFR_RNDN);
        return mpfr_get_d(r54862, MPFR_RNDN);
}

static mpfr_t r54863, r54864, r54865, r54866, r54867, r54868, r54869, r54870, r54871, r54872, r54873, r54874, r54875, r54876, r54877, r54878, r54879, r54880, r54881, r54882, r54883, r54884, r54885, r54886, r54887, r54888, r54889, r54890, r54891, r54892, r54893, r54894, r54895, r54896, r54897, r54898, r54899, r54900, r54901;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54863);
        mpfr_init_set_str(r54864, "-3.451377696271175e+40", 10, MPFR_RNDN);
        mpfr_init(r54865);
        mpfr_init(r54866);
        mpfr_init(r54867);
        mpfr_init(r54868);
        mpfr_init_set_str(r54869, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54870);
        mpfr_init(r54871);
        mpfr_init(r54872);
        mpfr_init(r54873);
        mpfr_init(r54874);
        mpfr_init(r54875);
        mpfr_init(r54876);
        mpfr_init(r54877);
        mpfr_init_set_str(r54878, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54879);
        mpfr_init(r54880);
        mpfr_init(r54881);
        mpfr_init(r54882);
        mpfr_init(r54883);
        mpfr_init(r54884);
        mpfr_init_set_str(r54885, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54886);
        mpfr_init(r54887);
        mpfr_init(r54888);
        mpfr_init(r54889);
        mpfr_init(r54890);
        mpfr_init(r54891);
        mpfr_init_set_str(r54892, "1.6132803911069745e-23", 10, MPFR_RNDN);
        mpfr_init(r54893);
        mpfr_init(r54894);
        mpfr_init(r54895);
        mpfr_init(r54896);
        mpfr_init(r54897);
        mpfr_init(r54898);
        mpfr_init(r54899);
        mpfr_init(r54900);
        mpfr_init(r54901);
}

double f_fm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54863, t, MPFR_RNDN);
        ;
        mpfr_set_si(r54865, mpfr_cmp(r54863, r54864) <= 0, MPFR_RNDN);
        mpfr_set_d(r54866, b, MPFR_RNDN);
        mpfr_set_d(r54867, c, MPFR_RNDN);
        mpfr_mul(r54868, r54866, r54867, MPFR_RNDN);
        ;
        mpfr_set_d(r54870, x, MPFR_RNDN);
        mpfr_set_d(r54871, i, MPFR_RNDN);
        mpfr_mul(r54872, r54870, r54871, MPFR_RNDN);
        mpfr_set_d(r54873, a, MPFR_RNDN);
        mpfr_mul(r54874, r54873, r54863, MPFR_RNDN);
        mpfr_add(r54875, r54872, r54874, MPFR_RNDN);
        mpfr_mul(r54876, r54869, r54875, MPFR_RNDN);
        mpfr_sub(r54877, r54868, r54876, MPFR_RNDN);
        ;
        mpfr_mul(r54879, r54878, r54870, MPFR_RNDN);
        mpfr_set_d(r54880, y, MPFR_RNDN);
        mpfr_mul(r54881, r54879, r54880, MPFR_RNDN);
        mpfr_set_d(r54882, z, MPFR_RNDN);
        mpfr_mul(r54883, r54881, r54882, MPFR_RNDN);
        mpfr_mul(r54884, r54863, r54883, MPFR_RNDN);
        ;
        mpfr_set_d(r54886, k, MPFR_RNDN);
        mpfr_set_d(r54887, j, MPFR_RNDN);
        mpfr_mul(r54888, r54886, r54887, MPFR_RNDN);
        mpfr_mul(r54889, r54885, r54888, MPFR_RNDN);
        mpfr_sub(r54890, r54884, r54889, MPFR_RNDN);
        mpfr_add(r54891, r54877, r54890, MPFR_RNDN);
        ;
        mpfr_set_si(r54893, mpfr_cmp(r54863, r54892) <= 0, MPFR_RNDN);
        mpfr_mul(r54894, r54863, r54870, MPFR_RNDN);
        mpfr_mul(r54895, r54880, r54894, MPFR_RNDN);
        mpfr_mul(r54896, r54882, r54895, MPFR_RNDN);
        mpfr_mul(r54897, r54878, r54896, MPFR_RNDN);
        mpfr_sub(r54898, r54897, r54889, MPFR_RNDN);
        mpfr_add(r54899, r54877, r54898, MPFR_RNDN);
        if (mpfr_get_si(r54893, MPFR_RNDN)) { mpfr_set(r54900, r54899, MPFR_RNDN); } else { mpfr_set(r54900, r54891, MPFR_RNDN); };
        if (mpfr_get_si(r54865, MPFR_RNDN)) { mpfr_set(r54901, r54891, MPFR_RNDN); } else { mpfr_set(r54901, r54900, MPFR_RNDN); };
        return mpfr_get_d(r54901, MPFR_RNDN);
}

static mpfr_t r54902, r54903, r54904, r54905, r54906, r54907, r54908, r54909, r54910, r54911, r54912, r54913, r54914, r54915, r54916, r54917, r54918, r54919, r54920, r54921, r54922, r54923, r54924, r54925, r54926, r54927, r54928, r54929, r54930, r54931, r54932, r54933, r54934, r54935, r54936, r54937, r54938, r54939, r54940;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54902);
        mpfr_init_set_str(r54903, "-3.451377696271175e+40", 10, MPFR_RNDN);
        mpfr_init(r54904);
        mpfr_init(r54905);
        mpfr_init(r54906);
        mpfr_init(r54907);
        mpfr_init_set_str(r54908, "4.0", 10, MPFR_RNDN);
        mpfr_init(r54909);
        mpfr_init(r54910);
        mpfr_init(r54911);
        mpfr_init(r54912);
        mpfr_init(r54913);
        mpfr_init(r54914);
        mpfr_init(r54915);
        mpfr_init(r54916);
        mpfr_init_set_str(r54917, "18.0", 10, MPFR_RNDN);
        mpfr_init(r54918);
        mpfr_init(r54919);
        mpfr_init(r54920);
        mpfr_init(r54921);
        mpfr_init(r54922);
        mpfr_init(r54923);
        mpfr_init_set_str(r54924, "27.0", 10, MPFR_RNDN);
        mpfr_init(r54925);
        mpfr_init(r54926);
        mpfr_init(r54927);
        mpfr_init(r54928);
        mpfr_init(r54929);
        mpfr_init(r54930);
        mpfr_init_set_str(r54931, "1.6132803911069745e-23", 10, MPFR_RNDN);
        mpfr_init(r54932);
        mpfr_init(r54933);
        mpfr_init(r54934);
        mpfr_init(r54935);
        mpfr_init(r54936);
        mpfr_init(r54937);
        mpfr_init(r54938);
        mpfr_init(r54939);
        mpfr_init(r54940);
}

double f_dm(double x, double y, double z, double t, double a, double b, double c, double i, double j, double k) {
        mpfr_set_d(r54902, t, MPFR_RNDN);
        ;
        mpfr_set_si(r54904, mpfr_cmp(r54902, r54903) <= 0, MPFR_RNDN);
        mpfr_set_d(r54905, b, MPFR_RNDN);
        mpfr_set_d(r54906, c, MPFR_RNDN);
        mpfr_mul(r54907, r54905, r54906, MPFR_RNDN);
        ;
        mpfr_set_d(r54909, x, MPFR_RNDN);
        mpfr_set_d(r54910, i, MPFR_RNDN);
        mpfr_mul(r54911, r54909, r54910, MPFR_RNDN);
        mpfr_set_d(r54912, a, MPFR_RNDN);
        mpfr_mul(r54913, r54912, r54902, MPFR_RNDN);
        mpfr_add(r54914, r54911, r54913, MPFR_RNDN);
        mpfr_mul(r54915, r54908, r54914, MPFR_RNDN);
        mpfr_sub(r54916, r54907, r54915, MPFR_RNDN);
        ;
        mpfr_mul(r54918, r54917, r54909, MPFR_RNDN);
        mpfr_set_d(r54919, y, MPFR_RNDN);
        mpfr_mul(r54920, r54918, r54919, MPFR_RNDN);
        mpfr_set_d(r54921, z, MPFR_RNDN);
        mpfr_mul(r54922, r54920, r54921, MPFR_RNDN);
        mpfr_mul(r54923, r54902, r54922, MPFR_RNDN);
        ;
        mpfr_set_d(r54925, k, MPFR_RNDN);
        mpfr_set_d(r54926, j, MPFR_RNDN);
        mpfr_mul(r54927, r54925, r54926, MPFR_RNDN);
        mpfr_mul(r54928, r54924, r54927, MPFR_RNDN);
        mpfr_sub(r54929, r54923, r54928, MPFR_RNDN);
        mpfr_add(r54930, r54916, r54929, MPFR_RNDN);
        ;
        mpfr_set_si(r54932, mpfr_cmp(r54902, r54931) <= 0, MPFR_RNDN);
        mpfr_mul(r54933, r54902, r54909, MPFR_RNDN);
        mpfr_mul(r54934, r54919, r54933, MPFR_RNDN);
        mpfr_mul(r54935, r54921, r54934, MPFR_RNDN);
        mpfr_mul(r54936, r54917, r54935, MPFR_RNDN);
        mpfr_sub(r54937, r54936, r54928, MPFR_RNDN);
        mpfr_add(r54938, r54916, r54937, MPFR_RNDN);
        if (mpfr_get_si(r54932, MPFR_RNDN)) { mpfr_set(r54939, r54938, MPFR_RNDN); } else { mpfr_set(r54939, r54930, MPFR_RNDN); };
        if (mpfr_get_si(r54904, MPFR_RNDN)) { mpfr_set(r54940, r54930, MPFR_RNDN); } else { mpfr_set(r54940, r54939, MPFR_RNDN); };
        return mpfr_get_d(r54940, MPFR_RNDN);
}

