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

char *name = "Cubic critical";

double f_if(float a, float b, float c, float __attribute__((unused)) d) {
        float r9763 = b;
        float r9764 = -r9763;
        float r9765 = r9763 * r9763;
        float r9766 = 3.0f;
        float r9767 = a;
        float r9768 = r9766 * r9767;
        float r9769 = c;
        float r9770 = r9768 * r9769;
        float r9771 = r9765 - r9770;
        float r9772 = sqrt(r9771);
        float r9773 = r9764 + r9772;
        float r9774 = r9773 / r9768;
        return r9774;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9775 = b;
        double r9776 = -r9775;
        double r9777 = r9775 * r9775;
        double r9778 = 3.0;
        double r9779 = a;
        double r9780 = r9778 * r9779;
        double r9781 = c;
        double r9782 = r9780 * r9781;
        double r9783 = r9777 - r9782;
        double r9784 = sqrt(r9783);
        double r9785 = r9776 + r9784;
        double r9786 = r9785 / r9780;
        return r9786;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9787 = b;
        float r9788 = -1.2473100154318235e+154f;
        bool r9789 = r9787 <= r9788;
        float r9790 = -0.6666666666666666f;
        float r9791 = a;
        float r9792 = r9787 / r9791;
        float r9793 = r9790 * r9792;
        float r9794 = 1.831482572891386e-225f;
        bool r9795 = r9787 <= r9794;
        float r9796 = r9787 * r9787;
        float r9797 = 3.0f;
        float r9798 = r9791 * r9797;
        float r9799 = c;
        float r9800 = r9798 * r9799;
        float r9801 = r9796 - r9800;
        float r9802 = sqrt(r9801);
        float r9803 = r9802 / r9798;
        float r9804 = r9787 / r9798;
        float r9805 = r9803 - r9804;
        float r9806 = 1.5450320853015062e+145f;
        bool r9807 = r9787 <= r9806;
        float r9808 = -r9799;
        float r9809 = r9791 * r9799;
        float r9810 = r9797 * r9809;
        float r9811 = r9796 - r9810;
        float r9812 = sqrt(r9811);
        float r9813 = r9787 + r9812;
        float r9814 = r9808 / r9813;
        float r9815 = -1.5f;
        float r9816 = r9815 / r9787;
        float r9817 = r9799 / r9797;
        float r9818 = r9816 * r9817;
        float r9819 = r9807 ? r9814 : r9818;
        float r9820 = r9795 ? r9805 : r9819;
        float r9821 = r9789 ? r9793 : r9820;
        return r9821;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9822 = b;
        double r9823 = -1.2473100154318235e+154;
        bool r9824 = r9822 <= r9823;
        double r9825 = -0.6666666666666666;
        double r9826 = a;
        double r9827 = r9822 / r9826;
        double r9828 = r9825 * r9827;
        double r9829 = 1.831482572891386e-225;
        bool r9830 = r9822 <= r9829;
        double r9831 = r9822 * r9822;
        double r9832 = 3.0;
        double r9833 = r9826 * r9832;
        double r9834 = c;
        double r9835 = r9833 * r9834;
        double r9836 = r9831 - r9835;
        double r9837 = sqrt(r9836);
        double r9838 = r9837 / r9833;
        double r9839 = r9822 / r9833;
        double r9840 = r9838 - r9839;
        double r9841 = 1.5450320853015062e+145;
        bool r9842 = r9822 <= r9841;
        double r9843 = -r9834;
        double r9844 = r9826 * r9834;
        double r9845 = r9832 * r9844;
        double r9846 = r9831 - r9845;
        double r9847 = sqrt(r9846);
        double r9848 = r9822 + r9847;
        double r9849 = r9843 / r9848;
        double r9850 = -1.5;
        double r9851 = r9850 / r9822;
        double r9852 = r9834 / r9832;
        double r9853 = r9851 * r9852;
        double r9854 = r9842 ? r9849 : r9853;
        double r9855 = r9830 ? r9840 : r9854;
        double r9856 = r9824 ? r9828 : r9855;
        return r9856;
}

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 r9857, r9858, r9859, r9860, r9861, r9862, r9863, r9864, r9865, r9866, r9867, r9868;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9857);
        mpfr_init(r9858);
        mpfr_init(r9859);
        mpfr_init_set_str(r9860, "3", 10, MPFR_RNDN);
        mpfr_init(r9861);
        mpfr_init(r9862);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init(r9865);
        mpfr_init(r9866);
        mpfr_init(r9867);
        mpfr_init(r9868);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9857, b, MPFR_RNDN);
        mpfr_neg(r9858, r9857, MPFR_RNDN);
        mpfr_mul(r9859, r9857, r9857, MPFR_RNDN);
        ;
        mpfr_set_d(r9861, a, MPFR_RNDN);
        mpfr_mul(r9862, r9860, r9861, MPFR_RNDN);
        mpfr_set_d(r9863, c, MPFR_RNDN);
        mpfr_mul(r9864, r9862, r9863, MPFR_RNDN);
        mpfr_sub(r9865, r9859, r9864, MPFR_RNDN);
        mpfr_sqrt(r9866, r9865, MPFR_RNDN);
        mpfr_add(r9867, r9858, r9866, MPFR_RNDN);
        mpfr_div(r9868, r9867, r9862, MPFR_RNDN);
        return mpfr_get_d(r9868, MPFR_RNDN);
}

static mpfr_t r9869, r9870, r9871, r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900, r9901, r9902, r9903;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9869);
        mpfr_init_set_str(r9870, "-1.2473100154318235e+154", 10, MPFR_RNDN);
        mpfr_init(r9871);
        mpfr_init_set_str(r9872, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init(r9875);
        mpfr_init_set_str(r9876, "1.831482572891386e-225", 10, MPFR_RNDN);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init_set_str(r9879, "3", 10, MPFR_RNDN);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init(r9883);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init_set_str(r9888, "1.5450320853015062e+145", 10, MPFR_RNDN);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init_set_str(r9897, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r9898);
        mpfr_init(r9899);
        mpfr_init(r9900);
        mpfr_init(r9901);
        mpfr_init(r9902);
        mpfr_init(r9903);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9869, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9871, mpfr_cmp(r9869, r9870) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9873, a, MPFR_RNDN);
        mpfr_div(r9874, r9869, r9873, MPFR_RNDN);
        mpfr_mul(r9875, r9872, r9874, MPFR_RNDN);
        ;
        mpfr_set_si(r9877, mpfr_cmp(r9869, r9876) <= 0, MPFR_RNDN);
        mpfr_mul(r9878, r9869, r9869, MPFR_RNDN);
        ;
        mpfr_mul(r9880, r9873, r9879, MPFR_RNDN);
        mpfr_set_d(r9881, c, MPFR_RNDN);
        mpfr_mul(r9882, r9880, r9881, MPFR_RNDN);
        mpfr_sub(r9883, r9878, r9882, MPFR_RNDN);
        mpfr_sqrt(r9884, r9883, MPFR_RNDN);
        mpfr_div(r9885, r9884, r9880, MPFR_RNDN);
        mpfr_div(r9886, r9869, r9880, MPFR_RNDN);
        mpfr_sub(r9887, r9885, r9886, MPFR_RNDN);
        ;
        mpfr_set_si(r9889, mpfr_cmp(r9869, r9888) <= 0, MPFR_RNDN);
        mpfr_neg(r9890, r9881, MPFR_RNDN);
        mpfr_mul(r9891, r9873, r9881, MPFR_RNDN);
        mpfr_mul(r9892, r9879, r9891, MPFR_RNDN);
        mpfr_sub(r9893, r9878, r9892, MPFR_RNDN);
        mpfr_sqrt(r9894, r9893, MPFR_RNDN);
        mpfr_add(r9895, r9869, r9894, MPFR_RNDN);
        mpfr_div(r9896, r9890, r9895, MPFR_RNDN);
        ;
        mpfr_div(r9898, r9897, r9869, MPFR_RNDN);
        mpfr_div(r9899, r9881, r9879, MPFR_RNDN);
        mpfr_mul(r9900, r9898, r9899, MPFR_RNDN);
        if (mpfr_get_si(r9889, MPFR_RNDN)) { mpfr_set(r9901, r9896, MPFR_RNDN); } else { mpfr_set(r9901, r9900, MPFR_RNDN); };
        if (mpfr_get_si(r9877, MPFR_RNDN)) { mpfr_set(r9902, r9887, MPFR_RNDN); } else { mpfr_set(r9902, r9901, MPFR_RNDN); };
        if (mpfr_get_si(r9871, MPFR_RNDN)) { mpfr_set(r9903, r9875, MPFR_RNDN); } else { mpfr_set(r9903, r9902, MPFR_RNDN); };
        return mpfr_get_d(r9903, MPFR_RNDN);
}

static mpfr_t r9904, r9905, r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914, r9915, r9916, r9917, r9918, r9919, r9920, r9921, r9922, r9923, r9924, r9925, r9926, r9927, r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9904);
        mpfr_init_set_str(r9905, "-1.2473100154318235e+154", 10, MPFR_RNDN);
        mpfr_init(r9906);
        mpfr_init_set_str(r9907, "-2/3", 10, MPFR_RNDN);
        mpfr_init(r9908);
        mpfr_init(r9909);
        mpfr_init(r9910);
        mpfr_init_set_str(r9911, "1.831482572891386e-225", 10, MPFR_RNDN);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init_set_str(r9914, "3", 10, MPFR_RNDN);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
        mpfr_init(r9918);
        mpfr_init(r9919);
        mpfr_init(r9920);
        mpfr_init(r9921);
        mpfr_init(r9922);
        mpfr_init_set_str(r9923, "1.5450320853015062e+145", 10, MPFR_RNDN);
        mpfr_init(r9924);
        mpfr_init(r9925);
        mpfr_init(r9926);
        mpfr_init(r9927);
        mpfr_init(r9928);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init_set_str(r9932, "-3/2", 10, MPFR_RNDN);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init(r9935);
        mpfr_init(r9936);
        mpfr_init(r9937);
        mpfr_init(r9938);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9904, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9906, mpfr_cmp(r9904, r9905) <= 0, MPFR_RNDN);
        ;
        mpfr_set_d(r9908, a, MPFR_RNDN);
        mpfr_div(r9909, r9904, r9908, MPFR_RNDN);
        mpfr_mul(r9910, r9907, r9909, MPFR_RNDN);
        ;
        mpfr_set_si(r9912, mpfr_cmp(r9904, r9911) <= 0, MPFR_RNDN);
        mpfr_mul(r9913, r9904, r9904, MPFR_RNDN);
        ;
        mpfr_mul(r9915, r9908, r9914, MPFR_RNDN);
        mpfr_set_d(r9916, c, MPFR_RNDN);
        mpfr_mul(r9917, r9915, r9916, MPFR_RNDN);
        mpfr_sub(r9918, r9913, r9917, MPFR_RNDN);
        mpfr_sqrt(r9919, r9918, MPFR_RNDN);
        mpfr_div(r9920, r9919, r9915, MPFR_RNDN);
        mpfr_div(r9921, r9904, r9915, MPFR_RNDN);
        mpfr_sub(r9922, r9920, r9921, MPFR_RNDN);
        ;
        mpfr_set_si(r9924, mpfr_cmp(r9904, r9923) <= 0, MPFR_RNDN);
        mpfr_neg(r9925, r9916, MPFR_RNDN);
        mpfr_mul(r9926, r9908, r9916, MPFR_RNDN);
        mpfr_mul(r9927, r9914, r9926, MPFR_RNDN);
        mpfr_sub(r9928, r9913, r9927, MPFR_RNDN);
        mpfr_sqrt(r9929, r9928, MPFR_RNDN);
        mpfr_add(r9930, r9904, r9929, MPFR_RNDN);
        mpfr_div(r9931, r9925, r9930, MPFR_RNDN);
        ;
        mpfr_div(r9933, r9932, r9904, MPFR_RNDN);
        mpfr_div(r9934, r9916, r9914, MPFR_RNDN);
        mpfr_mul(r9935, r9933, r9934, MPFR_RNDN);
        if (mpfr_get_si(r9924, MPFR_RNDN)) { mpfr_set(r9936, r9931, MPFR_RNDN); } else { mpfr_set(r9936, r9935, MPFR_RNDN); };
        if (mpfr_get_si(r9912, MPFR_RNDN)) { mpfr_set(r9937, r9922, MPFR_RNDN); } else { mpfr_set(r9937, r9936, MPFR_RNDN); };
        if (mpfr_get_si(r9906, MPFR_RNDN)) { mpfr_set(r9938, r9910, MPFR_RNDN); } else { mpfr_set(r9938, r9937, MPFR_RNDN); };
        return mpfr_get_d(r9938, MPFR_RNDN);
}

