#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 r51404 = x;
        float r51405 = r51404 * r51404;
        float r51406 = y;
        float r51407 = r51406 * r51406;
        float r51408 = r51405 + r51407;
        float r51409 = z;
        float r51410 = r51409 * r51409;
        float r51411 = r51408 + r51410;
        float r51412 = sqrt(r51411);
        return r51412;
}

double f_id(double x, double y, double z) {
        double r51413 = x;
        double r51414 = r51413 * r51413;
        double r51415 = y;
        double r51416 = r51415 * r51415;
        double r51417 = r51414 + r51416;
        double r51418 = z;
        double r51419 = r51418 * r51418;
        double r51420 = r51417 + r51419;
        double r51421 = sqrt(r51420);
        return r51421;
}


double f_of(float x, float y, float z) {
        float r51422 = x;
        float r51423 = -2.013881564242057e+151;
        bool r51424 = r51422 <= r51423;
        float r51425 = -r51422;
        float r51426 = 1.6698180397332825e+161;
        bool r51427 = r51422 <= r51426;
        float r51428 = r51422 * r51422;
        float r51429 = y;
        float r51430 = r51429 * r51429;
        float r51431 = r51428 + r51430;
        float r51432 = z;
        float r51433 = r51432 * r51432;
        float r51434 = r51431 + r51433;
        float r51435 = sqrt(r51434);
        float r51436 = r51427 ? r51435 : r51422;
        float r51437 = r51424 ? r51425 : r51436;
        return r51437;
}

double f_od(double x, double y, double z) {
        double r51438 = x;
        double r51439 = -2.013881564242057e+151;
        bool r51440 = r51438 <= r51439;
        double r51441 = -r51438;
        double r51442 = 1.6698180397332825e+161;
        bool r51443 = r51438 <= r51442;
        double r51444 = r51438 * r51438;
        double r51445 = y;
        double r51446 = r51445 * r51445;
        double r51447 = r51444 + r51446;
        double r51448 = z;
        double r51449 = r51448 * r51448;
        double r51450 = r51447 + r51449;
        double r51451 = sqrt(r51450);
        double r51452 = r51443 ? r51451 : r51438;
        double r51453 = r51440 ? r51441 : r51452;
        return r51453;
}

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 r51454, r51455, r51456, r51457, r51458, r51459, r51460, r51461, r51462;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51454);
        mpfr_init(r51455);
        mpfr_init(r51456);
        mpfr_init(r51457);
        mpfr_init(r51458);
        mpfr_init(r51459);
        mpfr_init(r51460);
        mpfr_init(r51461);
        mpfr_init(r51462);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51454, x, MPFR_RNDN);
        mpfr_mul(r51455, r51454, r51454, MPFR_RNDN);
        mpfr_set_d(r51456, y, MPFR_RNDN);
        mpfr_mul(r51457, r51456, r51456, MPFR_RNDN);
        mpfr_add(r51458, r51455, r51457, MPFR_RNDN);
        mpfr_set_d(r51459, z, MPFR_RNDN);
        mpfr_mul(r51460, r51459, r51459, MPFR_RNDN);
        mpfr_add(r51461, r51458, r51460, MPFR_RNDN);
        mpfr_sqrt(r51462, r51461, MPFR_RNDN);
        return mpfr_get_d(r51462, MPFR_RNDN);
}

static mpfr_t r51463, r51464, r51465, r51466, r51467, r51468, r51469, r51470, r51471, r51472, r51473, r51474, r51475, r51476, r51477, r51478;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51463);
        mpfr_init_set_str(r51464, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51465);
        mpfr_init(r51466);
        mpfr_init_set_str(r51467, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51468);
        mpfr_init(r51469);
        mpfr_init(r51470);
        mpfr_init(r51471);
        mpfr_init(r51472);
        mpfr_init(r51473);
        mpfr_init(r51474);
        mpfr_init(r51475);
        mpfr_init(r51476);
        mpfr_init(r51477);
        mpfr_init(r51478);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51463, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51465, mpfr_cmp(r51463, r51464) <= 0, MPFR_RNDN);
        mpfr_neg(r51466, r51463, MPFR_RNDN);
        ;
        mpfr_set_si(r51468, mpfr_cmp(r51463, r51467) <= 0, MPFR_RNDN);
        mpfr_mul(r51469, r51463, r51463, MPFR_RNDN);
        mpfr_set_d(r51470, y, MPFR_RNDN);
        mpfr_mul(r51471, r51470, r51470, MPFR_RNDN);
        mpfr_add(r51472, r51469, r51471, MPFR_RNDN);
        mpfr_set_d(r51473, z, MPFR_RNDN);
        mpfr_mul(r51474, r51473, r51473, MPFR_RNDN);
        mpfr_add(r51475, r51472, r51474, MPFR_RNDN);
        mpfr_sqrt(r51476, r51475, MPFR_RNDN);
        if (mpfr_get_si(r51468, MPFR_RNDN)) { mpfr_set(r51477, r51476, MPFR_RNDN); } else { mpfr_set(r51477, r51463, MPFR_RNDN); };
        if (mpfr_get_si(r51465, MPFR_RNDN)) { mpfr_set(r51478, r51466, MPFR_RNDN); } else { mpfr_set(r51478, r51477, MPFR_RNDN); };
        return mpfr_get_d(r51478, MPFR_RNDN);
}

static mpfr_t r51479, r51480, r51481, r51482, r51483, r51484, r51485, r51486, r51487, r51488, r51489, r51490, r51491, r51492, r51493, r51494;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51479);
        mpfr_init_set_str(r51480, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51481);
        mpfr_init(r51482);
        mpfr_init_set_str(r51483, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51484);
        mpfr_init(r51485);
        mpfr_init(r51486);
        mpfr_init(r51487);
        mpfr_init(r51488);
        mpfr_init(r51489);
        mpfr_init(r51490);
        mpfr_init(r51491);
        mpfr_init(r51492);
        mpfr_init(r51493);
        mpfr_init(r51494);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51479, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51481, mpfr_cmp(r51479, r51480) <= 0, MPFR_RNDN);
        mpfr_neg(r51482, r51479, MPFR_RNDN);
        ;
        mpfr_set_si(r51484, mpfr_cmp(r51479, r51483) <= 0, MPFR_RNDN);
        mpfr_mul(r51485, r51479, r51479, MPFR_RNDN);
        mpfr_set_d(r51486, y, MPFR_RNDN);
        mpfr_mul(r51487, r51486, r51486, MPFR_RNDN);
        mpfr_add(r51488, r51485, r51487, MPFR_RNDN);
        mpfr_set_d(r51489, z, MPFR_RNDN);
        mpfr_mul(r51490, r51489, r51489, MPFR_RNDN);
        mpfr_add(r51491, r51488, r51490, MPFR_RNDN);
        mpfr_sqrt(r51492, r51491, MPFR_RNDN);
        if (mpfr_get_si(r51484, MPFR_RNDN)) { mpfr_set(r51493, r51492, MPFR_RNDN); } else { mpfr_set(r51493, r51479, MPFR_RNDN); };
        if (mpfr_get_si(r51481, MPFR_RNDN)) { mpfr_set(r51494, r51482, MPFR_RNDN); } else { mpfr_set(r51494, r51493, MPFR_RNDN); };
        return mpfr_get_d(r51494, MPFR_RNDN);
}

