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

char *name = "math.abs on complex";

double f_if(float re, float im) {
        float r22321 = re;
        float r22322 = r22321 * r22321;
        float r22323 = im;
        float r22324 = r22323 * r22323;
        float r22325 = r22322 + r22324;
        float r22326 = sqrt(r22325);
        return r22326;
}

double f_id(double re, double im) {
        double r22327 = re;
        double r22328 = r22327 * r22327;
        double r22329 = im;
        double r22330 = r22329 * r22329;
        double r22331 = r22328 + r22330;
        double r22332 = sqrt(r22331);
        return r22332;
}


double f_of(float re, float im) {
        float r22333 = re;
        float r22334 = -r22333;
        float r22335 = -6.933392427819694e+157;
        bool r22336 = r22334 <= r22335;
        float r22337 = 1.9695378729101803e+130;
        bool r22338 = r22334 <= r22337;
        float r22339 = r22333 * r22333;
        float r22340 = im;
        float r22341 = r22340 * r22340;
        float r22342 = r22339 + r22341;
        float r22343 = sqrt(r22342);
        float r22344 = r22338 ? r22343 : r22334;
        float r22345 = r22336 ? r22333 : r22344;
        return r22345;
}

double f_od(double re, double im) {
        double r22346 = re;
        double r22347 = -r22346;
        double r22348 = -6.933392427819694e+157;
        bool r22349 = r22347 <= r22348;
        double r22350 = 1.9695378729101803e+130;
        bool r22351 = r22347 <= r22350;
        double r22352 = r22346 * r22346;
        double r22353 = im;
        double r22354 = r22353 * r22353;
        double r22355 = r22352 + r22354;
        double r22356 = sqrt(r22355);
        double r22357 = r22351 ? r22356 : r22347;
        double r22358 = r22349 ? r22346 : r22357;
        return r22358;
}

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 r22359, r22360, r22361, r22362, r22363, r22364;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r22359);
        mpfr_init(r22360);
        mpfr_init(r22361);
        mpfr_init(r22362);
        mpfr_init(r22363);
        mpfr_init(r22364);
}

double f_im(double re, double im) {
        mpfr_set_d(r22359, re, MPFR_RNDN);
        mpfr_mul(r22360, r22359, r22359, MPFR_RNDN);
        mpfr_set_d(r22361, im, MPFR_RNDN);
        mpfr_mul(r22362, r22361, r22361, MPFR_RNDN);
        mpfr_add(r22363, r22360, r22362, MPFR_RNDN);
        mpfr_sqrt(r22364, r22363, MPFR_RNDN);
        return mpfr_get_d(r22364, MPFR_RNDN);
}

static mpfr_t r22365, r22366, r22367, r22368, r22369, r22370, r22371, r22372, r22373, r22374, r22375, r22376, r22377;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22365);
        mpfr_init(r22366);
        mpfr_init_set_str(r22367, "-6.933392427819694e+157", 10, MPFR_RNDN);
        mpfr_init(r22368);
        mpfr_init_set_str(r22369, "1.9695378729101803e+130", 10, MPFR_RNDN);
        mpfr_init(r22370);
        mpfr_init(r22371);
        mpfr_init(r22372);
        mpfr_init(r22373);
        mpfr_init(r22374);
        mpfr_init(r22375);
        mpfr_init(r22376);
        mpfr_init(r22377);
}

double f_fm(double re, double im) {
        mpfr_set_d(r22365, re, MPFR_RNDN);
        mpfr_neg(r22366, r22365, MPFR_RNDN);
        ;
        mpfr_set_si(r22368, mpfr_cmp(r22366, r22367) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22370, mpfr_cmp(r22366, r22369) <= 0, MPFR_RNDN);
        mpfr_mul(r22371, r22365, r22365, MPFR_RNDN);
        mpfr_set_d(r22372, im, MPFR_RNDN);
        mpfr_mul(r22373, r22372, r22372, MPFR_RNDN);
        mpfr_add(r22374, r22371, r22373, MPFR_RNDN);
        mpfr_sqrt(r22375, r22374, MPFR_RNDN);
        if (mpfr_get_si(r22370, MPFR_RNDN)) { mpfr_set(r22376, r22375, MPFR_RNDN); } else { mpfr_set(r22376, r22366, MPFR_RNDN); };
        if (mpfr_get_si(r22368, MPFR_RNDN)) { mpfr_set(r22377, r22365, MPFR_RNDN); } else { mpfr_set(r22377, r22376, MPFR_RNDN); };
        return mpfr_get_d(r22377, MPFR_RNDN);
}

static mpfr_t r22378, r22379, r22380, r22381, r22382, r22383, r22384, r22385, r22386, r22387, r22388, r22389, r22390;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r22378);
        mpfr_init(r22379);
        mpfr_init_set_str(r22380, "-6.933392427819694e+157", 10, MPFR_RNDN);
        mpfr_init(r22381);
        mpfr_init_set_str(r22382, "1.9695378729101803e+130", 10, MPFR_RNDN);
        mpfr_init(r22383);
        mpfr_init(r22384);
        mpfr_init(r22385);
        mpfr_init(r22386);
        mpfr_init(r22387);
        mpfr_init(r22388);
        mpfr_init(r22389);
        mpfr_init(r22390);
}

double f_dm(double re, double im) {
        mpfr_set_d(r22378, re, MPFR_RNDN);
        mpfr_neg(r22379, r22378, MPFR_RNDN);
        ;
        mpfr_set_si(r22381, mpfr_cmp(r22379, r22380) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22383, mpfr_cmp(r22379, r22382) <= 0, MPFR_RNDN);
        mpfr_mul(r22384, r22378, r22378, MPFR_RNDN);
        mpfr_set_d(r22385, im, MPFR_RNDN);
        mpfr_mul(r22386, r22385, r22385, MPFR_RNDN);
        mpfr_add(r22387, r22384, r22386, MPFR_RNDN);
        mpfr_sqrt(r22388, r22387, MPFR_RNDN);
        if (mpfr_get_si(r22383, MPFR_RNDN)) { mpfr_set(r22389, r22388, MPFR_RNDN); } else { mpfr_set(r22389, r22379, MPFR_RNDN); };
        if (mpfr_get_si(r22381, MPFR_RNDN)) { mpfr_set(r22390, r22378, MPFR_RNDN); } else { mpfr_set(r22390, r22389, MPFR_RNDN); };
        return mpfr_get_d(r22390, MPFR_RNDN);
}

