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

char *name = "Complex square root";

double f_if(float re, float im) {
        float r28448 = 0.5f;
        float r28449 = 2.0f;
        float r28450 = re;
        float r28451 = r28450 * r28450;
        float r28452 = im;
        float r28453 = r28452 * r28452;
        float r28454 = r28451 + r28453;
        float r28455 = sqrt(r28454);
        float r28456 = r28455 + r28450;
        float r28457 = r28449 * r28456;
        float r28458 = sqrt(r28457);
        float r28459 = r28448 * r28458;
        return r28459;
}

double f_id(double re, double im) {
        double r28460 = 0.5;
        double r28461 = 2.0;
        double r28462 = re;
        double r28463 = r28462 * r28462;
        double r28464 = im;
        double r28465 = r28464 * r28464;
        double r28466 = r28463 + r28465;
        double r28467 = sqrt(r28466);
        double r28468 = r28467 + r28462;
        double r28469 = r28461 * r28468;
        double r28470 = sqrt(r28469);
        double r28471 = r28460 * r28470;
        return r28471;
}


double f_of(float re, float im) {
        float r28472 = re;
        float r28473 = -7.919247851998315e-86f;
        bool r28474 = r28472 <= r28473;
        float r28475 = 0.5f;
        float r28476 = 2.0f;
        float r28477 = im;
        float r28478 = r28477 * r28477;
        float r28479 = r28472 * r28472;
        float r28480 = r28479 + r28478;
        float r28481 = sqrt(r28480);
        float r28482 = r28481 - r28472;
        float r28483 = r28478 / r28482;
        float r28484 = r28476 * r28483;
        float r28485 = sqrt(r28484);
        float r28486 = r28475 * r28485;
        float r28487 = 1.8045155270193253e-283f;
        bool r28488 = r28472 <= r28487;
        float r28489 = r28477 + r28472;
        float r28490 = r28476 * r28489;
        float r28491 = sqrt(r28490);
        float r28492 = r28475 * r28491;
        float r28493 = 1.524181826331731e+104f;
        bool r28494 = r28472 <= r28493;
        float r28495 = 3.0f;
        float r28496 = pow(r28481, r28495);
        float r28497 = pow(r28472, r28495);
        float r28498 = r28496 + r28497;
        float r28499 = r28476 * r28498;
        float r28500 = sqrt(r28499);
        float r28501 = r28472 + r28472;
        float r28502 = r28501 * r28472;
        float r28503 = r28478 + r28502;
        float r28504 = r28478 + r28479;
        float r28505 = sqrt(r28504);
        float r28506 = r28505 * r28472;
        float r28507 = r28503 - r28506;
        float r28508 = sqrt(r28507);
        float r28509 = r28500 / r28508;
        float r28510 = r28475 * r28509;
        float r28511 = r28476 * r28501;
        float r28512 = sqrt(r28511);
        float r28513 = r28475 * r28512;
        float r28514 = r28494 ? r28510 : r28513;
        float r28515 = r28488 ? r28492 : r28514;
        float r28516 = r28474 ? r28486 : r28515;
        return r28516;
}

double f_od(double re, double im) {
        double r28517 = re;
        double r28518 = -7.919247851998315e-86;
        bool r28519 = r28517 <= r28518;
        double r28520 = 0.5;
        double r28521 = 2.0;
        double r28522 = im;
        double r28523 = r28522 * r28522;
        double r28524 = r28517 * r28517;
        double r28525 = r28524 + r28523;
        double r28526 = sqrt(r28525);
        double r28527 = r28526 - r28517;
        double r28528 = r28523 / r28527;
        double r28529 = r28521 * r28528;
        double r28530 = sqrt(r28529);
        double r28531 = r28520 * r28530;
        double r28532 = 1.8045155270193253e-283;
        bool r28533 = r28517 <= r28532;
        double r28534 = r28522 + r28517;
        double r28535 = r28521 * r28534;
        double r28536 = sqrt(r28535);
        double r28537 = r28520 * r28536;
        double r28538 = 1.524181826331731e+104;
        bool r28539 = r28517 <= r28538;
        double r28540 = 3.0;
        double r28541 = pow(r28526, r28540);
        double r28542 = pow(r28517, r28540);
        double r28543 = r28541 + r28542;
        double r28544 = r28521 * r28543;
        double r28545 = sqrt(r28544);
        double r28546 = r28517 + r28517;
        double r28547 = r28546 * r28517;
        double r28548 = r28523 + r28547;
        double r28549 = r28523 + r28524;
        double r28550 = sqrt(r28549);
        double r28551 = r28550 * r28517;
        double r28552 = r28548 - r28551;
        double r28553 = sqrt(r28552);
        double r28554 = r28545 / r28553;
        double r28555 = r28520 * r28554;
        double r28556 = r28521 * r28546;
        double r28557 = sqrt(r28556);
        double r28558 = r28520 * r28557;
        double r28559 = r28539 ? r28555 : r28558;
        double r28560 = r28533 ? r28537 : r28559;
        double r28561 = r28519 ? r28531 : r28560;
        return r28561;
}

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 r28562, r28563, r28564, r28565, r28566, r28567, r28568, r28569, r28570, r28571, r28572, r28573;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(3472);
        mpfr_init_set_str(r28562, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28563, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28564);
        mpfr_init(r28565);
        mpfr_init(r28566);
        mpfr_init(r28567);
        mpfr_init(r28568);
        mpfr_init(r28569);
        mpfr_init(r28570);
        mpfr_init(r28571);
        mpfr_init(r28572);
        mpfr_init(r28573);
}

double f_im(double re, double im) {
        ;
        ;
        mpfr_set_d(r28564, re, MPFR_RNDN);
        mpfr_mul(r28565, r28564, r28564, MPFR_RNDN);
        mpfr_set_d(r28566, im, MPFR_RNDN);
        mpfr_mul(r28567, r28566, r28566, MPFR_RNDN);
        mpfr_add(r28568, r28565, r28567, MPFR_RNDN);
        mpfr_sqrt(r28569, r28568, MPFR_RNDN);
        mpfr_add(r28570, r28569, r28564, MPFR_RNDN);
        mpfr_mul(r28571, r28563, r28570, MPFR_RNDN);
        mpfr_sqrt(r28572, r28571, MPFR_RNDN);
        mpfr_mul(r28573, r28562, r28572, MPFR_RNDN);
        return mpfr_get_d(r28573, MPFR_RNDN);
}

static mpfr_t r28574, r28575, r28576, r28577, r28578, r28579, r28580, r28581, r28582, r28583, r28584, r28585, r28586, r28587, r28588, r28589, r28590, r28591, r28592, r28593, r28594, r28595, r28596, r28597, r28598, r28599, r28600, r28601, r28602, r28603, r28604, r28605, r28606, r28607, r28608, r28609, r28610, r28611, r28612, r28613, r28614, r28615, r28616, r28617, r28618;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r28574);
        mpfr_init_set_str(r28575, "-7.919247851998315e-86", 10, MPFR_RNDN);
        mpfr_init(r28576);
        mpfr_init_set_str(r28577, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28578, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28579);
        mpfr_init(r28580);
        mpfr_init(r28581);
        mpfr_init(r28582);
        mpfr_init(r28583);
        mpfr_init(r28584);
        mpfr_init(r28585);
        mpfr_init(r28586);
        mpfr_init(r28587);
        mpfr_init(r28588);
        mpfr_init_set_str(r28589, "1.8045155270193253e-283", 10, MPFR_RNDN);
        mpfr_init(r28590);
        mpfr_init(r28591);
        mpfr_init(r28592);
        mpfr_init(r28593);
        mpfr_init(r28594);
        mpfr_init_set_str(r28595, "1.524181826331731e+104", 10, MPFR_RNDN);
        mpfr_init(r28596);
        mpfr_init_set_str(r28597, "3", 10, MPFR_RNDN);
        mpfr_init(r28598);
        mpfr_init(r28599);
        mpfr_init(r28600);
        mpfr_init(r28601);
        mpfr_init(r28602);
        mpfr_init(r28603);
        mpfr_init(r28604);
        mpfr_init(r28605);
        mpfr_init(r28606);
        mpfr_init(r28607);
        mpfr_init(r28608);
        mpfr_init(r28609);
        mpfr_init(r28610);
        mpfr_init(r28611);
        mpfr_init(r28612);
        mpfr_init(r28613);
        mpfr_init(r28614);
        mpfr_init(r28615);
        mpfr_init(r28616);
        mpfr_init(r28617);
        mpfr_init(r28618);
}

double f_fm(double re, double im) {
        mpfr_set_d(r28574, re, MPFR_RNDN);
        ;
        mpfr_set_si(r28576, mpfr_cmp(r28574, r28575) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r28579, im, MPFR_RNDN);
        mpfr_mul(r28580, r28579, r28579, MPFR_RNDN);
        mpfr_mul(r28581, r28574, r28574, MPFR_RNDN);
        mpfr_add(r28582, r28581, r28580, MPFR_RNDN);
        mpfr_sqrt(r28583, r28582, MPFR_RNDN);
        mpfr_sub(r28584, r28583, r28574, MPFR_RNDN);
        mpfr_div(r28585, r28580, r28584, MPFR_RNDN);
        mpfr_mul(r28586, r28578, r28585, MPFR_RNDN);
        mpfr_sqrt(r28587, r28586, MPFR_RNDN);
        mpfr_mul(r28588, r28577, r28587, MPFR_RNDN);
        ;
        mpfr_set_si(r28590, mpfr_cmp(r28574, r28589) <= 0, MPFR_RNDN);
        mpfr_add(r28591, r28579, r28574, MPFR_RNDN);
        mpfr_mul(r28592, r28578, r28591, MPFR_RNDN);
        mpfr_sqrt(r28593, r28592, MPFR_RNDN);
        mpfr_mul(r28594, r28577, r28593, MPFR_RNDN);
        ;
        mpfr_set_si(r28596, mpfr_cmp(r28574, r28595) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r28598, r28583, r28597, MPFR_RNDN);
        mpfr_pow(r28599, r28574, r28597, MPFR_RNDN);
        mpfr_add(r28600, r28598, r28599, MPFR_RNDN);
        mpfr_mul(r28601, r28578, r28600, MPFR_RNDN);
        mpfr_sqrt(r28602, r28601, MPFR_RNDN);
        mpfr_add(r28603, r28574, r28574, MPFR_RNDN);
        mpfr_mul(r28604, r28603, r28574, MPFR_RNDN);
        mpfr_add(r28605, r28580, r28604, MPFR_RNDN);
        mpfr_add(r28606, r28580, r28581, MPFR_RNDN);
        mpfr_sqrt(r28607, r28606, MPFR_RNDN);
        mpfr_mul(r28608, r28607, r28574, MPFR_RNDN);
        mpfr_sub(r28609, r28605, r28608, MPFR_RNDN);
        mpfr_sqrt(r28610, r28609, MPFR_RNDN);
        mpfr_div(r28611, r28602, r28610, MPFR_RNDN);
        mpfr_mul(r28612, r28577, r28611, MPFR_RNDN);
        mpfr_mul(r28613, r28578, r28603, MPFR_RNDN);
        mpfr_sqrt(r28614, r28613, MPFR_RNDN);
        mpfr_mul(r28615, r28577, r28614, MPFR_RNDN);
        if (mpfr_get_si(r28596, MPFR_RNDN)) { mpfr_set(r28616, r28612, MPFR_RNDN); } else { mpfr_set(r28616, r28615, MPFR_RNDN); };
        if (mpfr_get_si(r28590, MPFR_RNDN)) { mpfr_set(r28617, r28594, MPFR_RNDN); } else { mpfr_set(r28617, r28616, MPFR_RNDN); };
        if (mpfr_get_si(r28576, MPFR_RNDN)) { mpfr_set(r28618, r28588, MPFR_RNDN); } else { mpfr_set(r28618, r28617, MPFR_RNDN); };
        return mpfr_get_d(r28618, MPFR_RNDN);
}

static mpfr_t r28619, r28620, r28621, r28622, r28623, r28624, r28625, r28626, r28627, r28628, r28629, r28630, r28631, r28632, r28633, r28634, r28635, r28636, r28637, r28638, r28639, r28640, r28641, r28642, r28643, r28644, r28645, r28646, r28647, r28648, r28649, r28650, r28651, r28652, r28653, r28654, r28655, r28656, r28657, r28658, r28659, r28660, r28661, r28662, r28663;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(3472);
        mpfr_init(r28619);
        mpfr_init_set_str(r28620, "-7.919247851998315e-86", 10, MPFR_RNDN);
        mpfr_init(r28621);
        mpfr_init_set_str(r28622, "0.5", 10, MPFR_RNDN);
        mpfr_init_set_str(r28623, "2.0", 10, MPFR_RNDN);
        mpfr_init(r28624);
        mpfr_init(r28625);
        mpfr_init(r28626);
        mpfr_init(r28627);
        mpfr_init(r28628);
        mpfr_init(r28629);
        mpfr_init(r28630);
        mpfr_init(r28631);
        mpfr_init(r28632);
        mpfr_init(r28633);
        mpfr_init_set_str(r28634, "1.8045155270193253e-283", 10, MPFR_RNDN);
        mpfr_init(r28635);
        mpfr_init(r28636);
        mpfr_init(r28637);
        mpfr_init(r28638);
        mpfr_init(r28639);
        mpfr_init_set_str(r28640, "1.524181826331731e+104", 10, MPFR_RNDN);
        mpfr_init(r28641);
        mpfr_init_set_str(r28642, "3", 10, MPFR_RNDN);
        mpfr_init(r28643);
        mpfr_init(r28644);
        mpfr_init(r28645);
        mpfr_init(r28646);
        mpfr_init(r28647);
        mpfr_init(r28648);
        mpfr_init(r28649);
        mpfr_init(r28650);
        mpfr_init(r28651);
        mpfr_init(r28652);
        mpfr_init(r28653);
        mpfr_init(r28654);
        mpfr_init(r28655);
        mpfr_init(r28656);
        mpfr_init(r28657);
        mpfr_init(r28658);
        mpfr_init(r28659);
        mpfr_init(r28660);
        mpfr_init(r28661);
        mpfr_init(r28662);
        mpfr_init(r28663);
}

double f_dm(double re, double im) {
        mpfr_set_d(r28619, re, MPFR_RNDN);
        ;
        mpfr_set_si(r28621, mpfr_cmp(r28619, r28620) <= 0, MPFR_RNDN);
        ;
        ;
        mpfr_set_d(r28624, im, MPFR_RNDN);
        mpfr_mul(r28625, r28624, r28624, MPFR_RNDN);
        mpfr_mul(r28626, r28619, r28619, MPFR_RNDN);
        mpfr_add(r28627, r28626, r28625, MPFR_RNDN);
        mpfr_sqrt(r28628, r28627, MPFR_RNDN);
        mpfr_sub(r28629, r28628, r28619, MPFR_RNDN);
        mpfr_div(r28630, r28625, r28629, MPFR_RNDN);
        mpfr_mul(r28631, r28623, r28630, MPFR_RNDN);
        mpfr_sqrt(r28632, r28631, MPFR_RNDN);
        mpfr_mul(r28633, r28622, r28632, MPFR_RNDN);
        ;
        mpfr_set_si(r28635, mpfr_cmp(r28619, r28634) <= 0, MPFR_RNDN);
        mpfr_add(r28636, r28624, r28619, MPFR_RNDN);
        mpfr_mul(r28637, r28623, r28636, MPFR_RNDN);
        mpfr_sqrt(r28638, r28637, MPFR_RNDN);
        mpfr_mul(r28639, r28622, r28638, MPFR_RNDN);
        ;
        mpfr_set_si(r28641, mpfr_cmp(r28619, r28640) <= 0, MPFR_RNDN);
        ;
        mpfr_pow(r28643, r28628, r28642, MPFR_RNDN);
        mpfr_pow(r28644, r28619, r28642, MPFR_RNDN);
        mpfr_add(r28645, r28643, r28644, MPFR_RNDN);
        mpfr_mul(r28646, r28623, r28645, MPFR_RNDN);
        mpfr_sqrt(r28647, r28646, MPFR_RNDN);
        mpfr_add(r28648, r28619, r28619, MPFR_RNDN);
        mpfr_mul(r28649, r28648, r28619, MPFR_RNDN);
        mpfr_add(r28650, r28625, r28649, MPFR_RNDN);
        mpfr_add(r28651, r28625, r28626, MPFR_RNDN);
        mpfr_sqrt(r28652, r28651, MPFR_RNDN);
        mpfr_mul(r28653, r28652, r28619, MPFR_RNDN);
        mpfr_sub(r28654, r28650, r28653, MPFR_RNDN);
        mpfr_sqrt(r28655, r28654, MPFR_RNDN);
        mpfr_div(r28656, r28647, r28655, MPFR_RNDN);
        mpfr_mul(r28657, r28622, r28656, MPFR_RNDN);
        mpfr_mul(r28658, r28623, r28648, MPFR_RNDN);
        mpfr_sqrt(r28659, r28658, MPFR_RNDN);
        mpfr_mul(r28660, r28622, r28659, MPFR_RNDN);
        if (mpfr_get_si(r28641, MPFR_RNDN)) { mpfr_set(r28661, r28657, MPFR_RNDN); } else { mpfr_set(r28661, r28660, MPFR_RNDN); };
        if (mpfr_get_si(r28635, MPFR_RNDN)) { mpfr_set(r28662, r28639, MPFR_RNDN); } else { mpfr_set(r28662, r28661, MPFR_RNDN); };
        if (mpfr_get_si(r28621, MPFR_RNDN)) { mpfr_set(r28663, r28633, MPFR_RNDN); } else { mpfr_set(r28663, r28662, MPFR_RNDN); };
        return mpfr_get_d(r28663, MPFR_RNDN);
}

