#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 r22647 = re;
        float r22648 = r22647 * r22647;
        float r22649 = im;
        float r22650 = r22649 * r22649;
        float r22651 = r22648 + r22650;
        float r22652 = sqrt(r22651);
        return r22652;
}

double f_id(double re, double im) {
        double r22653 = re;
        double r22654 = r22653 * r22653;
        double r22655 = im;
        double r22656 = r22655 * r22655;
        double r22657 = r22654 + r22656;
        double r22658 = sqrt(r22657);
        return r22658;
}


double f_of(float re, float im) {
        float r22659 = re;
        float r22660 = -r22659;
        float r22661 = -1.0534237471986007e+144;
        bool r22662 = r22660 <= r22661;
        float r22663 = -7.855272437351815e-200;
        bool r22664 = r22660 <= r22663;
        float r22665 = r22659 * r22659;
        float r22666 = im;
        float r22667 = r22666 * r22666;
        float r22668 = r22665 + r22667;
        float r22669 = sqrt(r22668);
        float r22670 = 1.8009350273539524e-255;
        bool r22671 = r22660 <= r22670;
        float r22672 = 6.158089157670478e+121;
        bool r22673 = r22660 <= r22672;
        float r22674 = r22673 ? r22669 : r22660;
        float r22675 = r22671 ? r22666 : r22674;
        float r22676 = r22664 ? r22669 : r22675;
        float r22677 = r22662 ? r22659 : r22676;
        return r22677;
}

double f_od(double re, double im) {
        double r22678 = re;
        double r22679 = -r22678;
        double r22680 = -1.0534237471986007e+144;
        bool r22681 = r22679 <= r22680;
        double r22682 = -7.855272437351815e-200;
        bool r22683 = r22679 <= r22682;
        double r22684 = r22678 * r22678;
        double r22685 = im;
        double r22686 = r22685 * r22685;
        double r22687 = r22684 + r22686;
        double r22688 = sqrt(r22687);
        double r22689 = 1.8009350273539524e-255;
        bool r22690 = r22679 <= r22689;
        double r22691 = 6.158089157670478e+121;
        bool r22692 = r22679 <= r22691;
        double r22693 = r22692 ? r22688 : r22679;
        double r22694 = r22690 ? r22685 : r22693;
        double r22695 = r22683 ? r22688 : r22694;
        double r22696 = r22681 ? r22678 : r22695;
        return r22696;
}

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 r22697, r22698, r22699, r22700, r22701, r22702;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r22697);
        mpfr_init(r22698);
        mpfr_init(r22699);
        mpfr_init(r22700);
        mpfr_init(r22701);
        mpfr_init(r22702);
}

double f_im(double re, double im) {
        mpfr_set_d(r22697, re, MPFR_RNDN);
        mpfr_mul(r22698, r22697, r22697, MPFR_RNDN);
        mpfr_set_d(r22699, im, MPFR_RNDN);
        mpfr_mul(r22700, r22699, r22699, MPFR_RNDN);
        mpfr_add(r22701, r22698, r22700, MPFR_RNDN);
        mpfr_sqrt(r22702, r22701, MPFR_RNDN);
        return mpfr_get_d(r22702, MPFR_RNDN);
}

static mpfr_t r22703, r22704, r22705, r22706, r22707, r22708, r22709, r22710, r22711, r22712, r22713, r22714, r22715, r22716, r22717, r22718, r22719, r22720, r22721;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r22703);
        mpfr_init(r22704);
        mpfr_init_set_str(r22705, "-1.0534237471986007e+144", 10, MPFR_RNDN);
        mpfr_init(r22706);
        mpfr_init_set_str(r22707, "-7.855272437351815e-200", 10, MPFR_RNDN);
        mpfr_init(r22708);
        mpfr_init(r22709);
        mpfr_init(r22710);
        mpfr_init(r22711);
        mpfr_init(r22712);
        mpfr_init(r22713);
        mpfr_init_set_str(r22714, "1.8009350273539524e-255", 10, MPFR_RNDN);
        mpfr_init(r22715);
        mpfr_init_set_str(r22716, "6.158089157670478e+121", 10, MPFR_RNDN);
        mpfr_init(r22717);
        mpfr_init(r22718);
        mpfr_init(r22719);
        mpfr_init(r22720);
        mpfr_init(r22721);
}

double f_fm(double re, double im) {
        mpfr_set_d(r22703, re, MPFR_RNDN);
        mpfr_neg(r22704, r22703, MPFR_RNDN);
        ;
        mpfr_set_si(r22706, mpfr_cmp(r22704, r22705) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22708, mpfr_cmp(r22704, r22707) <= 0, MPFR_RNDN);
        mpfr_mul(r22709, r22703, r22703, MPFR_RNDN);
        mpfr_set_d(r22710, im, MPFR_RNDN);
        mpfr_mul(r22711, r22710, r22710, MPFR_RNDN);
        mpfr_add(r22712, r22709, r22711, MPFR_RNDN);
        mpfr_sqrt(r22713, r22712, MPFR_RNDN);
        ;
        mpfr_set_si(r22715, mpfr_cmp(r22704, r22714) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22717, mpfr_cmp(r22704, r22716) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r22717, MPFR_RNDN)) { mpfr_set(r22718, r22713, MPFR_RNDN); } else { mpfr_set(r22718, r22704, MPFR_RNDN); };
        if (mpfr_get_si(r22715, MPFR_RNDN)) { mpfr_set(r22719, r22710, MPFR_RNDN); } else { mpfr_set(r22719, r22718, MPFR_RNDN); };
        if (mpfr_get_si(r22708, MPFR_RNDN)) { mpfr_set(r22720, r22713, MPFR_RNDN); } else { mpfr_set(r22720, r22719, MPFR_RNDN); };
        if (mpfr_get_si(r22706, MPFR_RNDN)) { mpfr_set(r22721, r22703, MPFR_RNDN); } else { mpfr_set(r22721, r22720, MPFR_RNDN); };
        return mpfr_get_d(r22721, MPFR_RNDN);
}

static mpfr_t r22722, r22723, r22724, r22725, r22726, r22727, r22728, r22729, r22730, r22731, r22732, r22733, r22734, r22735, r22736, r22737, r22738, r22739, r22740;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r22722);
        mpfr_init(r22723);
        mpfr_init_set_str(r22724, "-1.0534237471986007e+144", 10, MPFR_RNDN);
        mpfr_init(r22725);
        mpfr_init_set_str(r22726, "-7.855272437351815e-200", 10, MPFR_RNDN);
        mpfr_init(r22727);
        mpfr_init(r22728);
        mpfr_init(r22729);
        mpfr_init(r22730);
        mpfr_init(r22731);
        mpfr_init(r22732);
        mpfr_init_set_str(r22733, "1.8009350273539524e-255", 10, MPFR_RNDN);
        mpfr_init(r22734);
        mpfr_init_set_str(r22735, "6.158089157670478e+121", 10, MPFR_RNDN);
        mpfr_init(r22736);
        mpfr_init(r22737);
        mpfr_init(r22738);
        mpfr_init(r22739);
        mpfr_init(r22740);
}

double f_dm(double re, double im) {
        mpfr_set_d(r22722, re, MPFR_RNDN);
        mpfr_neg(r22723, r22722, MPFR_RNDN);
        ;
        mpfr_set_si(r22725, mpfr_cmp(r22723, r22724) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22727, mpfr_cmp(r22723, r22726) <= 0, MPFR_RNDN);
        mpfr_mul(r22728, r22722, r22722, MPFR_RNDN);
        mpfr_set_d(r22729, im, MPFR_RNDN);
        mpfr_mul(r22730, r22729, r22729, MPFR_RNDN);
        mpfr_add(r22731, r22728, r22730, MPFR_RNDN);
        mpfr_sqrt(r22732, r22731, MPFR_RNDN);
        ;
        mpfr_set_si(r22734, mpfr_cmp(r22723, r22733) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r22736, mpfr_cmp(r22723, r22735) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r22736, MPFR_RNDN)) { mpfr_set(r22737, r22732, MPFR_RNDN); } else { mpfr_set(r22737, r22723, MPFR_RNDN); };
        if (mpfr_get_si(r22734, MPFR_RNDN)) { mpfr_set(r22738, r22729, MPFR_RNDN); } else { mpfr_set(r22738, r22737, MPFR_RNDN); };
        if (mpfr_get_si(r22727, MPFR_RNDN)) { mpfr_set(r22739, r22732, MPFR_RNDN); } else { mpfr_set(r22739, r22738, MPFR_RNDN); };
        if (mpfr_get_si(r22725, MPFR_RNDN)) { mpfr_set(r22740, r22722, MPFR_RNDN); } else { mpfr_set(r22740, r22739, MPFR_RNDN); };
        return mpfr_get_d(r22740, MPFR_RNDN);
}

