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

char *name = "quadp (p42, positive)";

double f_if(float a, float b, float c) {
        float r37851 = b;
        float r37852 = -r37851;
        float r37853 = r37851 * r37851;
        float r37854 = 4;
        float r37855 = a;
        float r37856 = c;
        float r37857 = r37855 * r37856;
        float r37858 = r37854 * r37857;
        float r37859 = r37853 - r37858;
        float r37860 = sqrt(r37859);
        float r37861 = r37852 + r37860;
        float r37862 = 2;
        float r37863 = r37862 * r37855;
        float r37864 = r37861 / r37863;
        return r37864;
}

double f_id(double a, double b, double c) {
        double r37865 = b;
        double r37866 = -r37865;
        double r37867 = r37865 * r37865;
        double r37868 = 4;
        double r37869 = a;
        double r37870 = c;
        double r37871 = r37869 * r37870;
        double r37872 = r37868 * r37871;
        double r37873 = r37867 - r37872;
        double r37874 = sqrt(r37873);
        double r37875 = r37866 + r37874;
        double r37876 = 2;
        double r37877 = r37876 * r37869;
        double r37878 = r37875 / r37877;
        return r37878;
}


double f_of(float a, float b, float c) {
        float r37879 = b;
        float r37880 = -8.111805193496531e+152;
        bool r37881 = r37879 <= r37880;
        float r37882 = -r37879;
        float r37883 = a;
        float r37884 = r37882 / r37883;
        float r37885 = 7.580412743766101e-138;
        bool r37886 = r37879 <= r37885;
        float r37887 = r37879 * r37879;
        float r37888 = 4;
        float r37889 = c;
        float r37890 = r37888 * r37889;
        float r37891 = r37890 * r37883;
        float r37892 = r37887 - r37891;
        float r37893 = sqrt(r37892);
        float r37894 = -r37893;
        float r37895 = r37879 + r37894;
        float r37896 = 2;
        float r37897 = r37896 * r37883;
        float r37898 = -r37897;
        float r37899 = r37895 / r37898;
        float r37900 = r37889 / r37879;
        float r37901 = -2;
        float r37902 = r37901 / r37896;
        float r37903 = r37900 * r37902;
        float r37904 = r37886 ? r37899 : r37903;
        float r37905 = r37881 ? r37884 : r37904;
        return r37905;
}

double f_od(double a, double b, double c) {
        double r37906 = b;
        double r37907 = -8.111805193496531e+152;
        bool r37908 = r37906 <= r37907;
        double r37909 = -r37906;
        double r37910 = a;
        double r37911 = r37909 / r37910;
        double r37912 = 7.580412743766101e-138;
        bool r37913 = r37906 <= r37912;
        double r37914 = r37906 * r37906;
        double r37915 = 4;
        double r37916 = c;
        double r37917 = r37915 * r37916;
        double r37918 = r37917 * r37910;
        double r37919 = r37914 - r37918;
        double r37920 = sqrt(r37919);
        double r37921 = -r37920;
        double r37922 = r37906 + r37921;
        double r37923 = 2;
        double r37924 = r37923 * r37910;
        double r37925 = -r37924;
        double r37926 = r37922 / r37925;
        double r37927 = r37916 / r37906;
        double r37928 = -2;
        double r37929 = r37928 / r37923;
        double r37930 = r37927 * r37929;
        double r37931 = r37913 ? r37926 : r37930;
        double r37932 = r37908 ? r37911 : r37931;
        return r37932;
}

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 r37933, r37934, r37935, r37936, r37937, r37938, r37939, r37940, r37941, r37942, r37943, r37944, r37945, r37946;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37933);
        mpfr_init(r37934);
        mpfr_init(r37935);
        mpfr_init_set_str(r37936, "4", 10, MPFR_RNDN);
        mpfr_init(r37937);
        mpfr_init(r37938);
        mpfr_init(r37939);
        mpfr_init(r37940);
        mpfr_init(r37941);
        mpfr_init(r37942);
        mpfr_init(r37943);
        mpfr_init_set_str(r37944, "2", 10, MPFR_RNDN);
        mpfr_init(r37945);
        mpfr_init(r37946);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r37933, b, MPFR_RNDN);
        mpfr_neg(r37934, r37933, MPFR_RNDN);
        mpfr_mul(r37935, r37933, r37933, MPFR_RNDN);
        ;
        mpfr_set_d(r37937, a, MPFR_RNDN);
        mpfr_set_d(r37938, c, MPFR_RNDN);
        mpfr_mul(r37939, r37937, r37938, MPFR_RNDN);
        mpfr_mul(r37940, r37936, r37939, MPFR_RNDN);
        mpfr_sub(r37941, r37935, r37940, MPFR_RNDN);
        mpfr_sqrt(r37942, r37941, MPFR_RNDN);
        mpfr_add(r37943, r37934, r37942, MPFR_RNDN);
        ;
        mpfr_mul(r37945, r37944, r37937, MPFR_RNDN);
        mpfr_div(r37946, r37943, r37945, MPFR_RNDN);
        return mpfr_get_d(r37946, MPFR_RNDN);
}

static mpfr_t r37947, r37948, r37949, r37950, r37951, r37952, r37953, r37954, r37955, r37956, r37957, r37958, r37959, r37960, r37961, r37962, r37963, r37964, r37965, r37966, r37967, r37968, r37969, r37970, r37971, r37972, r37973;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37947);
        mpfr_init_set_str(r37948, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r37949);
        mpfr_init(r37950);
        mpfr_init(r37951);
        mpfr_init(r37952);
        mpfr_init_set_str(r37953, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r37954);
        mpfr_init(r37955);
        mpfr_init_set_str(r37956, "4", 10, MPFR_RNDN);
        mpfr_init(r37957);
        mpfr_init(r37958);
        mpfr_init(r37959);
        mpfr_init(r37960);
        mpfr_init(r37961);
        mpfr_init(r37962);
        mpfr_init(r37963);
        mpfr_init_set_str(r37964, "2", 10, MPFR_RNDN);
        mpfr_init(r37965);
        mpfr_init(r37966);
        mpfr_init(r37967);
        mpfr_init(r37968);
        mpfr_init_set_str(r37969, "-2", 10, MPFR_RNDN);
        mpfr_init(r37970);
        mpfr_init(r37971);
        mpfr_init(r37972);
        mpfr_init(r37973);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r37947, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37949, mpfr_cmp(r37947, r37948) <= 0, MPFR_RNDN);
        mpfr_neg(r37950, r37947, MPFR_RNDN);
        mpfr_set_d(r37951, a, MPFR_RNDN);
        mpfr_div(r37952, r37950, r37951, MPFR_RNDN);
        ;
        mpfr_set_si(r37954, mpfr_cmp(r37947, r37953) <= 0, MPFR_RNDN);
        mpfr_mul(r37955, r37947, r37947, MPFR_RNDN);
        ;
        mpfr_set_d(r37957, c, MPFR_RNDN);
        mpfr_mul(r37958, r37956, r37957, MPFR_RNDN);
        mpfr_mul(r37959, r37958, r37951, MPFR_RNDN);
        mpfr_sub(r37960, r37955, r37959, MPFR_RNDN);
        mpfr_sqrt(r37961, r37960, MPFR_RNDN);
        mpfr_neg(r37962, r37961, MPFR_RNDN);
        mpfr_add(r37963, r37947, r37962, MPFR_RNDN);
        ;
        mpfr_mul(r37965, r37964, r37951, MPFR_RNDN);
        mpfr_neg(r37966, r37965, MPFR_RNDN);
        mpfr_div(r37967, r37963, r37966, MPFR_RNDN);
        mpfr_div(r37968, r37957, r37947, MPFR_RNDN);
        ;
        mpfr_div(r37970, r37969, r37964, MPFR_RNDN);
        mpfr_mul(r37971, r37968, r37970, MPFR_RNDN);
        if (mpfr_get_si(r37954, MPFR_RNDN)) { mpfr_set(r37972, r37967, MPFR_RNDN); } else { mpfr_set(r37972, r37971, MPFR_RNDN); };
        if (mpfr_get_si(r37949, MPFR_RNDN)) { mpfr_set(r37973, r37952, MPFR_RNDN); } else { mpfr_set(r37973, r37972, MPFR_RNDN); };
        return mpfr_get_d(r37973, MPFR_RNDN);
}

static mpfr_t r37974, r37975, r37976, r37977, r37978, r37979, r37980, r37981, r37982, r37983, r37984, r37985, r37986, r37987, r37988, r37989, r37990, r37991, r37992, r37993, r37994, r37995, r37996, r37997, r37998, r37999, r38000;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r37974);
        mpfr_init_set_str(r37975, "-8.111805193496531e+152", 10, MPFR_RNDN);
        mpfr_init(r37976);
        mpfr_init(r37977);
        mpfr_init(r37978);
        mpfr_init(r37979);
        mpfr_init_set_str(r37980, "7.580412743766101e-138", 10, MPFR_RNDN);
        mpfr_init(r37981);
        mpfr_init(r37982);
        mpfr_init_set_str(r37983, "4", 10, MPFR_RNDN);
        mpfr_init(r37984);
        mpfr_init(r37985);
        mpfr_init(r37986);
        mpfr_init(r37987);
        mpfr_init(r37988);
        mpfr_init(r37989);
        mpfr_init(r37990);
        mpfr_init_set_str(r37991, "2", 10, MPFR_RNDN);
        mpfr_init(r37992);
        mpfr_init(r37993);
        mpfr_init(r37994);
        mpfr_init(r37995);
        mpfr_init_set_str(r37996, "-2", 10, MPFR_RNDN);
        mpfr_init(r37997);
        mpfr_init(r37998);
        mpfr_init(r37999);
        mpfr_init(r38000);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r37974, b, MPFR_RNDN);
        ;
        mpfr_set_si(r37976, mpfr_cmp(r37974, r37975) <= 0, MPFR_RNDN);
        mpfr_neg(r37977, r37974, MPFR_RNDN);
        mpfr_set_d(r37978, a, MPFR_RNDN);
        mpfr_div(r37979, r37977, r37978, MPFR_RNDN);
        ;
        mpfr_set_si(r37981, mpfr_cmp(r37974, r37980) <= 0, MPFR_RNDN);
        mpfr_mul(r37982, r37974, r37974, MPFR_RNDN);
        ;
        mpfr_set_d(r37984, c, MPFR_RNDN);
        mpfr_mul(r37985, r37983, r37984, MPFR_RNDN);
        mpfr_mul(r37986, r37985, r37978, MPFR_RNDN);
        mpfr_sub(r37987, r37982, r37986, MPFR_RNDN);
        mpfr_sqrt(r37988, r37987, MPFR_RNDN);
        mpfr_neg(r37989, r37988, MPFR_RNDN);
        mpfr_add(r37990, r37974, r37989, MPFR_RNDN);
        ;
        mpfr_mul(r37992, r37991, r37978, MPFR_RNDN);
        mpfr_neg(r37993, r37992, MPFR_RNDN);
        mpfr_div(r37994, r37990, r37993, MPFR_RNDN);
        mpfr_div(r37995, r37984, r37974, MPFR_RNDN);
        ;
        mpfr_div(r37997, r37996, r37991, MPFR_RNDN);
        mpfr_mul(r37998, r37995, r37997, MPFR_RNDN);
        if (mpfr_get_si(r37981, MPFR_RNDN)) { mpfr_set(r37999, r37994, MPFR_RNDN); } else { mpfr_set(r37999, r37998, MPFR_RNDN); };
        if (mpfr_get_si(r37976, MPFR_RNDN)) { mpfr_set(r38000, r37979, MPFR_RNDN); } else { mpfr_set(r38000, r37999, MPFR_RNDN); };
        return mpfr_get_d(r38000, MPFR_RNDN);
}

