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

char *name = "quad2p (problem 3.2.1, positive)";

double f_if(float a, float b_2, float c) {
        float r7946 = b_2;
        float r7947 = -r7946;
        float r7948 = r7946 * r7946;
        float r7949 = a;
        float r7950 = c;
        float r7951 = r7949 * r7950;
        float r7952 = r7948 - r7951;
        float r7953 = sqrt(r7952);
        float r7954 = r7947 + r7953;
        float r7955 = r7954 / r7949;
        return r7955;
}

double f_id(double a, double b_2, double c) {
        double r7956 = b_2;
        double r7957 = -r7956;
        double r7958 = r7956 * r7956;
        double r7959 = a;
        double r7960 = c;
        double r7961 = r7959 * r7960;
        double r7962 = r7958 - r7961;
        double r7963 = sqrt(r7962);
        double r7964 = r7957 + r7963;
        double r7965 = r7964 / r7959;
        return r7965;
}


double f_of(float a, float b_2, float c) {
        float r7966 = 1/2;
        float r7967 = b_2;
        float r7968 = r7966 / r7967;
        float r7969 = -9.530429739568814e-89;
        bool r7970 = r7968 <= r7969;
        float r7971 = -r7967;
        float r7972 = r7967 * r7967;
        float r7973 = a;
        float r7974 = c;
        float r7975 = r7973 * r7974;
        float r7976 = r7972 - r7975;
        float r7977 = sqrt(r7976);
        float r7978 = r7971 + r7977;
        float r7979 = 1;
        float r7980 = r7979 / r7973;
        float r7981 = r7978 * r7980;
        float r7982 = 8.901490906505912e-308;
        bool r7983 = r7968 <= r7982;
        float r7984 = -2;
        float r7985 = r7967 / r7973;
        float r7986 = r7984 * r7985;
        float r7987 = 2.0523929251058482e+32;
        bool r7988 = r7968 <= r7987;
        float r7989 = -1/2;
        float r7990 = r7967 / r7989;
        float r7991 = r7974 / r7990;
        float r7992 = r7988 ? r7991 : r7981;
        float r7993 = r7983 ? r7986 : r7992;
        float r7994 = r7970 ? r7981 : r7993;
        return r7994;
}

double f_od(double a, double b_2, double c) {
        double r7995 = 1/2;
        double r7996 = b_2;
        double r7997 = r7995 / r7996;
        double r7998 = -9.530429739568814e-89;
        bool r7999 = r7997 <= r7998;
        double r8000 = -r7996;
        double r8001 = r7996 * r7996;
        double r8002 = a;
        double r8003 = c;
        double r8004 = r8002 * r8003;
        double r8005 = r8001 - r8004;
        double r8006 = sqrt(r8005);
        double r8007 = r8000 + r8006;
        double r8008 = 1;
        double r8009 = r8008 / r8002;
        double r8010 = r8007 * r8009;
        double r8011 = 8.901490906505912e-308;
        bool r8012 = r7997 <= r8011;
        double r8013 = -2;
        double r8014 = r7996 / r8002;
        double r8015 = r8013 * r8014;
        double r8016 = 2.0523929251058482e+32;
        bool r8017 = r7997 <= r8016;
        double r8018 = -1/2;
        double r8019 = r7996 / r8018;
        double r8020 = r8003 / r8019;
        double r8021 = r8017 ? r8020 : r8010;
        double r8022 = r8012 ? r8015 : r8021;
        double r8023 = r7999 ? r8010 : r8022;
        return r8023;
}

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 r8024, r8025, r8026, r8027, r8028, r8029, r8030, r8031, r8032, r8033;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8024);
        mpfr_init(r8025);
        mpfr_init(r8026);
        mpfr_init(r8027);
        mpfr_init(r8028);
        mpfr_init(r8029);
        mpfr_init(r8030);
        mpfr_init(r8031);
        mpfr_init(r8032);
        mpfr_init(r8033);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8024, b_2, MPFR_RNDN);
        mpfr_neg(r8025, r8024, MPFR_RNDN);
        mpfr_mul(r8026, r8024, r8024, MPFR_RNDN);
        mpfr_set_d(r8027, a, MPFR_RNDN);
        mpfr_set_d(r8028, c, MPFR_RNDN);
        mpfr_mul(r8029, r8027, r8028, MPFR_RNDN);
        mpfr_sub(r8030, r8026, r8029, MPFR_RNDN);
        mpfr_sqrt(r8031, r8030, MPFR_RNDN);
        mpfr_add(r8032, r8025, r8031, MPFR_RNDN);
        mpfr_div(r8033, r8032, r8027, MPFR_RNDN);
        return mpfr_get_d(r8033, MPFR_RNDN);
}

static mpfr_t r8034, r8035, r8036, r8037, r8038, r8039, r8040, r8041, r8042, r8043, r8044, r8045, r8046, r8047, r8048, r8049, r8050, r8051, r8052, r8053, r8054, r8055, r8056, r8057, r8058, r8059, r8060, r8061, r8062;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r8034, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8035);
        mpfr_init(r8036);
        mpfr_init_set_str(r8037, "-9.530429739568814e-89", 10, MPFR_RNDN);
        mpfr_init(r8038);
        mpfr_init(r8039);
        mpfr_init(r8040);
        mpfr_init(r8041);
        mpfr_init(r8042);
        mpfr_init(r8043);
        mpfr_init(r8044);
        mpfr_init(r8045);
        mpfr_init(r8046);
        mpfr_init_set_str(r8047, "1", 10, MPFR_RNDN);
        mpfr_init(r8048);
        mpfr_init(r8049);
        mpfr_init_set_str(r8050, "8.901490906505912e-308", 10, MPFR_RNDN);
        mpfr_init(r8051);
        mpfr_init_set_str(r8052, "-2", 10, MPFR_RNDN);
        mpfr_init(r8053);
        mpfr_init(r8054);
        mpfr_init_set_str(r8055, "2.0523929251058482e+32", 10, MPFR_RNDN);
        mpfr_init(r8056);
        mpfr_init_set_str(r8057, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8058);
        mpfr_init(r8059);
        mpfr_init(r8060);
        mpfr_init(r8061);
        mpfr_init(r8062);
}

double f_fm(double a, double b_2, double c) {
        ;
        mpfr_set_d(r8035, b_2, MPFR_RNDN);
        mpfr_div(r8036, r8034, r8035, MPFR_RNDN);
        ;
        mpfr_set_si(r8038, mpfr_cmp(r8036, r8037) <= 0, MPFR_RNDN);
        mpfr_neg(r8039, r8035, MPFR_RNDN);
        mpfr_mul(r8040, r8035, r8035, MPFR_RNDN);
        mpfr_set_d(r8041, a, MPFR_RNDN);
        mpfr_set_d(r8042, c, MPFR_RNDN);
        mpfr_mul(r8043, r8041, r8042, MPFR_RNDN);
        mpfr_sub(r8044, r8040, r8043, MPFR_RNDN);
        mpfr_sqrt(r8045, r8044, MPFR_RNDN);
        mpfr_add(r8046, r8039, r8045, MPFR_RNDN);
        ;
        mpfr_div(r8048, r8047, r8041, MPFR_RNDN);
        mpfr_mul(r8049, r8046, r8048, MPFR_RNDN);
        ;
        mpfr_set_si(r8051, mpfr_cmp(r8036, r8050) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8053, r8035, r8041, MPFR_RNDN);
        mpfr_mul(r8054, r8052, r8053, MPFR_RNDN);
        ;
        mpfr_set_si(r8056, mpfr_cmp(r8036, r8055) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8058, r8035, r8057, MPFR_RNDN);
        mpfr_div(r8059, r8042, r8058, MPFR_RNDN);
        if (mpfr_get_si(r8056, MPFR_RNDN)) { mpfr_set(r8060, r8059, MPFR_RNDN); } else { mpfr_set(r8060, r8049, MPFR_RNDN); };
        if (mpfr_get_si(r8051, MPFR_RNDN)) { mpfr_set(r8061, r8054, MPFR_RNDN); } else { mpfr_set(r8061, r8060, MPFR_RNDN); };
        if (mpfr_get_si(r8038, MPFR_RNDN)) { mpfr_set(r8062, r8049, MPFR_RNDN); } else { mpfr_set(r8062, r8061, MPFR_RNDN); };
        return mpfr_get_d(r8062, MPFR_RNDN);
}

static mpfr_t r8063, r8064, r8065, r8066, r8067, r8068, r8069, r8070, r8071, r8072, r8073, r8074, r8075, r8076, r8077, r8078, r8079, r8080, r8081, r8082, r8083, r8084, r8085, r8086, r8087, r8088, r8089, r8090, r8091;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r8063, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8064);
        mpfr_init(r8065);
        mpfr_init_set_str(r8066, "-9.530429739568814e-89", 10, MPFR_RNDN);
        mpfr_init(r8067);
        mpfr_init(r8068);
        mpfr_init(r8069);
        mpfr_init(r8070);
        mpfr_init(r8071);
        mpfr_init(r8072);
        mpfr_init(r8073);
        mpfr_init(r8074);
        mpfr_init(r8075);
        mpfr_init_set_str(r8076, "1", 10, MPFR_RNDN);
        mpfr_init(r8077);
        mpfr_init(r8078);
        mpfr_init_set_str(r8079, "8.901490906505912e-308", 10, MPFR_RNDN);
        mpfr_init(r8080);
        mpfr_init_set_str(r8081, "-2", 10, MPFR_RNDN);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init_set_str(r8084, "2.0523929251058482e+32", 10, MPFR_RNDN);
        mpfr_init(r8085);
        mpfr_init_set_str(r8086, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8087);
        mpfr_init(r8088);
        mpfr_init(r8089);
        mpfr_init(r8090);
        mpfr_init(r8091);
}

double f_dm(double a, double b_2, double c) {
        ;
        mpfr_set_d(r8064, b_2, MPFR_RNDN);
        mpfr_div(r8065, r8063, r8064, MPFR_RNDN);
        ;
        mpfr_set_si(r8067, mpfr_cmp(r8065, r8066) <= 0, MPFR_RNDN);
        mpfr_neg(r8068, r8064, MPFR_RNDN);
        mpfr_mul(r8069, r8064, r8064, MPFR_RNDN);
        mpfr_set_d(r8070, a, MPFR_RNDN);
        mpfr_set_d(r8071, c, MPFR_RNDN);
        mpfr_mul(r8072, r8070, r8071, MPFR_RNDN);
        mpfr_sub(r8073, r8069, r8072, MPFR_RNDN);
        mpfr_sqrt(r8074, r8073, MPFR_RNDN);
        mpfr_add(r8075, r8068, r8074, MPFR_RNDN);
        ;
        mpfr_div(r8077, r8076, r8070, MPFR_RNDN);
        mpfr_mul(r8078, r8075, r8077, MPFR_RNDN);
        ;
        mpfr_set_si(r8080, mpfr_cmp(r8065, r8079) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8082, r8064, r8070, MPFR_RNDN);
        mpfr_mul(r8083, r8081, r8082, MPFR_RNDN);
        ;
        mpfr_set_si(r8085, mpfr_cmp(r8065, r8084) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r8087, r8064, r8086, MPFR_RNDN);
        mpfr_div(r8088, r8071, r8087, MPFR_RNDN);
        if (mpfr_get_si(r8085, MPFR_RNDN)) { mpfr_set(r8089, r8088, MPFR_RNDN); } else { mpfr_set(r8089, r8078, MPFR_RNDN); };
        if (mpfr_get_si(r8080, MPFR_RNDN)) { mpfr_set(r8090, r8083, MPFR_RNDN); } else { mpfr_set(r8090, r8089, MPFR_RNDN); };
        if (mpfr_get_si(r8067, MPFR_RNDN)) { mpfr_set(r8091, r8078, MPFR_RNDN); } else { mpfr_set(r8091, r8090, MPFR_RNDN); };
        return mpfr_get_d(r8091, MPFR_RNDN);
}

