#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 r50757 = x;
        float r50758 = r50757 * r50757;
        float r50759 = y;
        float r50760 = r50759 * r50759;
        float r50761 = r50758 + r50760;
        float r50762 = z;
        float r50763 = r50762 * r50762;
        float r50764 = r50761 + r50763;
        float r50765 = sqrt(r50764);
        return r50765;
}

double f_id(double x, double y, double z) {
        double r50766 = x;
        double r50767 = r50766 * r50766;
        double r50768 = y;
        double r50769 = r50768 * r50768;
        double r50770 = r50767 + r50769;
        double r50771 = z;
        double r50772 = r50771 * r50771;
        double r50773 = r50770 + r50772;
        double r50774 = sqrt(r50773);
        return r50774;
}


double f_of(float x, float y, float z) {
        float r50775 = x;
        float r50776 = -1.2462366172629023e+154;
        bool r50777 = r50775 <= r50776;
        float r50778 = -r50775;
        float r50779 = 1.8809713604828146e+158;
        bool r50780 = r50775 <= r50779;
        float r50781 = r50775 * r50775;
        float r50782 = y;
        float r50783 = r50782 * r50782;
        float r50784 = r50781 + r50783;
        float r50785 = z;
        float r50786 = r50785 * r50785;
        float r50787 = r50784 + r50786;
        float r50788 = sqrt(r50787);
        float r50789 = r50780 ? r50788 : r50775;
        float r50790 = r50777 ? r50778 : r50789;
        return r50790;
}

double f_od(double x, double y, double z) {
        double r50791 = x;
        double r50792 = -1.2462366172629023e+154;
        bool r50793 = r50791 <= r50792;
        double r50794 = -r50791;
        double r50795 = 1.8809713604828146e+158;
        bool r50796 = r50791 <= r50795;
        double r50797 = r50791 * r50791;
        double r50798 = y;
        double r50799 = r50798 * r50798;
        double r50800 = r50797 + r50799;
        double r50801 = z;
        double r50802 = r50801 * r50801;
        double r50803 = r50800 + r50802;
        double r50804 = sqrt(r50803);
        double r50805 = r50796 ? r50804 : r50791;
        double r50806 = r50793 ? r50794 : r50805;
        return r50806;
}

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 r50807, r50808, r50809, r50810, r50811, r50812, r50813, r50814, r50815;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50807);
        mpfr_init(r50808);
        mpfr_init(r50809);
        mpfr_init(r50810);
        mpfr_init(r50811);
        mpfr_init(r50812);
        mpfr_init(r50813);
        mpfr_init(r50814);
        mpfr_init(r50815);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r50807, x, MPFR_RNDN);
        mpfr_mul(r50808, r50807, r50807, MPFR_RNDN);
        mpfr_set_d(r50809, y, MPFR_RNDN);
        mpfr_mul(r50810, r50809, r50809, MPFR_RNDN);
        mpfr_add(r50811, r50808, r50810, MPFR_RNDN);
        mpfr_set_d(r50812, z, MPFR_RNDN);
        mpfr_mul(r50813, r50812, r50812, MPFR_RNDN);
        mpfr_add(r50814, r50811, r50813, MPFR_RNDN);
        mpfr_sqrt(r50815, r50814, MPFR_RNDN);
        return mpfr_get_d(r50815, MPFR_RNDN);
}

static mpfr_t r50816, r50817, r50818, r50819, r50820, r50821, r50822, r50823, r50824, r50825, r50826, r50827, r50828, r50829, r50830, r50831;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50816);
        mpfr_init_set_str(r50817, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r50818);
        mpfr_init(r50819);
        mpfr_init_set_str(r50820, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r50821);
        mpfr_init(r50822);
        mpfr_init(r50823);
        mpfr_init(r50824);
        mpfr_init(r50825);
        mpfr_init(r50826);
        mpfr_init(r50827);
        mpfr_init(r50828);
        mpfr_init(r50829);
        mpfr_init(r50830);
        mpfr_init(r50831);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r50816, x, MPFR_RNDN);
        ;
        mpfr_set_si(r50818, mpfr_cmp(r50816, r50817) <= 0, MPFR_RNDN);
        mpfr_neg(r50819, r50816, MPFR_RNDN);
        ;
        mpfr_set_si(r50821, mpfr_cmp(r50816, r50820) <= 0, MPFR_RNDN);
        mpfr_mul(r50822, r50816, r50816, MPFR_RNDN);
        mpfr_set_d(r50823, y, MPFR_RNDN);
        mpfr_mul(r50824, r50823, r50823, MPFR_RNDN);
        mpfr_add(r50825, r50822, r50824, MPFR_RNDN);
        mpfr_set_d(r50826, z, MPFR_RNDN);
        mpfr_mul(r50827, r50826, r50826, MPFR_RNDN);
        mpfr_add(r50828, r50825, r50827, MPFR_RNDN);
        mpfr_sqrt(r50829, r50828, MPFR_RNDN);
        if (mpfr_get_si(r50821, MPFR_RNDN)) { mpfr_set(r50830, r50829, MPFR_RNDN); } else { mpfr_set(r50830, r50816, MPFR_RNDN); };
        if (mpfr_get_si(r50818, MPFR_RNDN)) { mpfr_set(r50831, r50819, MPFR_RNDN); } else { mpfr_set(r50831, r50830, MPFR_RNDN); };
        return mpfr_get_d(r50831, MPFR_RNDN);
}

static mpfr_t r50832, r50833, r50834, r50835, r50836, r50837, r50838, r50839, r50840, r50841, r50842, r50843, r50844, r50845, r50846, r50847;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50832);
        mpfr_init_set_str(r50833, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r50834);
        mpfr_init(r50835);
        mpfr_init_set_str(r50836, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r50837);
        mpfr_init(r50838);
        mpfr_init(r50839);
        mpfr_init(r50840);
        mpfr_init(r50841);
        mpfr_init(r50842);
        mpfr_init(r50843);
        mpfr_init(r50844);
        mpfr_init(r50845);
        mpfr_init(r50846);
        mpfr_init(r50847);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r50832, x, MPFR_RNDN);
        ;
        mpfr_set_si(r50834, mpfr_cmp(r50832, r50833) <= 0, MPFR_RNDN);
        mpfr_neg(r50835, r50832, MPFR_RNDN);
        ;
        mpfr_set_si(r50837, mpfr_cmp(r50832, r50836) <= 0, MPFR_RNDN);
        mpfr_mul(r50838, r50832, r50832, MPFR_RNDN);
        mpfr_set_d(r50839, y, MPFR_RNDN);
        mpfr_mul(r50840, r50839, r50839, MPFR_RNDN);
        mpfr_add(r50841, r50838, r50840, MPFR_RNDN);
        mpfr_set_d(r50842, z, MPFR_RNDN);
        mpfr_mul(r50843, r50842, r50842, MPFR_RNDN);
        mpfr_add(r50844, r50841, r50843, MPFR_RNDN);
        mpfr_sqrt(r50845, r50844, MPFR_RNDN);
        if (mpfr_get_si(r50837, MPFR_RNDN)) { mpfr_set(r50846, r50845, MPFR_RNDN); } else { mpfr_set(r50846, r50832, MPFR_RNDN); };
        if (mpfr_get_si(r50834, MPFR_RNDN)) { mpfr_set(r50847, r50835, MPFR_RNDN); } else { mpfr_set(r50847, r50846, MPFR_RNDN); };
        return mpfr_get_d(r50847, MPFR_RNDN);
}

