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

char *name = "quadm (p42, negative)";

double f_if(float a, float b, float c) {
        float r37933 = b;
        float r37934 = -r37933;
        float r37935 = r37933 * r37933;
        float r37936 = 4;
        float r37937 = a;
        float r37938 = c;
        float r37939 = r37937 * r37938;
        float r37940 = r37936 * r37939;
        float r37941 = r37935 - r37940;
        float r37942 = sqrt(r37941);
        float r37943 = r37934 - r37942;
        float r37944 = 2;
        float r37945 = r37944 * r37937;
        float r37946 = r37943 / r37945;
        return r37946;
}

double f_id(double a, double b, double c) {
        double r37947 = b;
        double r37948 = -r37947;
        double r37949 = r37947 * r37947;
        double r37950 = 4;
        double r37951 = a;
        double r37952 = c;
        double r37953 = r37951 * r37952;
        double r37954 = r37950 * r37953;
        double r37955 = r37949 - r37954;
        double r37956 = sqrt(r37955);
        double r37957 = r37948 - r37956;
        double r37958 = 2;
        double r37959 = r37958 * r37951;
        double r37960 = r37957 / r37959;
        return r37960;
}


double f_of(float a, float b, float c) {
        float r37961 = b;
        float r37962 = -5.018034098196628e+28;
        bool r37963 = r37961 <= r37962;
        float r37964 = -r37961;
        float r37965 = r37964 + r37961;
        float r37966 = a;
        float r37967 = r37966 + r37966;
        float r37968 = r37965 / r37967;
        float r37969 = c;
        float r37970 = r37969 / r37961;
        float r37971 = r37968 - r37970;
        float r37972 = -1.992853954034314e-66;
        bool r37973 = r37961 <= r37972;
        float r37974 = 4;
        float r37975 = r37974 * r37969;
        float r37976 = r37975 * r37966;
        float r37977 = r37961 * r37961;
        float r37978 = r37977 - r37976;
        float r37979 = sqrt(r37978);
        float r37980 = r37979 + r37964;
        float r37981 = r37976 / r37980;
        float r37982 = 2;
        float r37983 = r37982 * r37966;
        float r37984 = r37981 / r37983;
        float r37985 = -5.3589749776329416e-108;
        bool r37986 = r37961 <= r37985;
        float r37987 = 1.7007616628281973e+81;
        bool r37988 = r37961 <= r37987;
        float r37989 = r37966 * r37969;
        float r37990 = r37974 * r37989;
        float r37991 = r37977 - r37990;
        float r37992 = sqrt(r37991);
        float r37993 = r37964 - r37992;
        float r37994 = r37993 / r37983;
        float r37995 = r37964 / r37966;
        float r37996 = r37988 ? r37994 : r37995;
        float r37997 = r37986 ? r37971 : r37996;
        float r37998 = r37973 ? r37984 : r37997;
        float r37999 = r37963 ? r37971 : r37998;
        return r37999;
}

double f_od(double a, double b, double c) {
        double r38000 = b;
        double r38001 = -5.018034098196628e+28;
        bool r38002 = r38000 <= r38001;
        double r38003 = -r38000;
        double r38004 = r38003 + r38000;
        double r38005 = a;
        double r38006 = r38005 + r38005;
        double r38007 = r38004 / r38006;
        double r38008 = c;
        double r38009 = r38008 / r38000;
        double r38010 = r38007 - r38009;
        double r38011 = -1.992853954034314e-66;
        bool r38012 = r38000 <= r38011;
        double r38013 = 4;
        double r38014 = r38013 * r38008;
        double r38015 = r38014 * r38005;
        double r38016 = r38000 * r38000;
        double r38017 = r38016 - r38015;
        double r38018 = sqrt(r38017);
        double r38019 = r38018 + r38003;
        double r38020 = r38015 / r38019;
        double r38021 = 2;
        double r38022 = r38021 * r38005;
        double r38023 = r38020 / r38022;
        double r38024 = -5.3589749776329416e-108;
        bool r38025 = r38000 <= r38024;
        double r38026 = 1.7007616628281973e+81;
        bool r38027 = r38000 <= r38026;
        double r38028 = r38005 * r38008;
        double r38029 = r38013 * r38028;
        double r38030 = r38016 - r38029;
        double r38031 = sqrt(r38030);
        double r38032 = r38003 - r38031;
        double r38033 = r38032 / r38022;
        double r38034 = r38003 / r38005;
        double r38035 = r38027 ? r38033 : r38034;
        double r38036 = r38025 ? r38010 : r38035;
        double r38037 = r38012 ? r38023 : r38036;
        double r38038 = r38002 ? r38010 : r38037;
        return r38038;
}

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 r38039, r38040, r38041, r38042, r38043, r38044, r38045, r38046, r38047, r38048, r38049, r38050, r38051, r38052;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2704);
        mpfr_init(r38039);
        mpfr_init(r38040);
        mpfr_init(r38041);
        mpfr_init_set_str(r38042, "4", 10, MPFR_RNDN);
        mpfr_init(r38043);
        mpfr_init(r38044);
        mpfr_init(r38045);
        mpfr_init(r38046);
        mpfr_init(r38047);
        mpfr_init(r38048);
        mpfr_init(r38049);
        mpfr_init_set_str(r38050, "2", 10, MPFR_RNDN);
        mpfr_init(r38051);
        mpfr_init(r38052);
}

double f_im(double a, double b, double c) {
        mpfr_set_d(r38039, b, MPFR_RNDN);
        mpfr_neg(r38040, r38039, MPFR_RNDN);
        mpfr_mul(r38041, r38039, r38039, MPFR_RNDN);
        ;
        mpfr_set_d(r38043, a, MPFR_RNDN);
        mpfr_set_d(r38044, c, MPFR_RNDN);
        mpfr_mul(r38045, r38043, r38044, MPFR_RNDN);
        mpfr_mul(r38046, r38042, r38045, MPFR_RNDN);
        mpfr_sub(r38047, r38041, r38046, MPFR_RNDN);
        mpfr_sqrt(r38048, r38047, MPFR_RNDN);
        mpfr_sub(r38049, r38040, r38048, MPFR_RNDN);
        ;
        mpfr_mul(r38051, r38050, r38043, MPFR_RNDN);
        mpfr_div(r38052, r38049, r38051, MPFR_RNDN);
        return mpfr_get_d(r38052, MPFR_RNDN);
}

static mpfr_t r38053, r38054, r38055, r38056, r38057, r38058, r38059, r38060, r38061, r38062, r38063, r38064, r38065, r38066, r38067, r38068, r38069, r38070, r38071, r38072, r38073, r38074, r38075, r38076, r38077, r38078, r38079, r38080, r38081, r38082, r38083, r38084, r38085, r38086, r38087, r38088, r38089, r38090, r38091;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r38053);
        mpfr_init_set_str(r38054, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r38055);
        mpfr_init(r38056);
        mpfr_init(r38057);
        mpfr_init(r38058);
        mpfr_init(r38059);
        mpfr_init(r38060);
        mpfr_init(r38061);
        mpfr_init(r38062);
        mpfr_init(r38063);
        mpfr_init_set_str(r38064, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r38065);
        mpfr_init_set_str(r38066, "4", 10, MPFR_RNDN);
        mpfr_init(r38067);
        mpfr_init(r38068);
        mpfr_init(r38069);
        mpfr_init(r38070);
        mpfr_init(r38071);
        mpfr_init(r38072);
        mpfr_init(r38073);
        mpfr_init_set_str(r38074, "2", 10, MPFR_RNDN);
        mpfr_init(r38075);
        mpfr_init(r38076);
        mpfr_init_set_str(r38077, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r38078);
        mpfr_init_set_str(r38079, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r38080);
        mpfr_init(r38081);
        mpfr_init(r38082);
        mpfr_init(r38083);
        mpfr_init(r38084);
        mpfr_init(r38085);
        mpfr_init(r38086);
        mpfr_init(r38087);
        mpfr_init(r38088);
        mpfr_init(r38089);
        mpfr_init(r38090);
        mpfr_init(r38091);
}

double f_fm(double a, double b, double c) {
        mpfr_set_d(r38053, b, MPFR_RNDN);
        ;
        mpfr_set_si(r38055, mpfr_cmp(r38053, r38054) <= 0, MPFR_RNDN);
        mpfr_neg(r38056, r38053, MPFR_RNDN);
        mpfr_add(r38057, r38056, r38053, MPFR_RNDN);
        mpfr_set_d(r38058, a, MPFR_RNDN);
        mpfr_add(r38059, r38058, r38058, MPFR_RNDN);
        mpfr_div(r38060, r38057, r38059, MPFR_RNDN);
        mpfr_set_d(r38061, c, MPFR_RNDN);
        mpfr_div(r38062, r38061, r38053, MPFR_RNDN);
        mpfr_sub(r38063, r38060, r38062, MPFR_RNDN);
        ;
        mpfr_set_si(r38065, mpfr_cmp(r38053, r38064) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r38067, r38066, r38061, MPFR_RNDN);
        mpfr_mul(r38068, r38067, r38058, MPFR_RNDN);
        mpfr_mul(r38069, r38053, r38053, MPFR_RNDN);
        mpfr_sub(r38070, r38069, r38068, MPFR_RNDN);
        mpfr_sqrt(r38071, r38070, MPFR_RNDN);
        mpfr_add(r38072, r38071, r38056, MPFR_RNDN);
        mpfr_div(r38073, r38068, r38072, MPFR_RNDN);
        ;
        mpfr_mul(r38075, r38074, r38058, MPFR_RNDN);
        mpfr_div(r38076, r38073, r38075, MPFR_RNDN);
        ;
        mpfr_set_si(r38078, mpfr_cmp(r38053, r38077) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r38080, mpfr_cmp(r38053, r38079) <= 0, MPFR_RNDN);
        mpfr_mul(r38081, r38058, r38061, MPFR_RNDN);
        mpfr_mul(r38082, r38066, r38081, MPFR_RNDN);
        mpfr_sub(r38083, r38069, r38082, MPFR_RNDN);
        mpfr_sqrt(r38084, r38083, MPFR_RNDN);
        mpfr_sub(r38085, r38056, r38084, MPFR_RNDN);
        mpfr_div(r38086, r38085, r38075, MPFR_RNDN);
        mpfr_div(r38087, r38056, r38058, MPFR_RNDN);
        if (mpfr_get_si(r38080, MPFR_RNDN)) { mpfr_set(r38088, r38086, MPFR_RNDN); } else { mpfr_set(r38088, r38087, MPFR_RNDN); };
        if (mpfr_get_si(r38078, MPFR_RNDN)) { mpfr_set(r38089, r38063, MPFR_RNDN); } else { mpfr_set(r38089, r38088, MPFR_RNDN); };
        if (mpfr_get_si(r38065, MPFR_RNDN)) { mpfr_set(r38090, r38076, MPFR_RNDN); } else { mpfr_set(r38090, r38089, MPFR_RNDN); };
        if (mpfr_get_si(r38055, MPFR_RNDN)) { mpfr_set(r38091, r38063, MPFR_RNDN); } else { mpfr_set(r38091, r38090, MPFR_RNDN); };
        return mpfr_get_d(r38091, MPFR_RNDN);
}

static mpfr_t r38092, r38093, r38094, r38095, r38096, r38097, r38098, r38099, r38100, r38101, r38102, r38103, r38104, r38105, r38106, r38107, r38108, r38109, r38110, r38111, r38112, r38113, r38114, r38115, r38116, r38117, r38118, r38119, r38120, r38121, r38122, r38123, r38124, r38125, r38126, r38127, r38128, r38129, r38130;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2704);
        mpfr_init(r38092);
        mpfr_init_set_str(r38093, "-5.018034098196628e+28", 10, MPFR_RNDN);
        mpfr_init(r38094);
        mpfr_init(r38095);
        mpfr_init(r38096);
        mpfr_init(r38097);
        mpfr_init(r38098);
        mpfr_init(r38099);
        mpfr_init(r38100);
        mpfr_init(r38101);
        mpfr_init(r38102);
        mpfr_init_set_str(r38103, "-1.992853954034314e-66", 10, MPFR_RNDN);
        mpfr_init(r38104);
        mpfr_init_set_str(r38105, "4", 10, MPFR_RNDN);
        mpfr_init(r38106);
        mpfr_init(r38107);
        mpfr_init(r38108);
        mpfr_init(r38109);
        mpfr_init(r38110);
        mpfr_init(r38111);
        mpfr_init(r38112);
        mpfr_init_set_str(r38113, "2", 10, MPFR_RNDN);
        mpfr_init(r38114);
        mpfr_init(r38115);
        mpfr_init_set_str(r38116, "-5.3589749776329416e-108", 10, MPFR_RNDN);
        mpfr_init(r38117);
        mpfr_init_set_str(r38118, "1.7007616628281973e+81", 10, MPFR_RNDN);
        mpfr_init(r38119);
        mpfr_init(r38120);
        mpfr_init(r38121);
        mpfr_init(r38122);
        mpfr_init(r38123);
        mpfr_init(r38124);
        mpfr_init(r38125);
        mpfr_init(r38126);
        mpfr_init(r38127);
        mpfr_init(r38128);
        mpfr_init(r38129);
        mpfr_init(r38130);
}

double f_dm(double a, double b, double c) {
        mpfr_set_d(r38092, b, MPFR_RNDN);
        ;
        mpfr_set_si(r38094, mpfr_cmp(r38092, r38093) <= 0, MPFR_RNDN);
        mpfr_neg(r38095, r38092, MPFR_RNDN);
        mpfr_add(r38096, r38095, r38092, MPFR_RNDN);
        mpfr_set_d(r38097, a, MPFR_RNDN);
        mpfr_add(r38098, r38097, r38097, MPFR_RNDN);
        mpfr_div(r38099, r38096, r38098, MPFR_RNDN);
        mpfr_set_d(r38100, c, MPFR_RNDN);
        mpfr_div(r38101, r38100, r38092, MPFR_RNDN);
        mpfr_sub(r38102, r38099, r38101, MPFR_RNDN);
        ;
        mpfr_set_si(r38104, mpfr_cmp(r38092, r38103) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r38106, r38105, r38100, MPFR_RNDN);
        mpfr_mul(r38107, r38106, r38097, MPFR_RNDN);
        mpfr_mul(r38108, r38092, r38092, MPFR_RNDN);
        mpfr_sub(r38109, r38108, r38107, MPFR_RNDN);
        mpfr_sqrt(r38110, r38109, MPFR_RNDN);
        mpfr_add(r38111, r38110, r38095, MPFR_RNDN);
        mpfr_div(r38112, r38107, r38111, MPFR_RNDN);
        ;
        mpfr_mul(r38114, r38113, r38097, MPFR_RNDN);
        mpfr_div(r38115, r38112, r38114, MPFR_RNDN);
        ;
        mpfr_set_si(r38117, mpfr_cmp(r38092, r38116) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r38119, mpfr_cmp(r38092, r38118) <= 0, MPFR_RNDN);
        mpfr_mul(r38120, r38097, r38100, MPFR_RNDN);
        mpfr_mul(r38121, r38105, r38120, MPFR_RNDN);
        mpfr_sub(r38122, r38108, r38121, MPFR_RNDN);
        mpfr_sqrt(r38123, r38122, MPFR_RNDN);
        mpfr_sub(r38124, r38095, r38123, MPFR_RNDN);
        mpfr_div(r38125, r38124, r38114, MPFR_RNDN);
        mpfr_div(r38126, r38095, r38097, MPFR_RNDN);
        if (mpfr_get_si(r38119, MPFR_RNDN)) { mpfr_set(r38127, r38125, MPFR_RNDN); } else { mpfr_set(r38127, r38126, MPFR_RNDN); };
        if (mpfr_get_si(r38117, MPFR_RNDN)) { mpfr_set(r38128, r38102, MPFR_RNDN); } else { mpfr_set(r38128, r38127, MPFR_RNDN); };
        if (mpfr_get_si(r38104, MPFR_RNDN)) { mpfr_set(r38129, r38115, MPFR_RNDN); } else { mpfr_set(r38129, r38128, MPFR_RNDN); };
        if (mpfr_get_si(r38094, MPFR_RNDN)) { mpfr_set(r38130, r38102, MPFR_RNDN); } else { mpfr_set(r38130, r38129, MPFR_RNDN); };
        return mpfr_get_d(r38130, MPFR_RNDN);
}

