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

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

double f_if(float a, float b, float c) {
        float r35829 = b;
        float r35830 = -r35829;
        float r35831 = r35829 * r35829;
        float r35832 = 4.0f;
        float r35833 = a;
        float r35834 = r35832 * r35833;
        float r35835 = c;
        float r35836 = r35834 * r35835;
        float r35837 = r35831 - r35836;
        float r35838 = sqrt(r35837);
        float r35839 = r35830 + r35838;
        float r35840 = 2.0f;
        float r35841 = r35840 * r35833;
        float r35842 = r35839 / r35841;
        return r35842;
}

double f_id(double a, double b, double c) {
        double r35843 = b;
        double r35844 = -r35843;
        double r35845 = r35843 * r35843;
        double r35846 = 4.0;
        double r35847 = a;
        double r35848 = r35846 * r35847;
        double r35849 = c;
        double r35850 = r35848 * r35849;
        double r35851 = r35845 - r35850;
        double r35852 = sqrt(r35851);
        double r35853 = r35844 + r35852;
        double r35854 = 2.0;
        double r35855 = r35854 * r35847;
        double r35856 = r35853 / r35855;
        return r35856;
}


double f_of(float a, float b, float c) {
        float r35857 = b;
        float r35858 = -4.319226994044875e+67f;
        bool r35859 = r35857 <= r35858;
        float r35860 = -r35857;
        float r35861 = a;
        float r35862 = r35860 / r35861;
        float r35863 = 1.3254506382963175e-308f;
        bool r35864 = r35857 <= r35863;
        float r35865 = 1.0f;
        float r35866 = 2.0f;
        float r35867 = r35866 * r35861;
        float r35868 = r35857 * r35857;
        float r35869 = 4.0f;
        float r35870 = r35869 * r35861;
        float r35871 = c;
        float r35872 = r35870 * r35871;
        float r35873 = r35868 - r35872;
        float r35874 = sqrt(r35873);
        float r35875 = r35860 + r35874;
        float r35876 = r35867 / r35875;
        float r35877 = r35865 / r35876;
        float r35878 = 1.0905893076356243e+100f;
        bool r35879 = r35857 <= r35878;
        float r35880 = r35869 / r35866;
        float r35881 = r35861 * r35871;
        float r35882 = r35869 * r35881;
        float r35883 = r35868 - r35882;
        float r35884 = sqrt(r35883);
        float r35885 = r35860 - r35884;
        float r35886 = r35871 / r35885;
        float r35887 = r35880 * r35886;
        float r35888 = r35857 + r35860;
        float r35889 = r35861 + r35861;
        float r35890 = r35888 / r35889;
        float r35891 = r35871 / r35857;
        float r35892 = r35890 - r35891;
        float r35893 = r35879 ? r35887 : r35892;
        float r35894 = r35864 ? r35877 : r35893;
        float r35895 = r35859 ? r35862 : r35894;
        return r35895;
}

double f_od(double a, double b, double c) {
        double r35896 = b;
        double r35897 = -4.319226994044875e+67;
        bool r35898 = r35896 <= r35897;
        double r35899 = -r35896;
        double r35900 = a;
        double r35901 = r35899 / r35900;
        double r35902 = 1.3254506382963175e-308;
        bool r35903 = r35896 <= r35902;
        double r35904 = 1.0;
        double r35905 = 2.0;
        double r35906 = r35905 * r35900;
        double r35907 = r35896 * r35896;
        double r35908 = 4.0;
        double r35909 = r35908 * r35900;
        double r35910 = c;
        double r35911 = r35909 * r35910;
        double r35912 = r35907 - r35911;
        double r35913 = sqrt(r35912);
        double r35914 = r35899 + r35913;
        double r35915 = r35906 / r35914;
        double r35916 = r35904 / r35915;
        double r35917 = 1.0905893076356243e+100;
        bool r35918 = r35896 <= r35917;
        double r35919 = r35908 / r35905;
        double r35920 = r35900 * r35910;
        double r35921 = r35908 * r35920;
        double r35922 = r35907 - r35921;
        double r35923 = sqrt(r35922);
        double r35924 = r35899 - r35923;
        double r35925 = r35910 / r35924;
        double r35926 = r35919 * r35925;
        double r35927 = r35896 + r35899;
        double r35928 = r35900 + r35900;
        double r35929 = r35927 / r35928;
        double r35930 = r35910 / r35896;
        double r35931 = r35929 - r35930;
        double r35932 = r35918 ? r35926 : r35931;
        double r35933 = r35903 ? r35916 : r35932;
        double r35934 = r35898 ? r35901 : r35933;
        return r35934;
}

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 r35935, r35936, r35937, r35938, r35939, r35940, r35941, r35942, r35943, r35944, r35945, r35946, r35947, r35948;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r35935);
        mpfr_init(r35936);
        mpfr_init(r35937);
        mpfr_init_set_str(r35938, "4", 10, MPFR_RNDN);
        mpfr_init(r35939);
        mpfr_init(r35940);
        mpfr_init(r35941);
        mpfr_init(r35942);
        mpfr_init(r35943);
        mpfr_init(r35944);
        mpfr_init(r35945);
        mpfr_init_set_str(r35946, "2", 10, MPFR_RNDN);
        mpfr_init(r35947);
        mpfr_init(r35948);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r35935, b, MPFR_RNDN);
        mpfr_neg(r35936, r35935, MPFR_RNDN);
        mpfr_sqr(r35937, r35935, MPFR_RNDN);
        ;
        mpfr_set_d(r35939, a, MPFR_RNDN);
        mpfr_mul(r35940, r35938, r35939, MPFR_RNDN);
        mpfr_set_d(r35941, c, MPFR_RNDN);
        mpfr_mul(r35942, r35940, r35941, MPFR_RNDN);
        mpfr_sub(r35943, r35937, r35942, MPFR_RNDN);
        mpfr_sqrt(r35944, r35943, MPFR_RNDN);
        mpfr_add(r35945, r35936, r35944, MPFR_RNDN);
        ;
        mpfr_mul(r35947, r35946, r35939, MPFR_RNDN);
        mpfr_div(r35948, r35945, r35947, MPFR_RNDN);
        return mpfr_get_d(r35948, MPFR_RNDN);
}

static mpfr_t r35949, r35950, r35951, r35952, r35953, r35954, r35955, r35956, r35957, r35958, r35959, r35960, r35961, r35962, r35963, r35964, r35965, r35966, r35967, r35968, r35969, r35970, r35971, r35972, r35973, r35974, r35975, r35976, r35977, r35978, r35979, r35980, r35981, r35982, r35983, r35984, r35985, r35986, r35987;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r35949);
        mpfr_init_set_str(r35950, "-4.319226994044875e+67", 10, MPFR_RNDN);
        mpfr_init(r35951);
        mpfr_init(r35952);
        mpfr_init(r35953);
        mpfr_init(r35954);
        mpfr_init_set_str(r35955, "1.3254506382963175e-308", 10, MPFR_RNDN);
        mpfr_init(r35956);
        mpfr_init_set_str(r35957, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r35958, "2", 10, MPFR_RNDN);
        mpfr_init(r35959);
        mpfr_init(r35960);
        mpfr_init_set_str(r35961, "4", 10, MPFR_RNDN);
        mpfr_init(r35962);
        mpfr_init(r35963);
        mpfr_init(r35964);
        mpfr_init(r35965);
        mpfr_init(r35966);
        mpfr_init(r35967);
        mpfr_init(r35968);
        mpfr_init(r35969);
        mpfr_init_set_str(r35970, "1.0905893076356243e+100", 10, MPFR_RNDN);
        mpfr_init(r35971);
        mpfr_init(r35972);
        mpfr_init(r35973);
        mpfr_init(r35974);
        mpfr_init(r35975);
        mpfr_init(r35976);
        mpfr_init(r35977);
        mpfr_init(r35978);
        mpfr_init(r35979);
        mpfr_init(r35980);
        mpfr_init(r35981);
        mpfr_init(r35982);
        mpfr_init(r35983);
        mpfr_init(r35984);
        mpfr_init(r35985);
        mpfr_init(r35986);
        mpfr_init(r35987);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r35949, b, MPFR_RNDN);
        ;
        mpfr_set_si(r35951, mpfr_cmp(r35949, r35950) <= 0, MPFR_RNDN);
        mpfr_neg(r35952, r35949, MPFR_RNDN);
        mpfr_set_d(r35953, a, MPFR_RNDN);
        mpfr_div(r35954, r35952, r35953, MPFR_RNDN);
        ;
        mpfr_set_si(r35956, mpfr_cmp(r35949, r35955) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r35959, r35958, r35953, MPFR_RNDN);
        mpfr_sqr(r35960, r35949, MPFR_RNDN);
        ;
        mpfr_mul(r35962, r35961, r35953, MPFR_RNDN);
        mpfr_set_d(r35963, c, MPFR_RNDN);
        mpfr_mul(r35964, r35962, r35963, MPFR_RNDN);
        mpfr_sub(r35965, r35960, r35964, MPFR_RNDN);
        mpfr_sqrt(r35966, r35965, MPFR_RNDN);
        mpfr_add(r35967, r35952, r35966, MPFR_RNDN);
        mpfr_div(r35968, r35959, r35967, MPFR_RNDN);
        mpfr_div(r35969, r35957, r35968, MPFR_RNDN);
        ;
        mpfr_set_si(r35971, mpfr_cmp(r35949, r35970) <= 0, MPFR_RNDN);
        mpfr_div(r35972, r35961, r35958, MPFR_RNDN);
        mpfr_mul(r35973, r35953, r35963, MPFR_RNDN);
        mpfr_mul(r35974, r35961, r35973, MPFR_RNDN);
        mpfr_sub(r35975, r35960, r35974, MPFR_RNDN);
        mpfr_sqrt(r35976, r35975, MPFR_RNDN);
        mpfr_sub(r35977, r35952, r35976, MPFR_RNDN);
        mpfr_div(r35978, r35963, r35977, MPFR_RNDN);
        mpfr_mul(r35979, r35972, r35978, MPFR_RNDN);
        mpfr_add(r35980, r35949, r35952, MPFR_RNDN);
        mpfr_add(r35981, r35953, r35953, MPFR_RNDN);
        mpfr_div(r35982, r35980, r35981, MPFR_RNDN);
        mpfr_div(r35983, r35963, r35949, MPFR_RNDN);
        mpfr_sub(r35984, r35982, r35983, MPFR_RNDN);
        if (mpfr_get_si(r35971, MPFR_RNDN)) { mpfr_set(r35985, r35979, MPFR_RNDN); } else { mpfr_set(r35985, r35984, MPFR_RNDN); };
        if (mpfr_get_si(r35956, MPFR_RNDN)) { mpfr_set(r35986, r35969, MPFR_RNDN); } else { mpfr_set(r35986, r35985, MPFR_RNDN); };
        if (mpfr_get_si(r35951, MPFR_RNDN)) { mpfr_set(r35987, r35954, MPFR_RNDN); } else { mpfr_set(r35987, r35986, MPFR_RNDN); };
        return mpfr_get_d(r35987, MPFR_RNDN);
}

static mpfr_t r35988, r35989, r35990, r35991, r35992, r35993, r35994, r35995, r35996, r35997, r35998, r35999, r36000, r36001, r36002, r36003, r36004, r36005, r36006, r36007, r36008, r36009, r36010, r36011, r36012, r36013, r36014, r36015, r36016, r36017, r36018, r36019, r36020, r36021, r36022, r36023, r36024, r36025, r36026;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r35988);
        mpfr_init_set_str(r35989, "-4.319226994044875e+67", 10, MPFR_RNDN);
        mpfr_init(r35990);
        mpfr_init(r35991);
        mpfr_init(r35992);
        mpfr_init(r35993);
        mpfr_init_set_str(r35994, "1.3254506382963175e-308", 10, MPFR_RNDN);
        mpfr_init(r35995);
        mpfr_init_set_str(r35996, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r35997, "2", 10, MPFR_RNDN);
        mpfr_init(r35998);
        mpfr_init(r35999);
        mpfr_init_set_str(r36000, "4", 10, MPFR_RNDN);
        mpfr_init(r36001);
        mpfr_init(r36002);
        mpfr_init(r36003);
        mpfr_init(r36004);
        mpfr_init(r36005);
        mpfr_init(r36006);
        mpfr_init(r36007);
        mpfr_init(r36008);
        mpfr_init_set_str(r36009, "1.0905893076356243e+100", 10, MPFR_RNDN);
        mpfr_init(r36010);
        mpfr_init(r36011);
        mpfr_init(r36012);
        mpfr_init(r36013);
        mpfr_init(r36014);
        mpfr_init(r36015);
        mpfr_init(r36016);
        mpfr_init(r36017);
        mpfr_init(r36018);
        mpfr_init(r36019);
        mpfr_init(r36020);
        mpfr_init(r36021);
        mpfr_init(r36022);
        mpfr_init(r36023);
        mpfr_init(r36024);
        mpfr_init(r36025);
        mpfr_init(r36026);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r35988, b, MPFR_RNDN);
        ;
        mpfr_set_si(r35990, mpfr_cmp(r35988, r35989) <= 0, MPFR_RNDN);
        mpfr_neg(r35991, r35988, MPFR_RNDN);
        mpfr_set_d(r35992, a, MPFR_RNDN);
        mpfr_div(r35993, r35991, r35992, MPFR_RNDN);
        ;
        mpfr_set_si(r35995, mpfr_cmp(r35988, r35994) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r35998, r35997, r35992, MPFR_RNDN);
        mpfr_sqr(r35999, r35988, MPFR_RNDN);
        ;
        mpfr_mul(r36001, r36000, r35992, MPFR_RNDN);
        mpfr_set_d(r36002, c, MPFR_RNDN);
        mpfr_mul(r36003, r36001, r36002, MPFR_RNDN);
        mpfr_sub(r36004, r35999, r36003, MPFR_RNDN);
        mpfr_sqrt(r36005, r36004, MPFR_RNDN);
        mpfr_add(r36006, r35991, r36005, MPFR_RNDN);
        mpfr_div(r36007, r35998, r36006, MPFR_RNDN);
        mpfr_div(r36008, r35996, r36007, MPFR_RNDN);
        ;
        mpfr_set_si(r36010, mpfr_cmp(r35988, r36009) <= 0, MPFR_RNDN);
        mpfr_div(r36011, r36000, r35997, MPFR_RNDN);
        mpfr_mul(r36012, r35992, r36002, MPFR_RNDN);
        mpfr_mul(r36013, r36000, r36012, MPFR_RNDN);
        mpfr_sub(r36014, r35999, r36013, MPFR_RNDN);
        mpfr_sqrt(r36015, r36014, MPFR_RNDN);
        mpfr_sub(r36016, r35991, r36015, MPFR_RNDN);
        mpfr_div(r36017, r36002, r36016, MPFR_RNDN);
        mpfr_mul(r36018, r36011, r36017, MPFR_RNDN);
        mpfr_add(r36019, r35988, r35991, MPFR_RNDN);
        mpfr_add(r36020, r35992, r35992, MPFR_RNDN);
        mpfr_div(r36021, r36019, r36020, MPFR_RNDN);
        mpfr_div(r36022, r36002, r35988, MPFR_RNDN);
        mpfr_sub(r36023, r36021, r36022, MPFR_RNDN);
        if (mpfr_get_si(r36010, MPFR_RNDN)) { mpfr_set(r36024, r36018, MPFR_RNDN); } else { mpfr_set(r36024, r36023, MPFR_RNDN); };
        if (mpfr_get_si(r35995, MPFR_RNDN)) { mpfr_set(r36025, r36008, MPFR_RNDN); } else { mpfr_set(r36025, r36024, MPFR_RNDN); };
        if (mpfr_get_si(r35990, MPFR_RNDN)) { mpfr_set(r36026, r35993, MPFR_RNDN); } else { mpfr_set(r36026, r36025, MPFR_RNDN); };
        return mpfr_get_d(r36026, MPFR_RNDN);
}

