#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 r51692 = x;
        float r51693 = r51692 * r51692;
        float r51694 = y;
        float r51695 = r51694 * r51694;
        float r51696 = r51693 + r51695;
        float r51697 = z;
        float r51698 = r51697 * r51697;
        float r51699 = r51696 + r51698;
        float r51700 = sqrt(r51699);
        return r51700;
}

double f_id(double x, double y, double z) {
        double r51701 = x;
        double r51702 = r51701 * r51701;
        double r51703 = y;
        double r51704 = r51703 * r51703;
        double r51705 = r51702 + r51704;
        double r51706 = z;
        double r51707 = r51706 * r51706;
        double r51708 = r51705 + r51707;
        double r51709 = sqrt(r51708);
        return r51709;
}


double f_of(float x, float y, float z) {
        float r51710 = x;
        float r51711 = -1.2462366172629023e+154;
        bool r51712 = r51710 <= r51711;
        float r51713 = -r51710;
        float r51714 = 1.8809713604828146e+158;
        bool r51715 = r51710 <= r51714;
        float r51716 = r51710 * r51710;
        float r51717 = y;
        float r51718 = r51717 * r51717;
        float r51719 = r51716 + r51718;
        float r51720 = z;
        float r51721 = r51720 * r51720;
        float r51722 = r51719 + r51721;
        float r51723 = sqrt(r51722);
        float r51724 = r51715 ? r51723 : r51710;
        float r51725 = r51712 ? r51713 : r51724;
        return r51725;
}

double f_od(double x, double y, double z) {
        double r51726 = x;
        double r51727 = -1.2462366172629023e+154;
        bool r51728 = r51726 <= r51727;
        double r51729 = -r51726;
        double r51730 = 1.8809713604828146e+158;
        bool r51731 = r51726 <= r51730;
        double r51732 = r51726 * r51726;
        double r51733 = y;
        double r51734 = r51733 * r51733;
        double r51735 = r51732 + r51734;
        double r51736 = z;
        double r51737 = r51736 * r51736;
        double r51738 = r51735 + r51737;
        double r51739 = sqrt(r51738);
        double r51740 = r51731 ? r51739 : r51726;
        double r51741 = r51728 ? r51729 : r51740;
        return r51741;
}

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 r51742, r51743, r51744, r51745, r51746, r51747, r51748, r51749, r51750;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51742);
        mpfr_init(r51743);
        mpfr_init(r51744);
        mpfr_init(r51745);
        mpfr_init(r51746);
        mpfr_init(r51747);
        mpfr_init(r51748);
        mpfr_init(r51749);
        mpfr_init(r51750);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51742, x, MPFR_RNDN);
        mpfr_mul(r51743, r51742, r51742, MPFR_RNDN);
        mpfr_set_d(r51744, y, MPFR_RNDN);
        mpfr_mul(r51745, r51744, r51744, MPFR_RNDN);
        mpfr_add(r51746, r51743, r51745, MPFR_RNDN);
        mpfr_set_d(r51747, z, MPFR_RNDN);
        mpfr_mul(r51748, r51747, r51747, MPFR_RNDN);
        mpfr_add(r51749, r51746, r51748, MPFR_RNDN);
        mpfr_sqrt(r51750, r51749, MPFR_RNDN);
        return mpfr_get_d(r51750, MPFR_RNDN);
}

static mpfr_t r51751, r51752, r51753, r51754, r51755, r51756, r51757, r51758, r51759, r51760, r51761, r51762, r51763, r51764, r51765, r51766;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51751);
        mpfr_init_set_str(r51752, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51753);
        mpfr_init(r51754);
        mpfr_init_set_str(r51755, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51756);
        mpfr_init(r51757);
        mpfr_init(r51758);
        mpfr_init(r51759);
        mpfr_init(r51760);
        mpfr_init(r51761);
        mpfr_init(r51762);
        mpfr_init(r51763);
        mpfr_init(r51764);
        mpfr_init(r51765);
        mpfr_init(r51766);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51751, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51753, mpfr_cmp(r51751, r51752) <= 0, MPFR_RNDN);
        mpfr_neg(r51754, r51751, MPFR_RNDN);
        ;
        mpfr_set_si(r51756, mpfr_cmp(r51751, r51755) <= 0, MPFR_RNDN);
        mpfr_mul(r51757, r51751, r51751, MPFR_RNDN);
        mpfr_set_d(r51758, y, MPFR_RNDN);
        mpfr_mul(r51759, r51758, r51758, MPFR_RNDN);
        mpfr_add(r51760, r51757, r51759, MPFR_RNDN);
        mpfr_set_d(r51761, z, MPFR_RNDN);
        mpfr_mul(r51762, r51761, r51761, MPFR_RNDN);
        mpfr_add(r51763, r51760, r51762, MPFR_RNDN);
        mpfr_sqrt(r51764, r51763, MPFR_RNDN);
        if (mpfr_get_si(r51756, MPFR_RNDN)) { mpfr_set(r51765, r51764, MPFR_RNDN); } else { mpfr_set(r51765, r51751, MPFR_RNDN); };
        if (mpfr_get_si(r51753, MPFR_RNDN)) { mpfr_set(r51766, r51754, MPFR_RNDN); } else { mpfr_set(r51766, r51765, MPFR_RNDN); };
        return mpfr_get_d(r51766, MPFR_RNDN);
}

static mpfr_t r51767, r51768, r51769, r51770, r51771, r51772, r51773, r51774, r51775, r51776, r51777, r51778, r51779, r51780, r51781, r51782;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51767);
        mpfr_init_set_str(r51768, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r51769);
        mpfr_init(r51770);
        mpfr_init_set_str(r51771, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r51772);
        mpfr_init(r51773);
        mpfr_init(r51774);
        mpfr_init(r51775);
        mpfr_init(r51776);
        mpfr_init(r51777);
        mpfr_init(r51778);
        mpfr_init(r51779);
        mpfr_init(r51780);
        mpfr_init(r51781);
        mpfr_init(r51782);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51767, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51769, mpfr_cmp(r51767, r51768) <= 0, MPFR_RNDN);
        mpfr_neg(r51770, r51767, MPFR_RNDN);
        ;
        mpfr_set_si(r51772, mpfr_cmp(r51767, r51771) <= 0, MPFR_RNDN);
        mpfr_mul(r51773, r51767, r51767, MPFR_RNDN);
        mpfr_set_d(r51774, y, MPFR_RNDN);
        mpfr_mul(r51775, r51774, r51774, MPFR_RNDN);
        mpfr_add(r51776, r51773, r51775, MPFR_RNDN);
        mpfr_set_d(r51777, z, MPFR_RNDN);
        mpfr_mul(r51778, r51777, r51777, MPFR_RNDN);
        mpfr_add(r51779, r51776, r51778, MPFR_RNDN);
        mpfr_sqrt(r51780, r51779, MPFR_RNDN);
        if (mpfr_get_si(r51772, MPFR_RNDN)) { mpfr_set(r51781, r51780, MPFR_RNDN); } else { mpfr_set(r51781, r51767, MPFR_RNDN); };
        if (mpfr_get_si(r51769, MPFR_RNDN)) { mpfr_set(r51782, r51770, MPFR_RNDN); } else { mpfr_set(r51782, r51781, MPFR_RNDN); };
        return mpfr_get_d(r51782, MPFR_RNDN);
}

