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

char *name = "FRP.Yampa.Vector3:vector3Rho from Yampa-0.10.2";

double f_if(float x, float y, float z) {
        float r51498 = x;
        float r51499 = r51498 * r51498;
        float r51500 = y;
        float r51501 = r51500 * r51500;
        float r51502 = r51499 + r51501;
        float r51503 = z;
        float r51504 = r51503 * r51503;
        float r51505 = r51502 + r51504;
        float r51506 = sqrt(r51505);
        return r51506;
}

double f_id(double x, double y, double z) {
        double r51507 = x;
        double r51508 = r51507 * r51507;
        double r51509 = y;
        double r51510 = r51509 * r51509;
        double r51511 = r51508 + r51510;
        double r51512 = z;
        double r51513 = r51512 * r51512;
        double r51514 = r51511 + r51513;
        double r51515 = sqrt(r51514);
        return r51515;
}


double f_of(float x, float y, float z) {
        float r51516 = x;
        float r51517 = -1.2462366172629023e+154;
        bool r51518 = r51516 <= r51517;
        float r51519 = -r51516;
        float r51520 = 1.8809713604828146e+158;
        bool r51521 = r51516 <= r51520;
        float r51522 = r51516 * r51516;
        float r51523 = y;
        float r51524 = r51523 * r51523;
        float r51525 = r51522 + r51524;
        float r51526 = z;
        float r51527 = r51526 * r51526;
        float r51528 = r51525 + r51527;
        float r51529 = sqrt(r51528);
        float r51530 = r51521 ? r51529 : r51516;
        float r51531 = r51518 ? r51519 : r51530;
        return r51531;
}

double f_od(double x, double y, double z) {
        double r51532 = x;
        double r51533 = -1.2462366172629023e+154;
        bool r51534 = r51532 <= r51533;
        double r51535 = -r51532;
        double r51536 = 1.8809713604828146e+158;
        bool r51537 = r51532 <= r51536;
        double r51538 = r51532 * r51532;
        double r51539 = y;
        double r51540 = r51539 * r51539;
        double r51541 = r51538 + r51540;
        double r51542 = z;
        double r51543 = r51542 * r51542;
        double r51544 = r51541 + r51543;
        double r51545 = sqrt(r51544);
        double r51546 = r51537 ? r51545 : r51532;
        double r51547 = r51534 ? r51535 : r51546;
        return r51547;
}

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 r51548, r51549, r51550, r51551, r51552, r51553, r51554, r51555, r51556;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51548);
        mpfr_init(r51549);
        mpfr_init(r51550);
        mpfr_init(r51551);
        mpfr_init(r51552);
        mpfr_init(r51553);
        mpfr_init(r51554);
        mpfr_init(r51555);
        mpfr_init(r51556);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51548, x, MPFR_RNDN);
        mpfr_mul(r51549, r51548, r51548, MPFR_RNDN);
        mpfr_set_d(r51550, y, MPFR_RNDN);
        mpfr_mul(r51551, r51550, r51550, MPFR_RNDN);
        mpfr_add(r51552, r51549, r51551, MPFR_RNDN);
        mpfr_set_d(r51553, z, MPFR_RNDN);
        mpfr_mul(r51554, r51553, r51553, MPFR_RNDN);
        mpfr_add(r51555, r51552, r51554, MPFR_RNDN);
        mpfr_sqrt(r51556, r51555, MPFR_RNDN);
        return mpfr_get_d(r51556, MPFR_RNDN);
}

static mpfr_t r51557, r51558, r51559, r51560, r51561, r51562, r51563, r51564, r51565, r51566, r51567, r51568, r51569, r51570, r51571, r51572;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51557);
        mpfr_init_set_str(r51558, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51559);
        mpfr_init(r51560);
        mpfr_init_set_str(r51561, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51562);
        mpfr_init(r51563);
        mpfr_init(r51564);
        mpfr_init(r51565);
        mpfr_init(r51566);
        mpfr_init(r51567);
        mpfr_init(r51568);
        mpfr_init(r51569);
        mpfr_init(r51570);
        mpfr_init(r51571);
        mpfr_init(r51572);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51557, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51559, mpfr_cmp(r51557, r51558) <= 0, MPFR_RNDN);
        mpfr_neg(r51560, r51557, MPFR_RNDN);
        ;
        mpfr_set_si(r51562, mpfr_cmp(r51557, r51561) <= 0, MPFR_RNDN);
        mpfr_mul(r51563, r51557, r51557, MPFR_RNDN);
        mpfr_set_d(r51564, y, MPFR_RNDN);
        mpfr_mul(r51565, r51564, r51564, MPFR_RNDN);
        mpfr_add(r51566, r51563, r51565, MPFR_RNDN);
        mpfr_set_d(r51567, z, MPFR_RNDN);
        mpfr_mul(r51568, r51567, r51567, MPFR_RNDN);
        mpfr_add(r51569, r51566, r51568, MPFR_RNDN);
        mpfr_sqrt(r51570, r51569, MPFR_RNDN);
        if (mpfr_get_si(r51562, MPFR_RNDN)) { mpfr_set(r51571, r51570, MPFR_RNDN); } else { mpfr_set(r51571, r51557, MPFR_RNDN); };
        if (mpfr_get_si(r51559, MPFR_RNDN)) { mpfr_set(r51572, r51560, MPFR_RNDN); } else { mpfr_set(r51572, r51571, MPFR_RNDN); };
        return mpfr_get_d(r51572, MPFR_RNDN);
}

static mpfr_t r51573, r51574, r51575, r51576, r51577, r51578, r51579, r51580, r51581, r51582, r51583, r51584, r51585, r51586, r51587, r51588;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51573);
        mpfr_init_set_str(r51574, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51575);
        mpfr_init(r51576);
        mpfr_init_set_str(r51577, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51578);
        mpfr_init(r51579);
        mpfr_init(r51580);
        mpfr_init(r51581);
        mpfr_init(r51582);
        mpfr_init(r51583);
        mpfr_init(r51584);
        mpfr_init(r51585);
        mpfr_init(r51586);
        mpfr_init(r51587);
        mpfr_init(r51588);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51573, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51575, mpfr_cmp(r51573, r51574) <= 0, MPFR_RNDN);
        mpfr_neg(r51576, r51573, MPFR_RNDN);
        ;
        mpfr_set_si(r51578, mpfr_cmp(r51573, r51577) <= 0, MPFR_RNDN);
        mpfr_mul(r51579, r51573, r51573, MPFR_RNDN);
        mpfr_set_d(r51580, y, MPFR_RNDN);
        mpfr_mul(r51581, r51580, r51580, MPFR_RNDN);
        mpfr_add(r51582, r51579, r51581, MPFR_RNDN);
        mpfr_set_d(r51583, z, MPFR_RNDN);
        mpfr_mul(r51584, r51583, r51583, MPFR_RNDN);
        mpfr_add(r51585, r51582, r51584, MPFR_RNDN);
        mpfr_sqrt(r51586, r51585, MPFR_RNDN);
        if (mpfr_get_si(r51578, MPFR_RNDN)) { mpfr_set(r51587, r51586, MPFR_RNDN); } else { mpfr_set(r51587, r51573, MPFR_RNDN); };
        if (mpfr_get_si(r51575, MPFR_RNDN)) { mpfr_set(r51588, r51576, MPFR_RNDN); } else { mpfr_set(r51588, r51587, MPFR_RNDN); };
        return mpfr_get_d(r51588, MPFR_RNDN);
}

