#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 r8790 = b;
        float r8791 = -r8790;
        float r8792 = r8790 * r8790;
        float r8793 = 4.0f;
        float r8794 = a;
        float r8795 = c;
        float r8796 = r8794 * r8795;
        float r8797 = r8793 * r8796;
        float r8798 = r8792 - r8797;
        float r8799 = sqrt(r8798);
        float r8800 = r8791 - r8799;
        float r8801 = 2.0f;
        float r8802 = r8801 * r8794;
        float r8803 = r8800 / r8802;
        return r8803;
}

double f_id(double a, double b, double c) {
        double r8804 = b;
        double r8805 = -r8804;
        double r8806 = r8804 * r8804;
        double r8807 = 4.0;
        double r8808 = a;
        double r8809 = c;
        double r8810 = r8808 * r8809;
        double r8811 = r8807 * r8810;
        double r8812 = r8806 - r8811;
        double r8813 = sqrt(r8812);
        double r8814 = r8805 - r8813;
        double r8815 = 2.0;
        double r8816 = r8815 * r8808;
        double r8817 = r8814 / r8816;
        return r8817;
}


double f_of(float a, float b, float c) {
        float r8818 = b;
        float r8819 = -r8818;
        float r8820 = -1.5226383508946404e+119f;
        bool r8821 = r8819 <= r8820;
        float r8822 = a;
        float r8823 = r8819 / r8822;
        float r8824 = 1.8160081293285892e+30f;
        bool r8825 = r8819 <= r8824;
        float r8826 = 1.0f;
        float r8827 = r8818 * r8818;
        float r8828 = c;
        float r8829 = r8828 * r8822;
        float r8830 = 4.0f;
        float r8831 = r8829 * r8830;
        float r8832 = r8827 - r8831;
        float r8833 = sqrt(r8832);
        float r8834 = r8819 - r8833;
        float r8835 = 2.0f;
        float r8836 = r8834 / r8835;
        float r8837 = r8822 / r8836;
        float r8838 = r8826 / r8837;
        float r8839 = -2.0f;
        float r8840 = r8829 / r8818;
        float r8841 = r8839 * r8840;
        float r8842 = r8841 / r8835;
        float r8843 = r8842 / r8822;
        float r8844 = r8825 ? r8838 : r8843;
        float r8845 = r8821 ? r8823 : r8844;
        return r8845;
}

double f_od(double a, double b, double c) {
        double r8846 = b;
        double r8847 = -r8846;
        double r8848 = -1.5226383508946404e+119;
        bool r8849 = r8847 <= r8848;
        double r8850 = a;
        double r8851 = r8847 / r8850;
        double r8852 = 1.8160081293285892e+30;
        bool r8853 = r8847 <= r8852;
        double r8854 = 1.0;
        double r8855 = r8846 * r8846;
        double r8856 = c;
        double r8857 = r8856 * r8850;
        double r8858 = 4.0;
        double r8859 = r8857 * r8858;
        double r8860 = r8855 - r8859;
        double r8861 = sqrt(r8860);
        double r8862 = r8847 - r8861;
        double r8863 = 2.0;
        double r8864 = r8862 / r8863;
        double r8865 = r8850 / r8864;
        double r8866 = r8854 / r8865;
        double r8867 = -2.0;
        double r8868 = r8857 / r8846;
        double r8869 = r8867 * r8868;
        double r8870 = r8869 / r8863;
        double r8871 = r8870 / r8850;
        double r8872 = r8853 ? r8866 : r8871;
        double r8873 = r8849 ? r8851 : r8872;
        return r8873;
}

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 r8874, r8875, r8876, r8877, r8878, r8879, r8880, r8881, r8882, r8883, r8884, r8885, r8886, r8887;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8874);
        mpfr_init(r8875);
        mpfr_init(r8876);
        mpfr_init_set_str(r8877, "4", 10, MPFR_RNDN);
        mpfr_init(r8878);
        mpfr_init(r8879);
        mpfr_init(r8880);
        mpfr_init(r8881);
        mpfr_init(r8882);
        mpfr_init(r8883);
        mpfr_init(r8884);
        mpfr_init_set_str(r8885, "2", 10, MPFR_RNDN);
        mpfr_init(r8886);
        mpfr_init(r8887);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r8874, b, MPFR_RNDN);
        mpfr_neg(r8875, r8874, MPFR_RNDN);
        mpfr_mul(r8876, r8874, r8874, MPFR_RNDN);
        ;
        mpfr_set_d(r8878, a, MPFR_RNDN);
        mpfr_set_d(r8879, c, MPFR_RNDN);
        mpfr_mul(r8880, r8878, r8879, MPFR_RNDN);
        mpfr_mul(r8881, r8877, r8880, MPFR_RNDN);
        mpfr_sub(r8882, r8876, r8881, MPFR_RNDN);
        mpfr_sqrt(r8883, r8882, MPFR_RNDN);
        mpfr_sub(r8884, r8875, r8883, MPFR_RNDN);
        ;
        mpfr_mul(r8886, r8885, r8878, MPFR_RNDN);
        mpfr_div(r8887, r8884, r8886, MPFR_RNDN);
        return mpfr_get_d(r8887, MPFR_RNDN);
}

static mpfr_t r8888, r8889, r8890, r8891, r8892, r8893, r8894, r8895, r8896, r8897, r8898, r8899, r8900, r8901, r8902, r8903, r8904, r8905, r8906, r8907, r8908, r8909, r8910, r8911, r8912, r8913, r8914, r8915;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8888);
        mpfr_init(r8889);
        mpfr_init_set_str(r8890, "-1.5226383508946404e+119", 10, MPFR_RNDN);
        mpfr_init(r8891);
        mpfr_init(r8892);
        mpfr_init(r8893);
        mpfr_init_set_str(r8894, "1.8160081293285892e+30", 10, MPFR_RNDN);
        mpfr_init(r8895);
        mpfr_init_set_str(r8896, "1", 10, MPFR_RNDN);
        mpfr_init(r8897);
        mpfr_init(r8898);
        mpfr_init(r8899);
        mpfr_init_set_str(r8900, "4", 10, MPFR_RNDN);
        mpfr_init(r8901);
        mpfr_init(r8902);
        mpfr_init(r8903);
        mpfr_init(r8904);
        mpfr_init_set_str(r8905, "2", 10, MPFR_RNDN);
        mpfr_init(r8906);
        mpfr_init(r8907);
        mpfr_init(r8908);
        mpfr_init_set_str(r8909, "-2", 10, MPFR_RNDN);
        mpfr_init(r8910);
        mpfr_init(r8911);
        mpfr_init(r8912);
        mpfr_init(r8913);
        mpfr_init(r8914);
        mpfr_init(r8915);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r8888, b, MPFR_RNDN);
        mpfr_neg(r8889, r8888, MPFR_RNDN);
        ;
        mpfr_set_si(r8891, mpfr_cmp(r8889, r8890) <= 0, MPFR_RNDN);
        mpfr_set_d(r8892, a, MPFR_RNDN);
        mpfr_div(r8893, r8889, r8892, MPFR_RNDN);
        ;
        mpfr_set_si(r8895, mpfr_cmp(r8889, r8894) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8897, r8888, r8888, MPFR_RNDN);
        mpfr_set_d(r8898, c, MPFR_RNDN);
        mpfr_mul(r8899, r8898, r8892, MPFR_RNDN);
        ;
        mpfr_mul(r8901, r8899, r8900, MPFR_RNDN);
        mpfr_sub(r8902, r8897, r8901, MPFR_RNDN);
        mpfr_sqrt(r8903, r8902, MPFR_RNDN);
        mpfr_sub(r8904, r8889, r8903, MPFR_RNDN);
        ;
        mpfr_div(r8906, r8904, r8905, MPFR_RNDN);
        mpfr_div(r8907, r8892, r8906, MPFR_RNDN);
        mpfr_div(r8908, r8896, r8907, MPFR_RNDN);
        ;
        mpfr_div(r8910, r8899, r8888, MPFR_RNDN);
        mpfr_mul(r8911, r8909, r8910, MPFR_RNDN);
        mpfr_div(r8912, r8911, r8905, MPFR_RNDN);
        mpfr_div(r8913, r8912, r8892, MPFR_RNDN);
        if (mpfr_get_si(r8895, MPFR_RNDN)) { mpfr_set(r8914, r8908, MPFR_RNDN); } else { mpfr_set(r8914, r8913, MPFR_RNDN); };
        if (mpfr_get_si(r8891, MPFR_RNDN)) { mpfr_set(r8915, r8893, MPFR_RNDN); } else { mpfr_set(r8915, r8914, MPFR_RNDN); };
        return mpfr_get_d(r8915, MPFR_RNDN);
}

static mpfr_t 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;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8916);
        mpfr_init(r8917);
        mpfr_init_set_str(r8918, "-1.5226383508946404e+119", 10, MPFR_RNDN);
        mpfr_init(r8919);
        mpfr_init(r8920);
        mpfr_init(r8921);
        mpfr_init_set_str(r8922, "1.8160081293285892e+30", 10, MPFR_RNDN);
        mpfr_init(r8923);
        mpfr_init_set_str(r8924, "1", 10, MPFR_RNDN);
        mpfr_init(r8925);
        mpfr_init(r8926);
        mpfr_init(r8927);
        mpfr_init_set_str(r8928, "4", 10, MPFR_RNDN);
        mpfr_init(r8929);
        mpfr_init(r8930);
        mpfr_init(r8931);
        mpfr_init(r8932);
        mpfr_init_set_str(r8933, "2", 10, MPFR_RNDN);
        mpfr_init(r8934);
        mpfr_init(r8935);
        mpfr_init(r8936);
        mpfr_init_set_str(r8937, "-2", 10, MPFR_RNDN);
        mpfr_init(r8938);
        mpfr_init(r8939);
        mpfr_init(r8940);
        mpfr_init(r8941);
        mpfr_init(r8942);
        mpfr_init(r8943);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r8916, b, MPFR_RNDN);
        mpfr_neg(r8917, r8916, MPFR_RNDN);
        ;
        mpfr_set_si(r8919, mpfr_cmp(r8917, r8918) <= 0, MPFR_RNDN);
        mpfr_set_d(r8920, a, MPFR_RNDN);
        mpfr_div(r8921, r8917, r8920, MPFR_RNDN);
        ;
        mpfr_set_si(r8923, mpfr_cmp(r8917, r8922) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8925, r8916, r8916, MPFR_RNDN);
        mpfr_set_d(r8926, c, MPFR_RNDN);
        mpfr_mul(r8927, r8926, r8920, MPFR_RNDN);
        ;
        mpfr_mul(r8929, r8927, r8928, MPFR_RNDN);
        mpfr_sub(r8930, r8925, r8929, MPFR_RNDN);
        mpfr_sqrt(r8931, r8930, MPFR_RNDN);
        mpfr_sub(r8932, r8917, r8931, MPFR_RNDN);
        ;
        mpfr_div(r8934, r8932, r8933, MPFR_RNDN);
        mpfr_div(r8935, r8920, r8934, MPFR_RNDN);
        mpfr_div(r8936, r8924, r8935, MPFR_RNDN);
        ;
        mpfr_div(r8938, r8927, r8916, MPFR_RNDN);
        mpfr_mul(r8939, r8937, r8938, MPFR_RNDN);
        mpfr_div(r8940, r8939, r8933, MPFR_RNDN);
        mpfr_div(r8941, r8940, r8920, MPFR_RNDN);
        if (mpfr_get_si(r8923, MPFR_RNDN)) { mpfr_set(r8942, r8936, MPFR_RNDN); } else { mpfr_set(r8942, r8941, MPFR_RNDN); };
        if (mpfr_get_si(r8919, MPFR_RNDN)) { mpfr_set(r8943, r8921, MPFR_RNDN); } else { mpfr_set(r8943, r8942, MPFR_RNDN); };
        return mpfr_get_d(r8943, MPFR_RNDN);
}

