#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 = b_2;
        float r7975 = -1/2;
        float r7976 = r7974 / r7975;
        float r7977 = -1.5102327952834505e+120;
        bool r7978 = r7976 <= r7977;
        float r7979 = c;
        float r7980 = r7979 / r7976;
        float r7981 = -1.1596077636613173e-262;
        bool r7982 = r7976 <= r7981;
        float r7983 = a;
        float r7984 = r7983 * r7979;
        float r7985 = -r7974;
        float r7986 = r7974 * r7974;
        float r7987 = r7986 - r7984;
        float r7988 = sqrt(r7987);
        float r7989 = r7985 - r7988;
        float r7990 = r7984 / r7989;
        float r7991 = r7990 / r7983;
        float r7992 = 6.185182159427462e+103;
        bool r7993 = r7976 <= r7992;
        float r7994 = 1;
        float r7995 = r7979 * r7983;
        float r7996 = r7986 - r7995;
        float r7997 = sqrt(r7996);
        float r7998 = r7997 - r7974;
        float r7999 = r7983 / r7998;
        float r8000 = r7994 / r7999;
        float r8001 = 1/2;
        float r8002 = r8001 * r7979;
        float r8003 = r8002 / r7974;
        float r8004 = 2;
        float r8005 = r7974 / r7983;
        float r8006 = r8004 * r8005;
        float r8007 = r8003 - r8006;
        float r8008 = r7993 ? r8000 : r8007;
        float r8009 = r7982 ? r7991 : r8008;
        float r8010 = r7978 ? r7980 : r8009;
        return r8010;
}

double f_od(double a, double b_2, double c) {
        double r8011 = b_2;
        double r8012 = -1/2;
        double r8013 = r8011 / r8012;
        double r8014 = -1.5102327952834505e+120;
        bool r8015 = r8013 <= r8014;
        double r8016 = c;
        double r8017 = r8016 / r8013;
        double r8018 = -1.1596077636613173e-262;
        bool r8019 = r8013 <= r8018;
        double r8020 = a;
        double r8021 = r8020 * r8016;
        double r8022 = -r8011;
        double r8023 = r8011 * r8011;
        double r8024 = r8023 - r8021;
        double r8025 = sqrt(r8024);
        double r8026 = r8022 - r8025;
        double r8027 = r8021 / r8026;
        double r8028 = r8027 / r8020;
        double r8029 = 6.185182159427462e+103;
        bool r8030 = r8013 <= r8029;
        double r8031 = 1;
        double r8032 = r8016 * r8020;
        double r8033 = r8023 - r8032;
        double r8034 = sqrt(r8033);
        double r8035 = r8034 - r8011;
        double r8036 = r8020 / r8035;
        double r8037 = r8031 / r8036;
        double r8038 = 1/2;
        double r8039 = r8038 * r8016;
        double r8040 = r8039 / r8011;
        double r8041 = 2;
        double r8042 = r8011 / r8020;
        double r8043 = r8041 * r8042;
        double r8044 = r8040 - r8043;
        double r8045 = r8030 ? r8037 : r8044;
        double r8046 = r8019 ? r8028 : r8045;
        double r8047 = r8015 ? r8017 : r8046;
        return r8047;
}

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 r8048, r8049, r8050, r8051, r8052, r8053, r8054, r8055, r8056, r8057;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8048);
        mpfr_init(r8049);
        mpfr_init(r8050);
        mpfr_init(r8051);
        mpfr_init(r8052);
        mpfr_init(r8053);
        mpfr_init(r8054);
        mpfr_init(r8055);
        mpfr_init(r8056);
        mpfr_init(r8057);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8048, b_2, MPFR_RNDN);
        mpfr_neg(r8049, r8048, MPFR_RNDN);
        mpfr_mul(r8050, r8048, r8048, MPFR_RNDN);
        mpfr_set_d(r8051, a, MPFR_RNDN);
        mpfr_set_d(r8052, c, MPFR_RNDN);
        mpfr_mul(r8053, r8051, r8052, MPFR_RNDN);
        mpfr_sub(r8054, r8050, r8053, MPFR_RNDN);
        mpfr_sqrt(r8055, r8054, MPFR_RNDN);
        mpfr_add(r8056, r8049, r8055, MPFR_RNDN);
        mpfr_div(r8057, r8056, r8051, MPFR_RNDN);
        return mpfr_get_d(r8057, MPFR_RNDN);
}

static mpfr_t r8058, r8059, r8060, r8061, r8062, 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, r8092, r8093, r8094;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8058);
        mpfr_init_set_str(r8059, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8060);
        mpfr_init_set_str(r8061, "-1.5102327952834505e+120", 10, MPFR_RNDN);
        mpfr_init(r8062);
        mpfr_init(r8063);
        mpfr_init(r8064);
        mpfr_init_set_str(r8065, "-1.1596077636613173e-262", 10, MPFR_RNDN);
        mpfr_init(r8066);
        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, "6.185182159427462e+103", 10, MPFR_RNDN);
        mpfr_init(r8077);
        mpfr_init_set_str(r8078, "1", 10, MPFR_RNDN);
        mpfr_init(r8079);
        mpfr_init(r8080);
        mpfr_init(r8081);
        mpfr_init(r8082);
        mpfr_init(r8083);
        mpfr_init(r8084);
        mpfr_init_set_str(r8085, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8086);
        mpfr_init(r8087);
        mpfr_init_set_str(r8088, "2", 10, MPFR_RNDN);
        mpfr_init(r8089);
        mpfr_init(r8090);
        mpfr_init(r8091);
        mpfr_init(r8092);
        mpfr_init(r8093);
        mpfr_init(r8094);
}

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

static mpfr_t r8095, r8096, r8097, r8098, r8099, r8100, r8101, r8102, r8103, r8104, r8105, r8106, r8107, r8108, r8109, r8110, r8111, r8112, r8113, r8114, r8115, r8116, r8117, r8118, r8119, r8120, r8121, r8122, r8123, r8124, r8125, r8126, r8127, r8128, r8129, r8130, r8131;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8095);
        mpfr_init_set_str(r8096, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8097);
        mpfr_init_set_str(r8098, "-1.5102327952834505e+120", 10, MPFR_RNDN);
        mpfr_init(r8099);
        mpfr_init(r8100);
        mpfr_init(r8101);
        mpfr_init_set_str(r8102, "-1.1596077636613173e-262", 10, MPFR_RNDN);
        mpfr_init(r8103);
        mpfr_init(r8104);
        mpfr_init(r8105);
        mpfr_init(r8106);
        mpfr_init(r8107);
        mpfr_init(r8108);
        mpfr_init(r8109);
        mpfr_init(r8110);
        mpfr_init(r8111);
        mpfr_init(r8112);
        mpfr_init_set_str(r8113, "6.185182159427462e+103", 10, MPFR_RNDN);
        mpfr_init(r8114);
        mpfr_init_set_str(r8115, "1", 10, MPFR_RNDN);
        mpfr_init(r8116);
        mpfr_init(r8117);
        mpfr_init(r8118);
        mpfr_init(r8119);
        mpfr_init(r8120);
        mpfr_init(r8121);
        mpfr_init_set_str(r8122, "1/2", 10, MPFR_RNDN);
        mpfr_init(r8123);
        mpfr_init(r8124);
        mpfr_init_set_str(r8125, "2", 10, MPFR_RNDN);
        mpfr_init(r8126);
        mpfr_init(r8127);
        mpfr_init(r8128);
        mpfr_init(r8129);
        mpfr_init(r8130);
        mpfr_init(r8131);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8095, b_2, MPFR_RNDN);
        ;
        mpfr_div(r8097, r8095, r8096, MPFR_RNDN);
        ;
        mpfr_set_si(r8099, mpfr_cmp(r8097, r8098) <= 0, MPFR_RNDN);
        mpfr_set_d(r8100, c, MPFR_RNDN);
        mpfr_div(r8101, r8100, r8097, MPFR_RNDN);
        ;
        mpfr_set_si(r8103, mpfr_cmp(r8097, r8102) <= 0, MPFR_RNDN);
        mpfr_set_d(r8104, a, MPFR_RNDN);
        mpfr_mul(r8105, r8104, r8100, MPFR_RNDN);
        mpfr_neg(r8106, r8095, MPFR_RNDN);
        mpfr_mul(r8107, r8095, r8095, MPFR_RNDN);
        mpfr_sub(r8108, r8107, r8105, MPFR_RNDN);
        mpfr_sqrt(r8109, r8108, MPFR_RNDN);
        mpfr_sub(r8110, r8106, r8109, MPFR_RNDN);
        mpfr_div(r8111, r8105, r8110, MPFR_RNDN);
        mpfr_div(r8112, r8111, r8104, MPFR_RNDN);
        ;
        mpfr_set_si(r8114, mpfr_cmp(r8097, r8113) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8116, r8100, r8104, MPFR_RNDN);
        mpfr_sub(r8117, r8107, r8116, MPFR_RNDN);
        mpfr_sqrt(r8118, r8117, MPFR_RNDN);
        mpfr_sub(r8119, r8118, r8095, MPFR_RNDN);
        mpfr_div(r8120, r8104, r8119, MPFR_RNDN);
        mpfr_div(r8121, r8115, r8120, MPFR_RNDN);
        ;
        mpfr_mul(r8123, r8122, r8100, MPFR_RNDN);
        mpfr_div(r8124, r8123, r8095, MPFR_RNDN);
        ;
        mpfr_div(r8126, r8095, r8104, MPFR_RNDN);
        mpfr_mul(r8127, r8125, r8126, MPFR_RNDN);
        mpfr_sub(r8128, r8124, r8127, MPFR_RNDN);
        if (mpfr_get_si(r8114, MPFR_RNDN)) { mpfr_set(r8129, r8121, MPFR_RNDN); } else { mpfr_set(r8129, r8128, MPFR_RNDN); };
        if (mpfr_get_si(r8103, MPFR_RNDN)) { mpfr_set(r8130, r8112, MPFR_RNDN); } else { mpfr_set(r8130, r8129, MPFR_RNDN); };
        if (mpfr_get_si(r8099, MPFR_RNDN)) { mpfr_set(r8131, r8101, MPFR_RNDN); } else { mpfr_set(r8131, r8130, MPFR_RNDN); };
        return mpfr_get_d(r8131, MPFR_RNDN);
}

