#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 r51460 = x;
        float r51461 = r51460 * r51460;
        float r51462 = y;
        float r51463 = r51462 * r51462;
        float r51464 = r51461 + r51463;
        float r51465 = z;
        float r51466 = r51465 * r51465;
        float r51467 = r51464 + r51466;
        float r51468 = sqrt(r51467);
        return r51468;
}

double f_id(double x, double y, double z) {
        double r51469 = x;
        double r51470 = r51469 * r51469;
        double r51471 = y;
        double r51472 = r51471 * r51471;
        double r51473 = r51470 + r51472;
        double r51474 = z;
        double r51475 = r51474 * r51474;
        double r51476 = r51473 + r51475;
        double r51477 = sqrt(r51476);
        return r51477;
}


double f_of(float x, float y, float z) {
        float r51478 = x;
        float r51479 = -1.2462366172629023e+154;
        bool r51480 = r51478 <= r51479;
        float r51481 = -r51478;
        float r51482 = 1.8809713604828146e+158;
        bool r51483 = r51478 <= r51482;
        float r51484 = r51478 * r51478;
        float r51485 = y;
        float r51486 = r51485 * r51485;
        float r51487 = r51484 + r51486;
        float r51488 = z;
        float r51489 = r51488 * r51488;
        float r51490 = r51487 + r51489;
        float r51491 = sqrt(r51490);
        float r51492 = r51483 ? r51491 : r51478;
        float r51493 = r51480 ? r51481 : r51492;
        return r51493;
}

double f_od(double x, double y, double z) {
        double r51494 = x;
        double r51495 = -1.2462366172629023e+154;
        bool r51496 = r51494 <= r51495;
        double r51497 = -r51494;
        double r51498 = 1.8809713604828146e+158;
        bool r51499 = r51494 <= r51498;
        double r51500 = r51494 * r51494;
        double r51501 = y;
        double r51502 = r51501 * r51501;
        double r51503 = r51500 + r51502;
        double r51504 = z;
        double r51505 = r51504 * r51504;
        double r51506 = r51503 + r51505;
        double r51507 = sqrt(r51506);
        double r51508 = r51499 ? r51507 : r51494;
        double r51509 = r51496 ? r51497 : r51508;
        return r51509;
}

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 r51510, r51511, r51512, r51513, r51514, r51515, r51516, r51517, r51518;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51510);
        mpfr_init(r51511);
        mpfr_init(r51512);
        mpfr_init(r51513);
        mpfr_init(r51514);
        mpfr_init(r51515);
        mpfr_init(r51516);
        mpfr_init(r51517);
        mpfr_init(r51518);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51510, x, MPFR_RNDN);
        mpfr_mul(r51511, r51510, r51510, MPFR_RNDN);
        mpfr_set_d(r51512, y, MPFR_RNDN);
        mpfr_mul(r51513, r51512, r51512, MPFR_RNDN);
        mpfr_add(r51514, r51511, r51513, MPFR_RNDN);
        mpfr_set_d(r51515, z, MPFR_RNDN);
        mpfr_mul(r51516, r51515, r51515, MPFR_RNDN);
        mpfr_add(r51517, r51514, r51516, MPFR_RNDN);
        mpfr_sqrt(r51518, r51517, MPFR_RNDN);
        return mpfr_get_d(r51518, MPFR_RNDN);
}

static mpfr_t r51519, r51520, r51521, r51522, r51523, r51524, r51525, r51526, r51527, r51528, r51529, r51530, r51531, r51532, r51533, r51534;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51519);
        mpfr_init_set_str(r51520, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51521);
        mpfr_init(r51522);
        mpfr_init_set_str(r51523, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51524);
        mpfr_init(r51525);
        mpfr_init(r51526);
        mpfr_init(r51527);
        mpfr_init(r51528);
        mpfr_init(r51529);
        mpfr_init(r51530);
        mpfr_init(r51531);
        mpfr_init(r51532);
        mpfr_init(r51533);
        mpfr_init(r51534);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51519, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51521, mpfr_cmp(r51519, r51520) <= 0, MPFR_RNDN);
        mpfr_neg(r51522, r51519, MPFR_RNDN);
        ;
        mpfr_set_si(r51524, mpfr_cmp(r51519, r51523) <= 0, MPFR_RNDN);
        mpfr_mul(r51525, r51519, r51519, MPFR_RNDN);
        mpfr_set_d(r51526, y, MPFR_RNDN);
        mpfr_mul(r51527, r51526, r51526, MPFR_RNDN);
        mpfr_add(r51528, r51525, r51527, MPFR_RNDN);
        mpfr_set_d(r51529, z, MPFR_RNDN);
        mpfr_mul(r51530, r51529, r51529, MPFR_RNDN);
        mpfr_add(r51531, r51528, r51530, MPFR_RNDN);
        mpfr_sqrt(r51532, r51531, MPFR_RNDN);
        if (mpfr_get_si(r51524, MPFR_RNDN)) { mpfr_set(r51533, r51532, MPFR_RNDN); } else { mpfr_set(r51533, r51519, MPFR_RNDN); };
        if (mpfr_get_si(r51521, MPFR_RNDN)) { mpfr_set(r51534, r51522, MPFR_RNDN); } else { mpfr_set(r51534, r51533, MPFR_RNDN); };
        return mpfr_get_d(r51534, MPFR_RNDN);
}

static mpfr_t r51535, r51536, r51537, r51538, r51539, r51540, r51541, r51542, r51543, r51544, r51545, r51546, r51547, r51548, r51549, r51550;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51535);
        mpfr_init_set_str(r51536, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51537);
        mpfr_init(r51538);
        mpfr_init_set_str(r51539, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51540);
        mpfr_init(r51541);
        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_dm(double x, double y, double z) {
        mpfr_set_d(r51535, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51537, mpfr_cmp(r51535, r51536) <= 0, MPFR_RNDN);
        mpfr_neg(r51538, r51535, MPFR_RNDN);
        ;
        mpfr_set_si(r51540, mpfr_cmp(r51535, r51539) <= 0, MPFR_RNDN);
        mpfr_mul(r51541, r51535, r51535, MPFR_RNDN);
        mpfr_set_d(r51542, y, MPFR_RNDN);
        mpfr_mul(r51543, r51542, r51542, MPFR_RNDN);
        mpfr_add(r51544, r51541, r51543, MPFR_RNDN);
        mpfr_set_d(r51545, z, MPFR_RNDN);
        mpfr_mul(r51546, r51545, r51545, MPFR_RNDN);
        mpfr_add(r51547, r51544, r51546, MPFR_RNDN);
        mpfr_sqrt(r51548, r51547, MPFR_RNDN);
        if (mpfr_get_si(r51540, MPFR_RNDN)) { mpfr_set(r51549, r51548, MPFR_RNDN); } else { mpfr_set(r51549, r51535, MPFR_RNDN); };
        if (mpfr_get_si(r51537, MPFR_RNDN)) { mpfr_set(r51550, r51538, MPFR_RNDN); } else { mpfr_set(r51550, r51549, MPFR_RNDN); };
        return mpfr_get_d(r51550, MPFR_RNDN);
}

