#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 r51492 = x;
        float r51493 = r51492 * r51492;
        float r51494 = y;
        float r51495 = r51494 * r51494;
        float r51496 = r51493 + r51495;
        float r51497 = z;
        float r51498 = r51497 * r51497;
        float r51499 = r51496 + r51498;
        float r51500 = sqrt(r51499);
        return r51500;
}

double f_id(double x, double y, double z) {
        double r51501 = x;
        double r51502 = r51501 * r51501;
        double r51503 = y;
        double r51504 = r51503 * r51503;
        double r51505 = r51502 + r51504;
        double r51506 = z;
        double r51507 = r51506 * r51506;
        double r51508 = r51505 + r51507;
        double r51509 = sqrt(r51508);
        return r51509;
}


double f_of(float x, float y, float z) {
        float r51510 = x;
        float r51511 = -2.013881564242057e+151;
        bool r51512 = r51510 <= r51511;
        float r51513 = -r51510;
        float r51514 = 1.6698180397332825e+161;
        bool r51515 = r51510 <= r51514;
        float r51516 = r51510 * r51510;
        float r51517 = y;
        float r51518 = r51517 * r51517;
        float r51519 = r51516 + r51518;
        float r51520 = z;
        float r51521 = r51520 * r51520;
        float r51522 = r51519 + r51521;
        float r51523 = sqrt(r51522);
        float r51524 = r51515 ? r51523 : r51510;
        float r51525 = r51512 ? r51513 : r51524;
        return r51525;
}

double f_od(double x, double y, double z) {
        double r51526 = x;
        double r51527 = -2.013881564242057e+151;
        bool r51528 = r51526 <= r51527;
        double r51529 = -r51526;
        double r51530 = 1.6698180397332825e+161;
        bool r51531 = r51526 <= r51530;
        double r51532 = r51526 * r51526;
        double r51533 = y;
        double r51534 = r51533 * r51533;
        double r51535 = r51532 + r51534;
        double r51536 = z;
        double r51537 = r51536 * r51536;
        double r51538 = r51535 + r51537;
        double r51539 = sqrt(r51538);
        double r51540 = r51531 ? r51539 : r51526;
        double r51541 = r51528 ? r51529 : r51540;
        return r51541;
}

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 r51542, r51543, r51544, r51545, r51546, r51547, r51548, r51549, r51550;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51542);
        mpfr_init(r51543);
        mpfr_init(r51544);
        mpfr_init(r51545);
        mpfr_init(r51546);
        mpfr_init(r51547);
        mpfr_init(r51548);
        mpfr_init(r51549);
        mpfr_init(r51550);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51542, x, MPFR_RNDN);
        mpfr_mul(r51543, r51542, r51542, MPFR_RNDN);
        mpfr_set_d(r51544, y, MPFR_RNDN);
        mpfr_mul(r51545, r51544, r51544, MPFR_RNDN);
        mpfr_add(r51546, r51543, r51545, MPFR_RNDN);
        mpfr_set_d(r51547, z, MPFR_RNDN);
        mpfr_mul(r51548, r51547, r51547, MPFR_RNDN);
        mpfr_add(r51549, r51546, r51548, MPFR_RNDN);
        mpfr_sqrt(r51550, r51549, MPFR_RNDN);
        return mpfr_get_d(r51550, MPFR_RNDN);
}

static mpfr_t r51551, r51552, r51553, r51554, r51555, r51556, r51557, r51558, r51559, r51560, r51561, r51562, r51563, r51564, r51565, r51566;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51551);
        mpfr_init_set_str(r51552, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51553);
        mpfr_init(r51554);
        mpfr_init_set_str(r51555, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51556);
        mpfr_init(r51557);
        mpfr_init(r51558);
        mpfr_init(r51559);
        mpfr_init(r51560);
        mpfr_init(r51561);
        mpfr_init(r51562);
        mpfr_init(r51563);
        mpfr_init(r51564);
        mpfr_init(r51565);
        mpfr_init(r51566);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51551, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51553, mpfr_cmp(r51551, r51552) <= 0, MPFR_RNDN);
        mpfr_neg(r51554, r51551, MPFR_RNDN);
        ;
        mpfr_set_si(r51556, mpfr_cmp(r51551, r51555) <= 0, MPFR_RNDN);
        mpfr_mul(r51557, r51551, r51551, MPFR_RNDN);
        mpfr_set_d(r51558, y, MPFR_RNDN);
        mpfr_mul(r51559, r51558, r51558, MPFR_RNDN);
        mpfr_add(r51560, r51557, r51559, MPFR_RNDN);
        mpfr_set_d(r51561, z, MPFR_RNDN);
        mpfr_mul(r51562, r51561, r51561, MPFR_RNDN);
        mpfr_add(r51563, r51560, r51562, MPFR_RNDN);
        mpfr_sqrt(r51564, r51563, MPFR_RNDN);
        if (mpfr_get_si(r51556, MPFR_RNDN)) { mpfr_set(r51565, r51564, MPFR_RNDN); } else { mpfr_set(r51565, r51551, MPFR_RNDN); };
        if (mpfr_get_si(r51553, MPFR_RNDN)) { mpfr_set(r51566, r51554, MPFR_RNDN); } else { mpfr_set(r51566, r51565, MPFR_RNDN); };
        return mpfr_get_d(r51566, MPFR_RNDN);
}

static mpfr_t r51567, r51568, r51569, r51570, r51571, r51572, r51573, r51574, r51575, r51576, r51577, r51578, r51579, r51580, r51581, r51582;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51567);
        mpfr_init_set_str(r51568, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51569);
        mpfr_init(r51570);
        mpfr_init_set_str(r51571, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51572);
        mpfr_init(r51573);
        mpfr_init(r51574);
        mpfr_init(r51575);
        mpfr_init(r51576);
        mpfr_init(r51577);
        mpfr_init(r51578);
        mpfr_init(r51579);
        mpfr_init(r51580);
        mpfr_init(r51581);
        mpfr_init(r51582);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51567, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51569, mpfr_cmp(r51567, r51568) <= 0, MPFR_RNDN);
        mpfr_neg(r51570, r51567, MPFR_RNDN);
        ;
        mpfr_set_si(r51572, mpfr_cmp(r51567, r51571) <= 0, MPFR_RNDN);
        mpfr_mul(r51573, r51567, r51567, MPFR_RNDN);
        mpfr_set_d(r51574, y, MPFR_RNDN);
        mpfr_mul(r51575, r51574, r51574, MPFR_RNDN);
        mpfr_add(r51576, r51573, r51575, MPFR_RNDN);
        mpfr_set_d(r51577, z, MPFR_RNDN);
        mpfr_mul(r51578, r51577, r51577, MPFR_RNDN);
        mpfr_add(r51579, r51576, r51578, MPFR_RNDN);
        mpfr_sqrt(r51580, r51579, MPFR_RNDN);
        if (mpfr_get_si(r51572, MPFR_RNDN)) { mpfr_set(r51581, r51580, MPFR_RNDN); } else { mpfr_set(r51581, r51567, MPFR_RNDN); };
        if (mpfr_get_si(r51569, MPFR_RNDN)) { mpfr_set(r51582, r51570, MPFR_RNDN); } else { mpfr_set(r51582, r51581, MPFR_RNDN); };
        return mpfr_get_d(r51582, MPFR_RNDN);
}

