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

char *name = "Quadratic roots, full range";

double f_if(float a, float b, float c) {
        float r8727 = b;
        float r8728 = -r8727;
        float r8729 = r8727 * r8727;
        float r8730 = 4;
        float r8731 = a;
        float r8732 = r8730 * r8731;
        float r8733 = c;
        float r8734 = r8732 * r8733;
        float r8735 = r8729 - r8734;
        float r8736 = sqrt(r8735);
        float r8737 = r8728 + r8736;
        float r8738 = 2;
        float r8739 = r8738 * r8731;
        float r8740 = r8737 / r8739;
        return r8740;
}

double f_id(double a, double b, double c) {
        double r8741 = b;
        double r8742 = -r8741;
        double r8743 = r8741 * r8741;
        double r8744 = 4;
        double r8745 = a;
        double r8746 = r8744 * r8745;
        double r8747 = c;
        double r8748 = r8746 * r8747;
        double r8749 = r8743 - r8748;
        double r8750 = sqrt(r8749);
        double r8751 = r8742 + r8750;
        double r8752 = 2;
        double r8753 = r8752 * r8745;
        double r8754 = r8751 / r8753;
        return r8754;
}


double f_of(float a, float b, float c) {
        float r8755 = b;
        float r8756 = -4.480021572372691e+121;
        bool r8757 = r8755 <= r8756;
        float r8758 = -r8755;
        float r8759 = a;
        float r8760 = r8758 / r8759;
        float r8761 = c;
        float r8762 = r8761 / r8755;
        float r8763 = r8759 / r8759;
        float r8764 = r8762 / r8763;
        float r8765 = r8760 - r8764;
        float r8766 = 3.3274636606180965e-305;
        bool r8767 = r8755 <= r8766;
        float r8768 = 1;
        float r8769 = 2;
        float r8770 = r8759 * r8769;
        float r8771 = r8755 * r8755;
        float r8772 = 4;
        float r8773 = r8772 * r8759;
        float r8774 = r8761 * r8773;
        float r8775 = r8771 - r8774;
        float r8776 = sqrt(r8775);
        float r8777 = r8776 - r8755;
        float r8778 = r8770 / r8777;
        float r8779 = r8768 / r8778;
        float r8780 = 1.4399774592443239e+37;
        bool r8781 = r8755 <= r8780;
        float r8782 = r8768 / r8769;
        float r8783 = r8761 * r8772;
        float r8784 = r8759 * r8772;
        float r8785 = r8784 * r8761;
        float r8786 = r8771 - r8785;
        float r8787 = sqrt(r8786);
        float r8788 = r8758 - r8787;
        float r8789 = r8783 / r8788;
        float r8790 = r8782 * r8789;
        float r8791 = r8769 * r8769;
        float r8792 = r8761 / r8791;
        float r8793 = r8792 * r8772;
        float r8794 = r8759 / r8755;
        float r8795 = r8794 * r8761;
        float r8796 = r8795 - r8755;
        float r8797 = r8793 / r8796;
        float r8798 = r8781 ? r8790 : r8797;
        float r8799 = r8767 ? r8779 : r8798;
        float r8800 = r8757 ? r8765 : r8799;
        return r8800;
}

double f_od(double a, double b, double c) {
        double r8801 = b;
        double r8802 = -4.480021572372691e+121;
        bool r8803 = r8801 <= r8802;
        double r8804 = -r8801;
        double r8805 = a;
        double r8806 = r8804 / r8805;
        double r8807 = c;
        double r8808 = r8807 / r8801;
        double r8809 = r8805 / r8805;
        double r8810 = r8808 / r8809;
        double r8811 = r8806 - r8810;
        double r8812 = 3.3274636606180965e-305;
        bool r8813 = r8801 <= r8812;
        double r8814 = 1;
        double r8815 = 2;
        double r8816 = r8805 * r8815;
        double r8817 = r8801 * r8801;
        double r8818 = 4;
        double r8819 = r8818 * r8805;
        double r8820 = r8807 * r8819;
        double r8821 = r8817 - r8820;
        double r8822 = sqrt(r8821);
        double r8823 = r8822 - r8801;
        double r8824 = r8816 / r8823;
        double r8825 = r8814 / r8824;
        double r8826 = 1.4399774592443239e+37;
        bool r8827 = r8801 <= r8826;
        double r8828 = r8814 / r8815;
        double r8829 = r8807 * r8818;
        double r8830 = r8805 * r8818;
        double r8831 = r8830 * r8807;
        double r8832 = r8817 - r8831;
        double r8833 = sqrt(r8832);
        double r8834 = r8804 - r8833;
        double r8835 = r8829 / r8834;
        double r8836 = r8828 * r8835;
        double r8837 = r8815 * r8815;
        double r8838 = r8807 / r8837;
        double r8839 = r8838 * r8818;
        double r8840 = r8805 / r8801;
        double r8841 = r8840 * r8807;
        double r8842 = r8841 - r8801;
        double r8843 = r8839 / r8842;
        double r8844 = r8827 ? r8836 : r8843;
        double r8845 = r8813 ? r8825 : r8844;
        double r8846 = r8803 ? r8811 : r8845;
        return r8846;
}

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 r8847, r8848, r8849, r8850, r8851, r8852, r8853, r8854, r8855, r8856, r8857, r8858, r8859, r8860;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8847);
        mpfr_init(r8848);
        mpfr_init(r8849);
        mpfr_init_set_str(r8850, "4", 10, MPFR_RNDN);
        mpfr_init(r8851);
        mpfr_init(r8852);
        mpfr_init(r8853);
        mpfr_init(r8854);
        mpfr_init(r8855);
        mpfr_init(r8856);
        mpfr_init(r8857);
        mpfr_init_set_str(r8858, "2", 10, MPFR_RNDN);
        mpfr_init(r8859);
        mpfr_init(r8860);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8847, b, MPFR_RNDN);
        mpfr_neg(r8848, r8847, MPFR_RNDN);
        mpfr_mul(r8849, r8847, r8847, MPFR_RNDN);
        ;
        mpfr_set_d(r8851, a, MPFR_RNDN);
        mpfr_mul(r8852, r8850, r8851, MPFR_RNDN);
        mpfr_set_d(r8853, c, MPFR_RNDN);
        mpfr_mul(r8854, r8852, r8853, MPFR_RNDN);
        mpfr_sub(r8855, r8849, r8854, MPFR_RNDN);
        mpfr_sqrt(r8856, r8855, MPFR_RNDN);
        mpfr_add(r8857, r8848, r8856, MPFR_RNDN);
        ;
        mpfr_mul(r8859, r8858, r8851, MPFR_RNDN);
        mpfr_div(r8860, r8857, r8859, MPFR_RNDN);
        return mpfr_get_d(r8860, MPFR_RNDN);
}

static mpfr_t r8861, r8862, r8863, r8864, r8865, r8866, r8867, r8868, r8869, r8870, r8871, r8872, r8873, r8874, r8875, r8876, r8877, r8878, r8879, r8880, r8881, r8882, r8883, r8884, r8885, r8886, r8887, r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8861);
        mpfr_init_set_str(r8862, "-4.480021572372691e+121", 10, MPFR_RNDN);
        mpfr_init(r8863);
        mpfr_init(r8864);
        mpfr_init(r8865);
        mpfr_init(r8866);
        mpfr_init(r8867);
        mpfr_init(r8868);
        mpfr_init(r8869);
        mpfr_init(r8870);
        mpfr_init(r8871);
        mpfr_init_set_str(r8872, "3.3274636606180965e-305", 10, MPFR_RNDN);
        mpfr_init(r8873);
        mpfr_init_set_str(r8874, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8875, "2", 10, MPFR_RNDN);
        mpfr_init(r8876);
        mpfr_init(r8877);
        mpfr_init_set_str(r8878, "4", 10, MPFR_RNDN);
        mpfr_init(r8879);
        mpfr_init(r8880);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
        mpfr_init(r8884);
        mpfr_init(r8885);
        mpfr_init_set_str(r8886, "1.4399774592443239e+37", 10, MPFR_RNDN);
        mpfr_init(r8887);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init(r8890);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init(r8894);
        mpfr_init(r8895);
        mpfr_init(r8896);
        mpfr_init(r8897);
        mpfr_init(r8898);
        mpfr_init(r8899);
        mpfr_init(r8900);
        mpfr_init(r8901);
        mpfr_init(r8902);
        mpfr_init(r8903);
        mpfr_init(r8904);
        mpfr_init(r8905);
        mpfr_init(r8906);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r8861, b, MPFR_RNDN);
        ;
        mpfr_set_si(r8863, mpfr_cmp(r8861, r8862) <= 0, MPFR_RNDN);
        mpfr_neg(r8864, r8861, MPFR_RNDN);
        mpfr_set_d(r8865, a, MPFR_RNDN);
        mpfr_div(r8866, r8864, r8865, MPFR_RNDN);
        mpfr_set_d(r8867, c, MPFR_RNDN);
        mpfr_div(r8868, r8867, r8861, MPFR_RNDN);
        mpfr_div(r8869, r8865, r8865, MPFR_RNDN);
        mpfr_div(r8870, r8868, r8869, MPFR_RNDN);
        mpfr_sub(r8871, r8866, r8870, MPFR_RNDN);
        ;
        mpfr_set_si(r8873, mpfr_cmp(r8861, r8872) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8876, r8865, r8875, MPFR_RNDN);
        mpfr_mul(r8877, r8861, r8861, MPFR_RNDN);
        ;
        mpfr_mul(r8879, r8878, r8865, MPFR_RNDN);
        mpfr_mul(r8880, r8867, r8879, MPFR_RNDN);
        mpfr_sub(r8881, r8877, r8880, MPFR_RNDN);
        mpfr_sqrt(r8882, r8881, MPFR_RNDN);
        mpfr_sub(r8883, r8882, r8861, MPFR_RNDN);
        mpfr_div(r8884, r8876, r8883, MPFR_RNDN);
        mpfr_div(r8885, r8874, r8884, MPFR_RNDN);
        ;
        mpfr_set_si(r8887, mpfr_cmp(r8861, r8886) <= 0, MPFR_RNDN);
        mpfr_div(r8888, r8874, r8875, MPFR_RNDN);
        mpfr_mul(r8889, r8867, r8878, MPFR_RNDN);
        mpfr_mul(r8890, r8865, r8878, MPFR_RNDN);
        mpfr_mul(r8891, r8890, r8867, MPFR_RNDN);
        mpfr_sub(r8892, r8877, r8891, MPFR_RNDN);
        mpfr_sqrt(r8893, r8892, MPFR_RNDN);
        mpfr_sub(r8894, r8864, r8893, MPFR_RNDN);
        mpfr_div(r8895, r8889, r8894, MPFR_RNDN);
        mpfr_mul(r8896, r8888, r8895, MPFR_RNDN);
        mpfr_mul(r8897, r8875, r8875, MPFR_RNDN);
        mpfr_div(r8898, r8867, r8897, MPFR_RNDN);
        mpfr_mul(r8899, r8898, r8878, MPFR_RNDN);
        mpfr_div(r8900, r8865, r8861, MPFR_RNDN);
        mpfr_mul(r8901, r8900, r8867, MPFR_RNDN);
        mpfr_sub(r8902, r8901, r8861, MPFR_RNDN);
        mpfr_div(r8903, r8899, r8902, MPFR_RNDN);
        if (mpfr_get_si(r8887, MPFR_RNDN)) { mpfr_set(r8904, r8896, MPFR_RNDN); } else { mpfr_set(r8904, r8903, MPFR_RNDN); };
        if (mpfr_get_si(r8873, MPFR_RNDN)) { mpfr_set(r8905, r8885, MPFR_RNDN); } else { mpfr_set(r8905, r8904, MPFR_RNDN); };
        if (mpfr_get_si(r8863, MPFR_RNDN)) { mpfr_set(r8906, r8871, MPFR_RNDN); } else { mpfr_set(r8906, r8905, MPFR_RNDN); };
        return mpfr_get_d(r8906, MPFR_RNDN);
}

static mpfr_t r8907, r8908, r8909, r8910, r8911, r8912, r8913, r8914, r8915, r8916, r8917, r8918, r8919, r8920, r8921, r8922, r8923, r8924, r8925, r8926, r8927, r8928, r8929, r8930, r8931, r8932, r8933, r8934, r8935, r8936, r8937, r8938, r8939, r8940, r8941, r8942, r8943, r8944, r8945, r8946, r8947, r8948, r8949, r8950, r8951, r8952;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8907);
        mpfr_init_set_str(r8908, "-4.480021572372691e+121", 10, MPFR_RNDN);
        mpfr_init(r8909);
        mpfr_init(r8910);
        mpfr_init(r8911);
        mpfr_init(r8912);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
        mpfr_init(r8916);
        mpfr_init(r8917);
        mpfr_init_set_str(r8918, "3.3274636606180965e-305", 10, MPFR_RNDN);
        mpfr_init(r8919);
        mpfr_init_set_str(r8920, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r8921, "2", 10, MPFR_RNDN);
        mpfr_init(r8922);
        mpfr_init(r8923);
        mpfr_init_set_str(r8924, "4", 10, MPFR_RNDN);
        mpfr_init(r8925);
        mpfr_init(r8926);
        mpfr_init(r8927);
        mpfr_init(r8928);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init(r8931);
        mpfr_init_set_str(r8932, "1.4399774592443239e+37", 10, MPFR_RNDN);
        mpfr_init(r8933);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init(r8941);
        mpfr_init(r8942);
        mpfr_init(r8943);
        mpfr_init(r8944);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init(r8947);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r8907, b, MPFR_RNDN);
        ;
        mpfr_set_si(r8909, mpfr_cmp(r8907, r8908) <= 0, MPFR_RNDN);
        mpfr_neg(r8910, r8907, MPFR_RNDN);
        mpfr_set_d(r8911, a, MPFR_RNDN);
        mpfr_div(r8912, r8910, r8911, MPFR_RNDN);
        mpfr_set_d(r8913, c, MPFR_RNDN);
        mpfr_div(r8914, r8913, r8907, MPFR_RNDN);
        mpfr_div(r8915, r8911, r8911, MPFR_RNDN);
        mpfr_div(r8916, r8914, r8915, MPFR_RNDN);
        mpfr_sub(r8917, r8912, r8916, MPFR_RNDN);
        ;
        mpfr_set_si(r8919, mpfr_cmp(r8907, r8918) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r8922, r8911, r8921, MPFR_RNDN);
        mpfr_mul(r8923, r8907, r8907, MPFR_RNDN);
        ;
        mpfr_mul(r8925, r8924, r8911, MPFR_RNDN);
        mpfr_mul(r8926, r8913, r8925, MPFR_RNDN);
        mpfr_sub(r8927, r8923, r8926, MPFR_RNDN);
        mpfr_sqrt(r8928, r8927, MPFR_RNDN);
        mpfr_sub(r8929, r8928, r8907, MPFR_RNDN);
        mpfr_div(r8930, r8922, r8929, MPFR_RNDN);
        mpfr_div(r8931, r8920, r8930, MPFR_RNDN);
        ;
        mpfr_set_si(r8933, mpfr_cmp(r8907, r8932) <= 0, MPFR_RNDN);
        mpfr_div(r8934, r8920, r8921, MPFR_RNDN);
        mpfr_mul(r8935, r8913, r8924, MPFR_RNDN);
        mpfr_mul(r8936, r8911, r8924, MPFR_RNDN);
        mpfr_mul(r8937, r8936, r8913, MPFR_RNDN);
        mpfr_sub(r8938, r8923, r8937, MPFR_RNDN);
        mpfr_sqrt(r8939, r8938, MPFR_RNDN);
        mpfr_sub(r8940, r8910, r8939, MPFR_RNDN);
        mpfr_div(r8941, r8935, r8940, MPFR_RNDN);
        mpfr_mul(r8942, r8934, r8941, MPFR_RNDN);
        mpfr_mul(r8943, r8921, r8921, MPFR_RNDN);
        mpfr_div(r8944, r8913, r8943, MPFR_RNDN);
        mpfr_mul(r8945, r8944, r8924, MPFR_RNDN);
        mpfr_div(r8946, r8911, r8907, MPFR_RNDN);
        mpfr_mul(r8947, r8946, r8913, MPFR_RNDN);
        mpfr_sub(r8948, r8947, r8907, MPFR_RNDN);
        mpfr_div(r8949, r8945, r8948, MPFR_RNDN);
        if (mpfr_get_si(r8933, MPFR_RNDN)) { mpfr_set(r8950, r8942, MPFR_RNDN); } else { mpfr_set(r8950, r8949, MPFR_RNDN); };
        if (mpfr_get_si(r8919, MPFR_RNDN)) { mpfr_set(r8951, r8931, MPFR_RNDN); } else { mpfr_set(r8951, r8950, MPFR_RNDN); };
        if (mpfr_get_si(r8909, MPFR_RNDN)) { mpfr_set(r8952, r8917, MPFR_RNDN); } else { mpfr_set(r8952, r8951, MPFR_RNDN); };
        return mpfr_get_d(r8952, MPFR_RNDN);
}

