#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 r9776 = b;
        float r9777 = -r9776;
        float r9778 = r9776 * r9776;
        float r9779 = 3.0f;
        float r9780 = a;
        float r9781 = r9779 * r9780;
        float r9782 = c;
        float r9783 = r9781 * r9782;
        float r9784 = r9778 - r9783;
        float r9785 = sqrt(r9784);
        float r9786 = r9777 + r9785;
        float r9787 = r9786 / r9781;
        return r9787;
}

double f_id(double a, double b, double c, double __attribute__((unused)) d) {
        double r9788 = b;
        double r9789 = -r9788;
        double r9790 = r9788 * r9788;
        double r9791 = 3.0;
        double r9792 = a;
        double r9793 = r9791 * r9792;
        double r9794 = c;
        double r9795 = r9793 * r9794;
        double r9796 = r9790 - r9795;
        double r9797 = sqrt(r9796);
        double r9798 = r9789 + r9797;
        double r9799 = r9798 / r9793;
        return r9799;
}


double f_of(float a, float b, float c, float __attribute__((unused)) d) {
        float r9800 = b;
        float r9801 = -1.3303061683842245e+154f;
        bool r9802 = r9800 <= r9801;
        float r9803 = c;
        float r9804 = -r9803;
        float r9805 = -1.5f;
        float r9806 = -1.0f;
        float r9807 = r9806 / r9803;
        float r9808 = r9805 / r9807;
        float r9809 = r9806 / r9800;
        float r9810 = a;
        float r9811 = r9806 / r9810;
        float r9812 = r9809 / r9811;
        float r9813 = r9808 * r9812;
        float r9814 = r9804 / r9813;
        float r9815 = 4.879117888011816e-295f;
        bool r9816 = r9800 <= r9815;
        float r9817 = 1.0f;
        float r9818 = 3.0f;
        float r9819 = r9817 / r9818;
        float r9820 = r9818 * r9810;
        float r9821 = r9800 * r9800;
        float r9822 = fma(r9820, r9804, r9821);
        float r9823 = sqrt(r9822);
        float r9824 = r9823 - r9800;
        float r9825 = r9824 / r9810;
        float r9826 = r9819 * r9825;
        float r9827 = 2.2363902485940985e+126f;
        bool r9828 = r9800 <= r9827;
        float r9829 = r9800 + r9823;
        float r9830 = r9804 / r9829;
        float r9831 = r9800 + r9800;
        float r9832 = r9804 / r9831;
        float r9833 = r9828 ? r9830 : r9832;
        float r9834 = r9816 ? r9826 : r9833;
        float r9835 = r9802 ? r9814 : r9834;
        return r9835;
}

double f_od(double a, double b, double c, double __attribute__((unused)) d) {
        double r9836 = b;
        double r9837 = -1.3303061683842245e+154;
        bool r9838 = r9836 <= r9837;
        double r9839 = c;
        double r9840 = -r9839;
        double r9841 = -1.5;
        double r9842 = -1.0;
        double r9843 = r9842 / r9839;
        double r9844 = r9841 / r9843;
        double r9845 = r9842 / r9836;
        double r9846 = a;
        double r9847 = r9842 / r9846;
        double r9848 = r9845 / r9847;
        double r9849 = r9844 * r9848;
        double r9850 = r9840 / r9849;
        double r9851 = 4.879117888011816e-295;
        bool r9852 = r9836 <= r9851;
        double r9853 = 1.0;
        double r9854 = 3.0;
        double r9855 = r9853 / r9854;
        double r9856 = r9854 * r9846;
        double r9857 = r9836 * r9836;
        double r9858 = fma(r9856, r9840, r9857);
        double r9859 = sqrt(r9858);
        double r9860 = r9859 - r9836;
        double r9861 = r9860 / r9846;
        double r9862 = r9855 * r9861;
        double r9863 = 2.2363902485940985e+126;
        bool r9864 = r9836 <= r9863;
        double r9865 = r9836 + r9859;
        double r9866 = r9840 / r9865;
        double r9867 = r9836 + r9836;
        double r9868 = r9840 / r9867;
        double r9869 = r9864 ? r9866 : r9868;
        double r9870 = r9852 ? r9862 : r9869;
        double r9871 = r9838 ? r9850 : r9870;
        return r9871;
}

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 r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9872);
        mpfr_init(r9873);
        mpfr_init(r9874);
        mpfr_init_set_str(r9875, "3", 10, MPFR_RNDN);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init(r9878);
        mpfr_init(r9879);
        mpfr_init(r9880);
        mpfr_init(r9881);
        mpfr_init(r9882);
        mpfr_init(r9883);
}

double f_im(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9872, b, MPFR_RNDN);
        mpfr_neg(r9873, r9872, MPFR_RNDN);
        mpfr_mul(r9874, r9872, r9872, MPFR_RNDN);
        ;
        mpfr_set_d(r9876, a, MPFR_RNDN);
        mpfr_mul(r9877, r9875, r9876, MPFR_RNDN);
        mpfr_set_d(r9878, c, MPFR_RNDN);
        mpfr_mul(r9879, r9877, r9878, MPFR_RNDN);
        mpfr_sub(r9880, r9874, r9879, MPFR_RNDN);
        mpfr_sqrt(r9881, r9880, MPFR_RNDN);
        mpfr_add(r9882, r9873, r9881, MPFR_RNDN);
        mpfr_div(r9883, r9882, r9877, MPFR_RNDN);
        return mpfr_get_d(r9883, MPFR_RNDN);
}

static mpfr_t r9884, r9885, r9886, r9887, r9888, r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900, r9901, r9902, r9903, r9904, r9905, r9906, r9907, r9908, r9909, r9910, r9911, r9912, r9913, r9914, r9915, r9916, r9917, r9918, r9919;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9884);
        mpfr_init_set_str(r9885, "-1.3303061683842245e+154", 10, MPFR_RNDN);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init(r9888);
        mpfr_init_set_str(r9889, "-3/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9890, "-1", 10, MPFR_RNDN);
        mpfr_init(r9891);
        mpfr_init(r9892);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init(r9897);
        mpfr_init(r9898);
        mpfr_init_set_str(r9899, "4.879117888011816e-295", 10, MPFR_RNDN);
        mpfr_init(r9900);
        mpfr_init_set_str(r9901, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9902, "3", 10, MPFR_RNDN);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init(r9905);
        mpfr_init(r9906);
        mpfr_init(r9907);
        mpfr_init(r9908);
        mpfr_init(r9909);
        mpfr_init(r9910);
        mpfr_init_set_str(r9911, "2.2363902485940985e+126", 10, MPFR_RNDN);
        mpfr_init(r9912);
        mpfr_init(r9913);
        mpfr_init(r9914);
        mpfr_init(r9915);
        mpfr_init(r9916);
        mpfr_init(r9917);
        mpfr_init(r9918);
        mpfr_init(r9919);
}

double f_fm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9884, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9886, mpfr_cmp(r9884, r9885) <= 0, MPFR_RNDN);
        mpfr_set_d(r9887, c, MPFR_RNDN);
        mpfr_neg(r9888, r9887, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9891, r9890, r9887, MPFR_RNDN);
        mpfr_div(r9892, r9889, r9891, MPFR_RNDN);
        mpfr_div(r9893, r9890, r9884, MPFR_RNDN);
        mpfr_set_d(r9894, a, MPFR_RNDN);
        mpfr_div(r9895, r9890, r9894, MPFR_RNDN);
        mpfr_div(r9896, r9893, r9895, MPFR_RNDN);
        mpfr_mul(r9897, r9892, r9896, MPFR_RNDN);
        mpfr_div(r9898, r9888, r9897, MPFR_RNDN);
        ;
        mpfr_set_si(r9900, mpfr_cmp(r9884, r9899) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9903, r9901, r9902, MPFR_RNDN);
        mpfr_mul(r9904, r9902, r9894, MPFR_RNDN);
        mpfr_mul(r9905, r9884, r9884, MPFR_RNDN);
        mpfr_fma(r9906, r9904, r9888, r9905, MPFR_RNDN);
        mpfr_sqrt(r9907, r9906, MPFR_RNDN);
        mpfr_sub(r9908, r9907, r9884, MPFR_RNDN);
        mpfr_div(r9909, r9908, r9894, MPFR_RNDN);
        mpfr_mul(r9910, r9903, r9909, MPFR_RNDN);
        ;
        mpfr_set_si(r9912, mpfr_cmp(r9884, r9911) <= 0, MPFR_RNDN);
        mpfr_add(r9913, r9884, r9907, MPFR_RNDN);
        mpfr_div(r9914, r9888, r9913, MPFR_RNDN);
        mpfr_add(r9915, r9884, r9884, MPFR_RNDN);
        mpfr_div(r9916, r9888, r9915, MPFR_RNDN);
        if (mpfr_get_si(r9912, MPFR_RNDN)) { mpfr_set(r9917, r9914, MPFR_RNDN); } else { mpfr_set(r9917, r9916, MPFR_RNDN); };
        if (mpfr_get_si(r9900, MPFR_RNDN)) { mpfr_set(r9918, r9910, MPFR_RNDN); } else { mpfr_set(r9918, r9917, MPFR_RNDN); };
        if (mpfr_get_si(r9886, MPFR_RNDN)) { mpfr_set(r9919, r9898, MPFR_RNDN); } else { mpfr_set(r9919, r9918, MPFR_RNDN); };
        return mpfr_get_d(r9919, MPFR_RNDN);
}

static mpfr_t r9920, r9921, r9922, r9923, r9924, r9925, r9926, r9927, r9928, r9929, r9930, r9931, r9932, r9933, r9934, r9935, r9936, r9937, r9938, r9939, r9940, r9941, r9942, r9943, r9944, r9945, r9946, r9947, r9948, r9949, r9950, r9951, r9952, r9953, r9954, r9955;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r9920);
        mpfr_init_set_str(r9921, "-1.3303061683842245e+154", 10, MPFR_RNDN);
        mpfr_init(r9922);
        mpfr_init(r9923);
        mpfr_init(r9924);
        mpfr_init_set_str(r9925, "-3/2", 10, MPFR_RNDN);
        mpfr_init_set_str(r9926, "-1", 10, MPFR_RNDN);
        mpfr_init(r9927);
        mpfr_init(r9928);
        mpfr_init(r9929);
        mpfr_init(r9930);
        mpfr_init(r9931);
        mpfr_init(r9932);
        mpfr_init(r9933);
        mpfr_init(r9934);
        mpfr_init_set_str(r9935, "4.879117888011816e-295", 10, MPFR_RNDN);
        mpfr_init(r9936);
        mpfr_init_set_str(r9937, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r9938, "3", 10, MPFR_RNDN);
        mpfr_init(r9939);
        mpfr_init(r9940);
        mpfr_init(r9941);
        mpfr_init(r9942);
        mpfr_init(r9943);
        mpfr_init(r9944);
        mpfr_init(r9945);
        mpfr_init(r9946);
        mpfr_init_set_str(r9947, "2.2363902485940985e+126", 10, MPFR_RNDN);
        mpfr_init(r9948);
        mpfr_init(r9949);
        mpfr_init(r9950);
        mpfr_init(r9951);
        mpfr_init(r9952);
        mpfr_init(r9953);
        mpfr_init(r9954);
        mpfr_init(r9955);
}

double f_dm(double a, double b, double c, double __attribute__((unused)) d) {
        mpfr_set_d(r9920, b, MPFR_RNDN);
        ;
        mpfr_set_si(r9922, mpfr_cmp(r9920, r9921) <= 0, MPFR_RNDN);
        mpfr_set_d(r9923, c, MPFR_RNDN);
        mpfr_neg(r9924, r9923, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9927, r9926, r9923, MPFR_RNDN);
        mpfr_div(r9928, r9925, r9927, MPFR_RNDN);
        mpfr_div(r9929, r9926, r9920, MPFR_RNDN);
        mpfr_set_d(r9930, a, MPFR_RNDN);
        mpfr_div(r9931, r9926, r9930, MPFR_RNDN);
        mpfr_div(r9932, r9929, r9931, MPFR_RNDN);
        mpfr_mul(r9933, r9928, r9932, MPFR_RNDN);
        mpfr_div(r9934, r9924, r9933, MPFR_RNDN);
        ;
        mpfr_set_si(r9936, mpfr_cmp(r9920, r9935) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_div(r9939, r9937, r9938, MPFR_RNDN);
        mpfr_mul(r9940, r9938, r9930, MPFR_RNDN);
        mpfr_mul(r9941, r9920, r9920, MPFR_RNDN);
        mpfr_fma(r9942, r9940, r9924, r9941, MPFR_RNDN);
        mpfr_sqrt(r9943, r9942, MPFR_RNDN);
        mpfr_sub(r9944, r9943, r9920, MPFR_RNDN);
        mpfr_div(r9945, r9944, r9930, MPFR_RNDN);
        mpfr_mul(r9946, r9939, r9945, MPFR_RNDN);
        ;
        mpfr_set_si(r9948, mpfr_cmp(r9920, r9947) <= 0, MPFR_RNDN);
        mpfr_add(r9949, r9920, r9943, MPFR_RNDN);
        mpfr_div(r9950, r9924, r9949, MPFR_RNDN);
        mpfr_add(r9951, r9920, r9920, MPFR_RNDN);
        mpfr_div(r9952, r9924, r9951, MPFR_RNDN);
        if (mpfr_get_si(r9948, MPFR_RNDN)) { mpfr_set(r9953, r9950, MPFR_RNDN); } else { mpfr_set(r9953, r9952, MPFR_RNDN); };
        if (mpfr_get_si(r9936, MPFR_RNDN)) { mpfr_set(r9954, r9946, MPFR_RNDN); } else { mpfr_set(r9954, r9953, MPFR_RNDN); };
        if (mpfr_get_si(r9922, MPFR_RNDN)) { mpfr_set(r9955, r9934, MPFR_RNDN); } else { mpfr_set(r9955, r9954, MPFR_RNDN); };
        return mpfr_get_d(r9955, MPFR_RNDN);
}

