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

char *name = "The quadratic formula (r2)";

double f_if(float a, float b, float c) {
        float r8796 = b;
        float r8797 = -r8796;
        float r8798 = r8796 * r8796;
        float r8799 = 4.0f;
        float r8800 = a;
        float r8801 = c;
        float r8802 = r8800 * r8801;
        float r8803 = r8799 * r8802;
        float r8804 = r8798 - r8803;
        float r8805 = sqrt(r8804);
        float r8806 = r8797 - r8805;
        float r8807 = 2.0f;
        float r8808 = r8807 * r8800;
        float r8809 = r8806 / r8808;
        return r8809;
}

double f_id(double a, double b, double c) {
        double r8810 = b;
        double r8811 = -r8810;
        double r8812 = r8810 * r8810;
        double r8813 = 4.0;
        double r8814 = a;
        double r8815 = c;
        double r8816 = r8814 * r8815;
        double r8817 = r8813 * r8816;
        double r8818 = r8812 - r8817;
        double r8819 = sqrt(r8818);
        double r8820 = r8811 - r8819;
        double r8821 = 2.0;
        double r8822 = r8821 * r8814;
        double r8823 = r8820 / r8822;
        return r8823;
}


double f_of(float a, float b, float c) {
        float r8824 = b;
        float r8825 = -r8824;
        float r8826 = -9.670079395517677e+115f;
        bool r8827 = r8825 <= r8826;
        float r8828 = a;
        float r8829 = r8824 / r8828;
        float r8830 = -r8829;
        float r8831 = 1.094348108854397e-160f;
        bool r8832 = r8825 <= r8831;
        float r8833 = 4.0f;
        float r8834 = r8828 * r8833;
        float r8835 = c;
        float r8836 = -r8835;
        float r8837 = r8824 * r8824;
        float r8838 = fma(r8834, r8836, r8837);
        float r8839 = sqrt(r8838);
        float r8840 = r8825 - r8839;
        float r8841 = 2.0f;
        float r8842 = r8828 * r8841;
        float r8843 = r8840 / r8842;
        float r8844 = 1.1483194775251371e+132f;
        bool r8845 = r8825 <= r8844;
        float r8846 = r8833 * r8835;
        float r8847 = r8846 / r8841;
        float r8848 = cbrt(r8847);
        float r8849 = -r8833;
        float r8850 = r8828 * r8835;
        float r8851 = fma(r8849, r8850, r8837);
        float r8852 = sqrt(r8851);
        float r8853 = r8852 - r8824;
        float r8854 = r8848 / r8853;
        float r8855 = r8841 / r8835;
        float r8856 = r8833 / r8855;
        float r8857 = cbrt(r8856);
        float r8858 = r8857 * r8857;
        float r8859 = r8854 * r8858;
        float r8860 = r8850 / r8824;
        float r8861 = -2.0f;
        float r8862 = r8860 * r8861;
        float r8863 = r8862 / r8842;
        float r8864 = r8845 ? r8859 : r8863;
        float r8865 = r8832 ? r8843 : r8864;
        float r8866 = r8827 ? r8830 : r8865;
        return r8866;
}

double f_od(double a, double b, double c) {
        double r8867 = b;
        double r8868 = -r8867;
        double r8869 = -9.670079395517677e+115;
        bool r8870 = r8868 <= r8869;
        double r8871 = a;
        double r8872 = r8867 / r8871;
        double r8873 = -r8872;
        double r8874 = 1.094348108854397e-160;
        bool r8875 = r8868 <= r8874;
        double r8876 = 4.0;
        double r8877 = r8871 * r8876;
        double r8878 = c;
        double r8879 = -r8878;
        double r8880 = r8867 * r8867;
        double r8881 = fma(r8877, r8879, r8880);
        double r8882 = sqrt(r8881);
        double r8883 = r8868 - r8882;
        double r8884 = 2.0;
        double r8885 = r8871 * r8884;
        double r8886 = r8883 / r8885;
        double r8887 = 1.1483194775251371e+132;
        bool r8888 = r8868 <= r8887;
        double r8889 = r8876 * r8878;
        double r8890 = r8889 / r8884;
        double r8891 = cbrt(r8890);
        double r8892 = -r8876;
        double r8893 = r8871 * r8878;
        double r8894 = fma(r8892, r8893, r8880);
        double r8895 = sqrt(r8894);
        double r8896 = r8895 - r8867;
        double r8897 = r8891 / r8896;
        double r8898 = r8884 / r8878;
        double r8899 = r8876 / r8898;
        double r8900 = cbrt(r8899);
        double r8901 = r8900 * r8900;
        double r8902 = r8897 * r8901;
        double r8903 = r8893 / r8867;
        double r8904 = -2.0;
        double r8905 = r8903 * r8904;
        double r8906 = r8905 / r8885;
        double r8907 = r8888 ? r8902 : r8906;
        double r8908 = r8875 ? r8886 : r8907;
        double r8909 = r8870 ? r8873 : r8908;
        return r8909;
}

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 r8910, r8911, r8912, r8913, r8914, r8915, r8916, r8917, r8918, r8919, r8920, r8921, r8922, r8923;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8910);
        mpfr_init(r8911);
        mpfr_init(r8912);
        mpfr_init_set_str(r8913, "4", 10, MPFR_RNDN);
        mpfr_init(r8914);
        mpfr_init(r8915);
        mpfr_init(r8916);
        mpfr_init(r8917);
        mpfr_init(r8918);
        mpfr_init(r8919);
        mpfr_init(r8920);
        mpfr_init_set_str(r8921, "2", 10, MPFR_RNDN);
        mpfr_init(r8922);
        mpfr_init(r8923);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8910, b, MPFR_RNDN);
        mpfr_neg(r8911, r8910, MPFR_RNDN);
        mpfr_mul(r8912, r8910, r8910, MPFR_RNDN);
        ;
        mpfr_set_d(r8914, a, MPFR_RNDN);
        mpfr_set_d(r8915, c, MPFR_RNDN);
        mpfr_mul(r8916, r8914, r8915, MPFR_RNDN);
        mpfr_mul(r8917, r8913, r8916, MPFR_RNDN);
        mpfr_sub(r8918, r8912, r8917, MPFR_RNDN);
        mpfr_sqrt(r8919, r8918, MPFR_RNDN);
        mpfr_sub(r8920, r8911, r8919, MPFR_RNDN);
        ;
        mpfr_mul(r8922, r8921, r8914, MPFR_RNDN);
        mpfr_div(r8923, r8920, r8922, MPFR_RNDN);
        return mpfr_get_d(r8923, MPFR_RNDN);
}

static mpfr_t 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, r8953, r8954, r8955, r8956, r8957, r8958, r8959, r8960, r8961, r8962, r8963, r8964, r8965, r8966;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8924);
        mpfr_init(r8925);
        mpfr_init_set_str(r8926, "-9.670079395517677e+115", 10, MPFR_RNDN);
        mpfr_init(r8927);
        mpfr_init(r8928);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init_set_str(r8931, "1.094348108854397e-160", 10, MPFR_RNDN);
        mpfr_init(r8932);
        mpfr_init_set_str(r8933, "4", 10, MPFR_RNDN);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init(r8937);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init_set_str(r8941, "2", 10, MPFR_RNDN);
        mpfr_init(r8942);
        mpfr_init(r8943);
        mpfr_init_set_str(r8944, "1.1483194775251371e+132", 10, MPFR_RNDN);
        mpfr_init(r8945);
        mpfr_init(r8946);
        mpfr_init(r8947);
        mpfr_init(r8948);
        mpfr_init(r8949);
        mpfr_init(r8950);
        mpfr_init(r8951);
        mpfr_init(r8952);
        mpfr_init(r8953);
        mpfr_init(r8954);
        mpfr_init(r8955);
        mpfr_init(r8956);
        mpfr_init(r8957);
        mpfr_init(r8958);
        mpfr_init(r8959);
        mpfr_init(r8960);
        mpfr_init_set_str(r8961, "-2", 10, MPFR_RNDN);
        mpfr_init(r8962);
        mpfr_init(r8963);
        mpfr_init(r8964);
        mpfr_init(r8965);
        mpfr_init(r8966);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r8924, b, MPFR_RNDN);
        mpfr_neg(r8925, r8924, MPFR_RNDN);
        ;
        mpfr_set_si(r8927, mpfr_cmp(r8925, r8926) <= 0, MPFR_RNDN);
        mpfr_set_d(r8928, a, MPFR_RNDN);
        mpfr_div(r8929, r8924, r8928, MPFR_RNDN);
        mpfr_neg(r8930, r8929, MPFR_RNDN);
        ;
        mpfr_set_si(r8932, mpfr_cmp(r8925, r8931) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8934, r8928, r8933, MPFR_RNDN);
        mpfr_set_d(r8935, c, MPFR_RNDN);
        mpfr_neg(r8936, r8935, MPFR_RNDN);
        mpfr_mul(r8937, r8924, r8924, MPFR_RNDN);
        mpfr_fma(r8938, r8934, r8936, r8937, MPFR_RNDN);
        mpfr_sqrt(r8939, r8938, MPFR_RNDN);
        mpfr_sub(r8940, r8925, r8939, MPFR_RNDN);
        ;
        mpfr_mul(r8942, r8928, r8941, MPFR_RNDN);
        mpfr_div(r8943, r8940, r8942, MPFR_RNDN);
        ;
        mpfr_set_si(r8945, mpfr_cmp(r8925, r8944) <= 0, MPFR_RNDN);
        mpfr_mul(r8946, r8933, r8935, MPFR_RNDN);
        mpfr_div(r8947, r8946, r8941, MPFR_RNDN);
        mpfr_cbrt(r8948, r8947, MPFR_RNDN);
        mpfr_neg(r8949, r8933, MPFR_RNDN);
        mpfr_mul(r8950, r8928, r8935, MPFR_RNDN);
        mpfr_fma(r8951, r8949, r8950, r8937, MPFR_RNDN);
        mpfr_sqrt(r8952, r8951, MPFR_RNDN);
        mpfr_sub(r8953, r8952, r8924, MPFR_RNDN);
        mpfr_div(r8954, r8948, r8953, MPFR_RNDN);
        mpfr_div(r8955, r8941, r8935, MPFR_RNDN);
        mpfr_div(r8956, r8933, r8955, MPFR_RNDN);
        mpfr_cbrt(r8957, r8956, MPFR_RNDN);
        mpfr_mul(r8958, r8957, r8957, MPFR_RNDN);
        mpfr_mul(r8959, r8954, r8958, MPFR_RNDN);
        mpfr_div(r8960, r8950, r8924, MPFR_RNDN);
        ;
        mpfr_mul(r8962, r8960, r8961, MPFR_RNDN);
        mpfr_div(r8963, r8962, r8942, MPFR_RNDN);
        if (mpfr_get_si(r8945, MPFR_RNDN)) { mpfr_set(r8964, r8959, MPFR_RNDN); } else { mpfr_set(r8964, r8963, MPFR_RNDN); };
        if (mpfr_get_si(r8932, MPFR_RNDN)) { mpfr_set(r8965, r8943, MPFR_RNDN); } else { mpfr_set(r8965, r8964, MPFR_RNDN); };
        if (mpfr_get_si(r8927, MPFR_RNDN)) { mpfr_set(r8966, r8930, MPFR_RNDN); } else { mpfr_set(r8966, r8965, MPFR_RNDN); };
        return mpfr_get_d(r8966, MPFR_RNDN);
}

static mpfr_t r8967, r8968, r8969, r8970, r8971, r8972, r8973, r8974, r8975, r8976, r8977, r8978, r8979, r8980, r8981, r8982, r8983, r8984, r8985, r8986, r8987, r8988, r8989, r8990, r8991, r8992, r8993, r8994, r8995, r8996, r8997, r8998, r8999, r9000, r9001, r9002, r9003, r9004, r9005, r9006, r9007, r9008, r9009;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8967);
        mpfr_init(r8968);
        mpfr_init_set_str(r8969, "-9.670079395517677e+115", 10, MPFR_RNDN);
        mpfr_init(r8970);
        mpfr_init(r8971);
        mpfr_init(r8972);
        mpfr_init(r8973);
        mpfr_init_set_str(r8974, "1.094348108854397e-160", 10, MPFR_RNDN);
        mpfr_init(r8975);
        mpfr_init_set_str(r8976, "4", 10, MPFR_RNDN);
        mpfr_init(r8977);
        mpfr_init(r8978);
        mpfr_init(r8979);
        mpfr_init(r8980);
        mpfr_init(r8981);
        mpfr_init(r8982);
        mpfr_init(r8983);
        mpfr_init_set_str(r8984, "2", 10, MPFR_RNDN);
        mpfr_init(r8985);
        mpfr_init(r8986);
        mpfr_init_set_str(r8987, "1.1483194775251371e+132", 10, MPFR_RNDN);
        mpfr_init(r8988);
        mpfr_init(r8989);
        mpfr_init(r8990);
        mpfr_init(r8991);
        mpfr_init(r8992);
        mpfr_init(r8993);
        mpfr_init(r8994);
        mpfr_init(r8995);
        mpfr_init(r8996);
        mpfr_init(r8997);
        mpfr_init(r8998);
        mpfr_init(r8999);
        mpfr_init(r9000);
        mpfr_init(r9001);
        mpfr_init(r9002);
        mpfr_init(r9003);
        mpfr_init_set_str(r9004, "-2", 10, MPFR_RNDN);
        mpfr_init(r9005);
        mpfr_init(r9006);
        mpfr_init(r9007);
        mpfr_init(r9008);
        mpfr_init(r9009);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r8967, b, MPFR_RNDN);
        mpfr_neg(r8968, r8967, MPFR_RNDN);
        ;
        mpfr_set_si(r8970, mpfr_cmp(r8968, r8969) <= 0, MPFR_RNDN);
        mpfr_set_d(r8971, a, MPFR_RNDN);
        mpfr_div(r8972, r8967, r8971, MPFR_RNDN);
        mpfr_neg(r8973, r8972, MPFR_RNDN);
        ;
        mpfr_set_si(r8975, mpfr_cmp(r8968, r8974) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8977, r8971, r8976, MPFR_RNDN);
        mpfr_set_d(r8978, c, MPFR_RNDN);
        mpfr_neg(r8979, r8978, MPFR_RNDN);
        mpfr_mul(r8980, r8967, r8967, MPFR_RNDN);
        mpfr_fma(r8981, r8977, r8979, r8980, MPFR_RNDN);
        mpfr_sqrt(r8982, r8981, MPFR_RNDN);
        mpfr_sub(r8983, r8968, r8982, MPFR_RNDN);
        ;
        mpfr_mul(r8985, r8971, r8984, MPFR_RNDN);
        mpfr_div(r8986, r8983, r8985, MPFR_RNDN);
        ;
        mpfr_set_si(r8988, mpfr_cmp(r8968, r8987) <= 0, MPFR_RNDN);
        mpfr_mul(r8989, r8976, r8978, MPFR_RNDN);
        mpfr_div(r8990, r8989, r8984, MPFR_RNDN);
        mpfr_cbrt(r8991, r8990, MPFR_RNDN);
        mpfr_neg(r8992, r8976, MPFR_RNDN);
        mpfr_mul(r8993, r8971, r8978, MPFR_RNDN);
        mpfr_fma(r8994, r8992, r8993, r8980, MPFR_RNDN);
        mpfr_sqrt(r8995, r8994, MPFR_RNDN);
        mpfr_sub(r8996, r8995, r8967, MPFR_RNDN);
        mpfr_div(r8997, r8991, r8996, MPFR_RNDN);
        mpfr_div(r8998, r8984, r8978, MPFR_RNDN);
        mpfr_div(r8999, r8976, r8998, MPFR_RNDN);
        mpfr_cbrt(r9000, r8999, MPFR_RNDN);
        mpfr_mul(r9001, r9000, r9000, MPFR_RNDN);
        mpfr_mul(r9002, r8997, r9001, MPFR_RNDN);
        mpfr_div(r9003, r8993, r8967, MPFR_RNDN);
        ;
        mpfr_mul(r9005, r9003, r9004, MPFR_RNDN);
        mpfr_div(r9006, r9005, r8985, MPFR_RNDN);
        if (mpfr_get_si(r8988, MPFR_RNDN)) { mpfr_set(r9007, r9002, MPFR_RNDN); } else { mpfr_set(r9007, r9006, MPFR_RNDN); };
        if (mpfr_get_si(r8975, MPFR_RNDN)) { mpfr_set(r9008, r8986, MPFR_RNDN); } else { mpfr_set(r9008, r9007, MPFR_RNDN); };
        if (mpfr_get_si(r8970, MPFR_RNDN)) { mpfr_set(r9009, r8973, MPFR_RNDN); } else { mpfr_set(r9009, r9008, MPFR_RNDN); };
        return mpfr_get_d(r9009, MPFR_RNDN);
}

