#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 r7954 = b_2;
        float r7955 = -r7954;
        float r7956 = r7954 * r7954;
        float r7957 = a;
        float r7958 = c;
        float r7959 = r7957 * r7958;
        float r7960 = r7956 - r7959;
        float r7961 = sqrt(r7960);
        float r7962 = r7955 + r7961;
        float r7963 = r7962 / r7957;
        return r7963;
}

double f_id(double a, double b_2, double c) {
        double r7964 = b_2;
        double r7965 = -r7964;
        double r7966 = r7964 * r7964;
        double r7967 = a;
        double r7968 = c;
        double r7969 = r7967 * r7968;
        double r7970 = r7966 - r7969;
        double r7971 = sqrt(r7970);
        double r7972 = r7965 + r7971;
        double r7973 = r7972 / r7967;
        return r7973;
}


double f_of(float a, float b_2, float c) {
        float r7974 = -1/2;
        float r7975 = b_2;
        float r7976 = r7974 / r7975;
        float r7977 = -1.220043164982416e+37;
        bool r7978 = r7976 <= r7977;
        float r7979 = -r7975;
        float r7980 = r7975 * r7975;
        float r7981 = a;
        float r7982 = c;
        float r7983 = r7981 * r7982;
        float r7984 = r7980 - r7983;
        float r7985 = sqrt(r7984);
        float r7986 = r7979 + r7985;
        float r7987 = 1;
        float r7988 = r7987 / r7981;
        float r7989 = r7986 * r7988;
        float r7990 = -8.129679970553972e-307;
        bool r7991 = r7976 <= r7990;
        float r7992 = r7975 / r7974;
        float r7993 = r7982 / r7992;
        float r7994 = 1.2469313830977722e-93;
        bool r7995 = r7976 <= r7994;
        float r7996 = -2;
        float r7997 = r7975 / r7981;
        float r7998 = r7996 * r7997;
        float r7999 = r7995 ? r7998 : r7989;
        float r8000 = r7991 ? r7993 : r7999;
        float r8001 = r7978 ? r7989 : r8000;
        return r8001;
}

double f_od(double a, double b_2, double c) {
        double r8002 = -1/2;
        double r8003 = b_2;
        double r8004 = r8002 / r8003;
        double r8005 = -1.220043164982416e+37;
        bool r8006 = r8004 <= r8005;
        double r8007 = -r8003;
        double r8008 = r8003 * r8003;
        double r8009 = a;
        double r8010 = c;
        double r8011 = r8009 * r8010;
        double r8012 = r8008 - r8011;
        double r8013 = sqrt(r8012);
        double r8014 = r8007 + r8013;
        double r8015 = 1;
        double r8016 = r8015 / r8009;
        double r8017 = r8014 * r8016;
        double r8018 = -8.129679970553972e-307;
        bool r8019 = r8004 <= r8018;
        double r8020 = r8003 / r8002;
        double r8021 = r8010 / r8020;
        double r8022 = 1.2469313830977722e-93;
        bool r8023 = r8004 <= r8022;
        double r8024 = -2;
        double r8025 = r8003 / r8009;
        double r8026 = r8024 * r8025;
        double r8027 = r8023 ? r8026 : r8017;
        double r8028 = r8019 ? r8021 : r8027;
        double r8029 = r8006 ? r8017 : r8028;
        return r8029;
}

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 r8030, r8031, r8032, r8033, r8034, r8035, r8036, r8037, r8038, r8039;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8030);
        mpfr_init(r8031);
        mpfr_init(r8032);
        mpfr_init(r8033);
        mpfr_init(r8034);
        mpfr_init(r8035);
        mpfr_init(r8036);
        mpfr_init(r8037);
        mpfr_init(r8038);
        mpfr_init(r8039);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8030, b_2, MPFR_RNDN);
        mpfr_neg(r8031, r8030, MPFR_RNDN);
        mpfr_mul(r8032, r8030, r8030, MPFR_RNDN);
        mpfr_set_d(r8033, a, MPFR_RNDN);
        mpfr_set_d(r8034, c, MPFR_RNDN);
        mpfr_mul(r8035, r8033, r8034, MPFR_RNDN);
        mpfr_sub(r8036, r8032, r8035, MPFR_RNDN);
        mpfr_sqrt(r8037, r8036, MPFR_RNDN);
        mpfr_add(r8038, r8031, r8037, MPFR_RNDN);
        mpfr_div(r8039, r8038, r8033, MPFR_RNDN);
        return mpfr_get_d(r8039, MPFR_RNDN);
}

static mpfr_t r8040, r8041, r8042, r8043, r8044, r8045, r8046, r8047, r8048, r8049, r8050, r8051, r8052, r8053, r8054, r8055, r8056, r8057, r8058, r8059, r8060, r8061, r8062, r8063, r8064, r8065, r8066, r8067;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r8040, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8041);
        mpfr_init(r8042);
        mpfr_init_set_str(r8043, "-1.220043164982416e+37", 10, MPFR_RNDN);
        mpfr_init(r8044);
        mpfr_init(r8045);
        mpfr_init(r8046);
        mpfr_init(r8047);
        mpfr_init(r8048);
        mpfr_init(r8049);
        mpfr_init(r8050);
        mpfr_init(r8051);
        mpfr_init(r8052);
        mpfr_init_set_str(r8053, "1", 10, MPFR_RNDN);
        mpfr_init(r8054);
        mpfr_init(r8055);
        mpfr_init_set_str(r8056, "-8.129679970553972e-307", 10, MPFR_RNDN);
        mpfr_init(r8057);
        mpfr_init(r8058);
        mpfr_init(r8059);
        mpfr_init_set_str(r8060, "1.2469313830977722e-93", 10, MPFR_RNDN);
        mpfr_init(r8061);
        mpfr_init_set_str(r8062, "-2", 10, MPFR_RNDN);
        mpfr_init(r8063);
        mpfr_init(r8064);
        mpfr_init(r8065);
        mpfr_init(r8066);
        mpfr_init(r8067);
}

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

static mpfr_t r8068, r8069, r8070, r8071, r8072, r8073, r8074, r8075, r8076, r8077, r8078, r8079, r8080, r8081, r8082, r8083, r8084, r8085, r8086, r8087, r8088, r8089, r8090, r8091, r8092, r8093, r8094, r8095;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init_set_str(r8068, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8069);
        mpfr_init(r8070);
        mpfr_init_set_str(r8071, "-1.220043164982416e+37", 10, MPFR_RNDN);
        mpfr_init(r8072);
        mpfr_init(r8073);
        mpfr_init(r8074);
        mpfr_init(r8075);
        mpfr_init(r8076);
        mpfr_init(r8077);
        mpfr_init(r8078);
        mpfr_init(r8079);
        mpfr_init(r8080);
        mpfr_init_set_str(r8081, "1", 10, MPFR_RNDN);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init_set_str(r8084, "-8.129679970553972e-307", 10, MPFR_RNDN);
        mpfr_init(r8085);
        mpfr_init(r8086);
        mpfr_init(r8087);
        mpfr_init_set_str(r8088, "1.2469313830977722e-93", 10, MPFR_RNDN);
        mpfr_init(r8089);
        mpfr_init_set_str(r8090, "-2", 10, MPFR_RNDN);
        mpfr_init(r8091);
        mpfr_init(r8092);
        mpfr_init(r8093);
        mpfr_init(r8094);
        mpfr_init(r8095);
}

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

