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

char *name = "Complex division, real part";

double f_if(float a, float b, float c, float d) {
        float r26937 = a;
        float r26938 = c;
        float r26939 = r26937 * r26938;
        float r26940 = b;
        float r26941 = d;
        float r26942 = r26940 * r26941;
        float r26943 = r26939 + r26942;
        float r26944 = r26938 * r26938;
        float r26945 = r26941 * r26941;
        float r26946 = r26944 + r26945;
        float r26947 = r26943 / r26946;
        return r26947;
}

double f_id(double a, double b, double c, double d) {
        double r26948 = a;
        double r26949 = c;
        double r26950 = r26948 * r26949;
        double r26951 = b;
        double r26952 = d;
        double r26953 = r26951 * r26952;
        double r26954 = r26950 + r26953;
        double r26955 = r26949 * r26949;
        double r26956 = r26952 * r26952;
        double r26957 = r26955 + r26956;
        double r26958 = r26954 / r26957;
        return r26958;
}


double f_of(float a, float b, float c, float d) {
        float r26959 = a;
        float r26960 = c;
        float r26961 = r26959 * r26960;
        float r26962 = b;
        float r26963 = d;
        float r26964 = r26962 * r26963;
        float r26965 = r26961 + r26964;
        float r26966 = r26960 * r26960;
        float r26967 = r26963 * r26963;
        float r26968 = r26966 + r26967;
        float r26969 = r26965 / r26968;
        float r26970 = -5.295721881989966e+304;
        bool r26971 = r26969 <= r26970;
        float r26972 = -r26959;
        float r26973 = r26967 + r26966;
        float r26974 = sqrt(r26973);
        float r26975 = r26972 / r26974;
        float r26976 = 1.7786337187724033e+308;
        bool r26977 = r26969 <= r26976;
        float r26978 = 1;
        float r26979 = r26968 / r26965;
        float r26980 = r26978 / r26979;
        float r26981 = r26977 ? r26980 : r26975;
        float r26982 = r26971 ? r26975 : r26981;
        return r26982;
}

double f_od(double a, double b, double c, double d) {
        double r26983 = a;
        double r26984 = c;
        double r26985 = r26983 * r26984;
        double r26986 = b;
        double r26987 = d;
        double r26988 = r26986 * r26987;
        double r26989 = r26985 + r26988;
        double r26990 = r26984 * r26984;
        double r26991 = r26987 * r26987;
        double r26992 = r26990 + r26991;
        double r26993 = r26989 / r26992;
        double r26994 = -5.295721881989966e+304;
        bool r26995 = r26993 <= r26994;
        double r26996 = -r26983;
        double r26997 = r26991 + r26990;
        double r26998 = sqrt(r26997);
        double r26999 = r26996 / r26998;
        double r27000 = 1.7786337187724033e+308;
        bool r27001 = r26993 <= r27000;
        double r27002 = 1;
        double r27003 = r26992 / r26989;
        double r27004 = r27002 / r27003;
        double r27005 = r27001 ? r27004 : r26999;
        double r27006 = r26995 ? r26999 : r27005;
        return r27006;
}

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 r27007, r27008, r27009, r27010, r27011, r27012, r27013, r27014, r27015, r27016, r27017;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r27007);
        mpfr_init(r27008);
        mpfr_init(r27009);
        mpfr_init(r27010);
        mpfr_init(r27011);
        mpfr_init(r27012);
        mpfr_init(r27013);
        mpfr_init(r27014);
        mpfr_init(r27015);
        mpfr_init(r27016);
        mpfr_init(r27017);
}

double f_im(double a, double b, double c, double d) {
        mpfr_set_d(r27007, a, MPFR_RNDN);
        mpfr_set_d(r27008, c, MPFR_RNDN);
        mpfr_mul(r27009, r27007, r27008, MPFR_RNDN);
        mpfr_set_d(r27010, b, MPFR_RNDN);
        mpfr_set_d(r27011, d, MPFR_RNDN);
        mpfr_mul(r27012, r27010, r27011, MPFR_RNDN);
        mpfr_add(r27013, r27009, r27012, MPFR_RNDN);
        mpfr_mul(r27014, r27008, r27008, MPFR_RNDN);
        mpfr_mul(r27015, r27011, r27011, MPFR_RNDN);
        mpfr_add(r27016, r27014, r27015, MPFR_RNDN);
        mpfr_div(r27017, r27013, r27016, MPFR_RNDN);
        return mpfr_get_d(r27017, MPFR_RNDN);
}

static mpfr_t r27018, r27019, r27020, r27021, r27022, r27023, r27024, r27025, r27026, r27027, r27028, r27029, r27030, r27031, r27032, r27033, r27034, r27035, r27036, r27037, r27038, r27039, r27040, r27041;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27018);
        mpfr_init(r27019);
        mpfr_init(r27020);
        mpfr_init(r27021);
        mpfr_init(r27022);
        mpfr_init(r27023);
        mpfr_init(r27024);
        mpfr_init(r27025);
        mpfr_init(r27026);
        mpfr_init(r27027);
        mpfr_init(r27028);
        mpfr_init_set_str(r27029, "-5.295721881989966e+304", 10, MPFR_RNDN);
        mpfr_init(r27030);
        mpfr_init(r27031);
        mpfr_init(r27032);
        mpfr_init(r27033);
        mpfr_init(r27034);
        mpfr_init_set_str(r27035, "1.7786337187724033e+308", 10, MPFR_RNDN);
        mpfr_init(r27036);
        mpfr_init_set_str(r27037, "1", 10, MPFR_RNDN);
        mpfr_init(r27038);
        mpfr_init(r27039);
        mpfr_init(r27040);
        mpfr_init(r27041);
}

double f_fm(double a, double b, double c, double d) {
        mpfr_set_d(r27018, a, MPFR_RNDN);
        mpfr_set_d(r27019, c, MPFR_RNDN);
        mpfr_mul(r27020, r27018, r27019, MPFR_RNDN);
        mpfr_set_d(r27021, b, MPFR_RNDN);
        mpfr_set_d(r27022, d, MPFR_RNDN);
        mpfr_mul(r27023, r27021, r27022, MPFR_RNDN);
        mpfr_add(r27024, r27020, r27023, MPFR_RNDN);
        mpfr_mul(r27025, r27019, r27019, MPFR_RNDN);
        mpfr_mul(r27026, r27022, r27022, MPFR_RNDN);
        mpfr_add(r27027, r27025, r27026, MPFR_RNDN);
        mpfr_div(r27028, r27024, r27027, MPFR_RNDN);
        ;
        mpfr_set_si(r27030, mpfr_cmp(r27028, r27029) <= 0, MPFR_RNDN);
        mpfr_neg(r27031, r27018, MPFR_RNDN);
        mpfr_add(r27032, r27026, r27025, MPFR_RNDN);
        mpfr_sqrt(r27033, r27032, MPFR_RNDN);
        mpfr_div(r27034, r27031, r27033, MPFR_RNDN);
        ;
        mpfr_set_si(r27036, mpfr_cmp(r27028, r27035) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27038, r27027, r27024, MPFR_RNDN);
        mpfr_div(r27039, r27037, r27038, MPFR_RNDN);
        if (mpfr_get_si(r27036, MPFR_RNDN)) { mpfr_set(r27040, r27039, MPFR_RNDN); } else { mpfr_set(r27040, r27034, MPFR_RNDN); };
        if (mpfr_get_si(r27030, MPFR_RNDN)) { mpfr_set(r27041, r27034, MPFR_RNDN); } else { mpfr_set(r27041, r27040, MPFR_RNDN); };
        return mpfr_get_d(r27041, MPFR_RNDN);
}

static mpfr_t r27042, r27043, r27044, r27045, r27046, r27047, r27048, r27049, r27050, r27051, r27052, r27053, r27054, r27055, r27056, r27057, r27058, r27059, r27060, r27061, r27062, r27063, r27064, r27065;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r27042);
        mpfr_init(r27043);
        mpfr_init(r27044);
        mpfr_init(r27045);
        mpfr_init(r27046);
        mpfr_init(r27047);
        mpfr_init(r27048);
        mpfr_init(r27049);
        mpfr_init(r27050);
        mpfr_init(r27051);
        mpfr_init(r27052);
        mpfr_init_set_str(r27053, "-5.295721881989966e+304", 10, MPFR_RNDN);
        mpfr_init(r27054);
        mpfr_init(r27055);
        mpfr_init(r27056);
        mpfr_init(r27057);
        mpfr_init(r27058);
        mpfr_init_set_str(r27059, "1.7786337187724033e+308", 10, MPFR_RNDN);
        mpfr_init(r27060);
        mpfr_init_set_str(r27061, "1", 10, MPFR_RNDN);
        mpfr_init(r27062);
        mpfr_init(r27063);
        mpfr_init(r27064);
        mpfr_init(r27065);
}

double f_dm(double a, double b, double c, double d) {
        mpfr_set_d(r27042, a, MPFR_RNDN);
        mpfr_set_d(r27043, c, MPFR_RNDN);
        mpfr_mul(r27044, r27042, r27043, MPFR_RNDN);
        mpfr_set_d(r27045, b, MPFR_RNDN);
        mpfr_set_d(r27046, d, MPFR_RNDN);
        mpfr_mul(r27047, r27045, r27046, MPFR_RNDN);
        mpfr_add(r27048, r27044, r27047, MPFR_RNDN);
        mpfr_mul(r27049, r27043, r27043, MPFR_RNDN);
        mpfr_mul(r27050, r27046, r27046, MPFR_RNDN);
        mpfr_add(r27051, r27049, r27050, MPFR_RNDN);
        mpfr_div(r27052, r27048, r27051, MPFR_RNDN);
        ;
        mpfr_set_si(r27054, mpfr_cmp(r27052, r27053) <= 0, MPFR_RNDN);
        mpfr_neg(r27055, r27042, MPFR_RNDN);
        mpfr_add(r27056, r27050, r27049, MPFR_RNDN);
        mpfr_sqrt(r27057, r27056, MPFR_RNDN);
        mpfr_div(r27058, r27055, r27057, MPFR_RNDN);
        ;
        mpfr_set_si(r27060, mpfr_cmp(r27052, r27059) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r27062, r27051, r27048, MPFR_RNDN);
        mpfr_div(r27063, r27061, r27062, MPFR_RNDN);
        if (mpfr_get_si(r27060, MPFR_RNDN)) { mpfr_set(r27064, r27063, MPFR_RNDN); } else { mpfr_set(r27064, r27058, MPFR_RNDN); };
        if (mpfr_get_si(r27054, MPFR_RNDN)) { mpfr_set(r27065, r27058, MPFR_RNDN); } else { mpfr_set(r27065, r27064, MPFR_RNDN); };
        return mpfr_get_d(r27065, MPFR_RNDN);
}

