#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 r7986 = b_2;
        float r7987 = -r7986;
        float r7988 = r7986 * r7986;
        float r7989 = a;
        float r7990 = c;
        float r7991 = r7989 * r7990;
        float r7992 = r7988 - r7991;
        float r7993 = sqrt(r7992);
        float r7994 = r7987 + r7993;
        float r7995 = r7994 / r7989;
        return r7995;
}

double f_id(double a, double b_2, double c) {
        double r7996 = b_2;
        double r7997 = -r7996;
        double r7998 = r7996 * r7996;
        double r7999 = a;
        double r8000 = c;
        double r8001 = r7999 * r8000;
        double r8002 = r7998 - r8001;
        double r8003 = sqrt(r8002);
        double r8004 = r7997 + r8003;
        double r8005 = r8004 / r7999;
        return r8005;
}


double f_of(float a, float b_2, float c) {
        float r8006 = b_2;
        float r8007 = -1/2;
        float r8008 = r8006 / r8007;
        float r8009 = -1.5102327952834505e+120;
        bool r8010 = r8008 <= r8009;
        float r8011 = c;
        float r8012 = r8011 / r8008;
        float r8013 = -4.082100105494121e-263;
        bool r8014 = r8008 <= r8013;
        float r8015 = a;
        float r8016 = r8015 * r8011;
        float r8017 = -r8006;
        float r8018 = r8006 * r8006;
        float r8019 = r8018 - r8016;
        float r8020 = sqrt(r8019);
        float r8021 = r8017 - r8020;
        float r8022 = r8016 / r8021;
        float r8023 = r8022 / r8015;
        float r8024 = 5.278721848275257e+152;
        bool r8025 = r8008 <= r8024;
        float r8026 = 1;
        float r8027 = r8011 * r8015;
        float r8028 = r8018 - r8027;
        float r8029 = sqrt(r8028);
        float r8030 = r8029 - r8006;
        float r8031 = r8015 / r8030;
        float r8032 = r8026 / r8031;
        float r8033 = -2;
        float r8034 = r8006 / r8015;
        float r8035 = r8033 * r8034;
        float r8036 = r8025 ? r8032 : r8035;
        float r8037 = r8014 ? r8023 : r8036;
        float r8038 = r8010 ? r8012 : r8037;
        return r8038;
}

double f_od(double a, double b_2, double c) {
        double r8039 = b_2;
        double r8040 = -1/2;
        double r8041 = r8039 / r8040;
        double r8042 = -1.5102327952834505e+120;
        bool r8043 = r8041 <= r8042;
        double r8044 = c;
        double r8045 = r8044 / r8041;
        double r8046 = -4.082100105494121e-263;
        bool r8047 = r8041 <= r8046;
        double r8048 = a;
        double r8049 = r8048 * r8044;
        double r8050 = -r8039;
        double r8051 = r8039 * r8039;
        double r8052 = r8051 - r8049;
        double r8053 = sqrt(r8052);
        double r8054 = r8050 - r8053;
        double r8055 = r8049 / r8054;
        double r8056 = r8055 / r8048;
        double r8057 = 5.278721848275257e+152;
        bool r8058 = r8041 <= r8057;
        double r8059 = 1;
        double r8060 = r8044 * r8048;
        double r8061 = r8051 - r8060;
        double r8062 = sqrt(r8061);
        double r8063 = r8062 - r8039;
        double r8064 = r8048 / r8063;
        double r8065 = r8059 / r8064;
        double r8066 = -2;
        double r8067 = r8039 / r8048;
        double r8068 = r8066 * r8067;
        double r8069 = r8058 ? r8065 : r8068;
        double r8070 = r8047 ? r8056 : r8069;
        double r8071 = r8043 ? r8045 : r8070;
        return r8071;
}

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 r8072, r8073, r8074, r8075, r8076, r8077, r8078, r8079, r8080, r8081;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3408);
        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(r8081);
}

double f_im(double a, double b_2, double c) {
        mpfr_set_d(r8072, b_2, MPFR_RNDN);
        mpfr_neg(r8073, r8072, MPFR_RNDN);
        mpfr_mul(r8074, r8072, r8072, 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(r8081, r8080, r8075, MPFR_RNDN);
        return mpfr_get_d(r8081, MPFR_RNDN);
}

static mpfr_t r8082, r8083, r8084, r8085, r8086, r8087, r8088, r8089, r8090, r8091, r8092, r8093, r8094, r8095, r8096, r8097, r8098, r8099, r8100, r8101, r8102, r8103, r8104, r8105, r8106, r8107, r8108, r8109, r8110, r8111, r8112, r8113, r8114;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8082);
        mpfr_init_set_str(r8083, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8084);
        mpfr_init_set_str(r8085, "-1.5102327952834505e+120", 10, MPFR_RNDN);
        mpfr_init(r8086);
        mpfr_init(r8087);
        mpfr_init(r8088);
        mpfr_init_set_str(r8089, "-4.082100105494121e-263", 10, MPFR_RNDN);
        mpfr_init(r8090);
        mpfr_init(r8091);
        mpfr_init(r8092);
        mpfr_init(r8093);
        mpfr_init(r8094);
        mpfr_init(r8095);
        mpfr_init(r8096);
        mpfr_init(r8097);
        mpfr_init(r8098);
        mpfr_init(r8099);
        mpfr_init_set_str(r8100, "5.278721848275257e+152", 10, MPFR_RNDN);
        mpfr_init(r8101);
        mpfr_init_set_str(r8102, "1", 10, MPFR_RNDN);
        mpfr_init(r8103);
        mpfr_init(r8104);
        mpfr_init(r8105);
        mpfr_init(r8106);
        mpfr_init(r8107);
        mpfr_init(r8108);
        mpfr_init_set_str(r8109, "-2", 10, MPFR_RNDN);
        mpfr_init(r8110);
        mpfr_init(r8111);
        mpfr_init(r8112);
        mpfr_init(r8113);
        mpfr_init(r8114);
}

double f_fm(double a, double b_2, double c) {
        mpfr_set_d(r8082, b_2, MPFR_RNDN);
        ;
        mpfr_div(r8084, r8082, r8083, MPFR_RNDN);
        ;
        mpfr_set_si(r8086, mpfr_cmp(r8084, r8085) <= 0, MPFR_RNDN);
        mpfr_set_d(r8087, c, MPFR_RNDN);
        mpfr_div(r8088, r8087, r8084, MPFR_RNDN);
        ;
        mpfr_set_si(r8090, mpfr_cmp(r8084, r8089) <= 0, MPFR_RNDN);
        mpfr_set_d(r8091, a, MPFR_RNDN);
        mpfr_mul(r8092, r8091, r8087, MPFR_RNDN);
        mpfr_neg(r8093, r8082, MPFR_RNDN);
        mpfr_mul(r8094, r8082, r8082, MPFR_RNDN);
        mpfr_sub(r8095, r8094, r8092, MPFR_RNDN);
        mpfr_sqrt(r8096, r8095, MPFR_RNDN);
        mpfr_sub(r8097, r8093, r8096, MPFR_RNDN);
        mpfr_div(r8098, r8092, r8097, MPFR_RNDN);
        mpfr_div(r8099, r8098, r8091, MPFR_RNDN);
        ;
        mpfr_set_si(r8101, mpfr_cmp(r8084, r8100) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8103, r8087, r8091, MPFR_RNDN);
        mpfr_sub(r8104, r8094, r8103, MPFR_RNDN);
        mpfr_sqrt(r8105, r8104, MPFR_RNDN);
        mpfr_sub(r8106, r8105, r8082, MPFR_RNDN);
        mpfr_div(r8107, r8091, r8106, MPFR_RNDN);
        mpfr_div(r8108, r8102, r8107, MPFR_RNDN);
        ;
        mpfr_div(r8110, r8082, r8091, MPFR_RNDN);
        mpfr_mul(r8111, r8109, r8110, MPFR_RNDN);
        if (mpfr_get_si(r8101, MPFR_RNDN)) { mpfr_set(r8112, r8108, MPFR_RNDN); } else { mpfr_set(r8112, r8111, MPFR_RNDN); };
        if (mpfr_get_si(r8090, MPFR_RNDN)) { mpfr_set(r8113, r8099, MPFR_RNDN); } else { mpfr_set(r8113, r8112, MPFR_RNDN); };
        if (mpfr_get_si(r8086, MPFR_RNDN)) { mpfr_set(r8114, r8088, MPFR_RNDN); } else { mpfr_set(r8114, r8113, MPFR_RNDN); };
        return mpfr_get_d(r8114, MPFR_RNDN);
}

static mpfr_t r8115, r8116, r8117, r8118, r8119, r8120, r8121, r8122, r8123, r8124, r8125, r8126, r8127, r8128, r8129, r8130, r8131, r8132, r8133, r8134, r8135, r8136, r8137, r8138, r8139, r8140, r8141, r8142, r8143, r8144, r8145, r8146, r8147;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3408);
        mpfr_init(r8115);
        mpfr_init_set_str(r8116, "-1/2", 10, MPFR_RNDN);
        mpfr_init(r8117);
        mpfr_init_set_str(r8118, "-1.5102327952834505e+120", 10, MPFR_RNDN);
        mpfr_init(r8119);
        mpfr_init(r8120);
        mpfr_init(r8121);
        mpfr_init_set_str(r8122, "-4.082100105494121e-263", 10, MPFR_RNDN);
        mpfr_init(r8123);
        mpfr_init(r8124);
        mpfr_init(r8125);
        mpfr_init(r8126);
        mpfr_init(r8127);
        mpfr_init(r8128);
        mpfr_init(r8129);
        mpfr_init(r8130);
        mpfr_init(r8131);
        mpfr_init(r8132);
        mpfr_init_set_str(r8133, "5.278721848275257e+152", 10, MPFR_RNDN);
        mpfr_init(r8134);
        mpfr_init_set_str(r8135, "1", 10, MPFR_RNDN);
        mpfr_init(r8136);
        mpfr_init(r8137);
        mpfr_init(r8138);
        mpfr_init(r8139);
        mpfr_init(r8140);
        mpfr_init(r8141);
        mpfr_init_set_str(r8142, "-2", 10, MPFR_RNDN);
        mpfr_init(r8143);
        mpfr_init(r8144);
        mpfr_init(r8145);
        mpfr_init(r8146);
        mpfr_init(r8147);
}

double f_dm(double a, double b_2, double c) {
        mpfr_set_d(r8115, b_2, MPFR_RNDN);
        ;
        mpfr_div(r8117, r8115, r8116, MPFR_RNDN);
        ;
        mpfr_set_si(r8119, mpfr_cmp(r8117, r8118) <= 0, MPFR_RNDN);
        mpfr_set_d(r8120, c, MPFR_RNDN);
        mpfr_div(r8121, r8120, r8117, MPFR_RNDN);
        ;
        mpfr_set_si(r8123, mpfr_cmp(r8117, r8122) <= 0, MPFR_RNDN);
        mpfr_set_d(r8124, a, MPFR_RNDN);
        mpfr_mul(r8125, r8124, r8120, MPFR_RNDN);
        mpfr_neg(r8126, r8115, MPFR_RNDN);
        mpfr_mul(r8127, r8115, r8115, MPFR_RNDN);
        mpfr_sub(r8128, r8127, r8125, MPFR_RNDN);
        mpfr_sqrt(r8129, r8128, MPFR_RNDN);
        mpfr_sub(r8130, r8126, r8129, MPFR_RNDN);
        mpfr_div(r8131, r8125, r8130, MPFR_RNDN);
        mpfr_div(r8132, r8131, r8124, MPFR_RNDN);
        ;
        mpfr_set_si(r8134, mpfr_cmp(r8117, r8133) <= 0, MPFR_RNDN);
        ;
        mpfr_mul(r8136, r8120, r8124, MPFR_RNDN);
        mpfr_sub(r8137, r8127, r8136, MPFR_RNDN);
        mpfr_sqrt(r8138, r8137, MPFR_RNDN);
        mpfr_sub(r8139, r8138, r8115, MPFR_RNDN);
        mpfr_div(r8140, r8124, r8139, MPFR_RNDN);
        mpfr_div(r8141, r8135, r8140, MPFR_RNDN);
        ;
        mpfr_div(r8143, r8115, r8124, MPFR_RNDN);
        mpfr_mul(r8144, r8142, r8143, MPFR_RNDN);
        if (mpfr_get_si(r8134, MPFR_RNDN)) { mpfr_set(r8145, r8141, MPFR_RNDN); } else { mpfr_set(r8145, r8144, MPFR_RNDN); };
        if (mpfr_get_si(r8123, MPFR_RNDN)) { mpfr_set(r8146, r8132, MPFR_RNDN); } else { mpfr_set(r8146, r8145, MPFR_RNDN); };
        if (mpfr_get_si(r8119, MPFR_RNDN)) { mpfr_set(r8147, r8121, MPFR_RNDN); } else { mpfr_set(r8147, r8146, MPFR_RNDN); };
        return mpfr_get_d(r8147, MPFR_RNDN);
}

