#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 r51315 = x;
        float r51316 = r51315 * r51315;
        float r51317 = y;
        float r51318 = r51317 * r51317;
        float r51319 = r51316 + r51318;
        float r51320 = z;
        float r51321 = r51320 * r51320;
        float r51322 = r51319 + r51321;
        float r51323 = sqrt(r51322);
        return r51323;
}

double f_id(double x, double y, double z) {
        double r51324 = x;
        double r51325 = r51324 * r51324;
        double r51326 = y;
        double r51327 = r51326 * r51326;
        double r51328 = r51325 + r51327;
        double r51329 = z;
        double r51330 = r51329 * r51329;
        double r51331 = r51328 + r51330;
        double r51332 = sqrt(r51331);
        return r51332;
}


double f_of(float x, float y, float z) {
        float r51333 = x;
        float r51334 = -2.013881564242057e+151;
        bool r51335 = r51333 <= r51334;
        float r51336 = -r51333;
        float r51337 = 1.6698180397332825e+161;
        bool r51338 = r51333 <= r51337;
        float r51339 = r51333 * r51333;
        float r51340 = y;
        float r51341 = r51340 * r51340;
        float r51342 = r51339 + r51341;
        float r51343 = z;
        float r51344 = r51343 * r51343;
        float r51345 = r51342 + r51344;
        float r51346 = sqrt(r51345);
        float r51347 = r51338 ? r51346 : r51333;
        float r51348 = r51335 ? r51336 : r51347;
        return r51348;
}

double f_od(double x, double y, double z) {
        double r51349 = x;
        double r51350 = -2.013881564242057e+151;
        bool r51351 = r51349 <= r51350;
        double r51352 = -r51349;
        double r51353 = 1.6698180397332825e+161;
        bool r51354 = r51349 <= r51353;
        double r51355 = r51349 * r51349;
        double r51356 = y;
        double r51357 = r51356 * r51356;
        double r51358 = r51355 + r51357;
        double r51359 = z;
        double r51360 = r51359 * r51359;
        double r51361 = r51358 + r51360;
        double r51362 = sqrt(r51361);
        double r51363 = r51354 ? r51362 : r51349;
        double r51364 = r51351 ? r51352 : r51363;
        return r51364;
}

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 r51365, r51366, r51367, r51368, r51369, r51370, r51371, r51372, r51373;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51365);
        mpfr_init(r51366);
        mpfr_init(r51367);
        mpfr_init(r51368);
        mpfr_init(r51369);
        mpfr_init(r51370);
        mpfr_init(r51371);
        mpfr_init(r51372);
        mpfr_init(r51373);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r51365, x, MPFR_RNDN);
        mpfr_mul(r51366, r51365, r51365, MPFR_RNDN);
        mpfr_set_d(r51367, y, MPFR_RNDN);
        mpfr_mul(r51368, r51367, r51367, MPFR_RNDN);
        mpfr_add(r51369, r51366, r51368, MPFR_RNDN);
        mpfr_set_d(r51370, z, MPFR_RNDN);
        mpfr_mul(r51371, r51370, r51370, MPFR_RNDN);
        mpfr_add(r51372, r51369, r51371, MPFR_RNDN);
        mpfr_sqrt(r51373, r51372, MPFR_RNDN);
        return mpfr_get_d(r51373, MPFR_RNDN);
}

static mpfr_t r51374, r51375, r51376, r51377, r51378, r51379, r51380, r51381, r51382, r51383, r51384, r51385, r51386, r51387, r51388, r51389;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51374);
        mpfr_init_set_str(r51375, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51376);
        mpfr_init(r51377);
        mpfr_init_set_str(r51378, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51379);
        mpfr_init(r51380);
        mpfr_init(r51381);
        mpfr_init(r51382);
        mpfr_init(r51383);
        mpfr_init(r51384);
        mpfr_init(r51385);
        mpfr_init(r51386);
        mpfr_init(r51387);
        mpfr_init(r51388);
        mpfr_init(r51389);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r51374, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51376, mpfr_cmp(r51374, r51375) <= 0, MPFR_RNDN);
        mpfr_neg(r51377, r51374, MPFR_RNDN);
        ;
        mpfr_set_si(r51379, mpfr_cmp(r51374, r51378) <= 0, MPFR_RNDN);
        mpfr_mul(r51380, r51374, r51374, MPFR_RNDN);
        mpfr_set_d(r51381, y, MPFR_RNDN);
        mpfr_mul(r51382, r51381, r51381, MPFR_RNDN);
        mpfr_add(r51383, r51380, r51382, MPFR_RNDN);
        mpfr_set_d(r51384, z, MPFR_RNDN);
        mpfr_mul(r51385, r51384, r51384, MPFR_RNDN);
        mpfr_add(r51386, r51383, r51385, MPFR_RNDN);
        mpfr_sqrt(r51387, r51386, MPFR_RNDN);
        if (mpfr_get_si(r51379, MPFR_RNDN)) { mpfr_set(r51388, r51387, MPFR_RNDN); } else { mpfr_set(r51388, r51374, MPFR_RNDN); };
        if (mpfr_get_si(r51376, MPFR_RNDN)) { mpfr_set(r51389, r51377, MPFR_RNDN); } else { mpfr_set(r51389, r51388, MPFR_RNDN); };
        return mpfr_get_d(r51389, MPFR_RNDN);
}

static mpfr_t r51390, r51391, r51392, r51393, r51394, r51395, r51396, r51397, r51398, r51399, r51400, r51401, r51402, r51403, r51404, r51405;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51390);
        mpfr_init_set_str(r51391, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r51392);
        mpfr_init(r51393);
        mpfr_init_set_str(r51394, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r51395);
        mpfr_init(r51396);
        mpfr_init(r51397);
        mpfr_init(r51398);
        mpfr_init(r51399);
        mpfr_init(r51400);
        mpfr_init(r51401);
        mpfr_init(r51402);
        mpfr_init(r51403);
        mpfr_init(r51404);
        mpfr_init(r51405);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r51390, x, MPFR_RNDN);
        ;
        mpfr_set_si(r51392, mpfr_cmp(r51390, r51391) <= 0, MPFR_RNDN);
        mpfr_neg(r51393, r51390, MPFR_RNDN);
        ;
        mpfr_set_si(r51395, mpfr_cmp(r51390, r51394) <= 0, MPFR_RNDN);
        mpfr_mul(r51396, r51390, r51390, MPFR_RNDN);
        mpfr_set_d(r51397, y, MPFR_RNDN);
        mpfr_mul(r51398, r51397, r51397, MPFR_RNDN);
        mpfr_add(r51399, r51396, r51398, MPFR_RNDN);
        mpfr_set_d(r51400, z, MPFR_RNDN);
        mpfr_mul(r51401, r51400, r51400, MPFR_RNDN);
        mpfr_add(r51402, r51399, r51401, MPFR_RNDN);
        mpfr_sqrt(r51403, r51402, MPFR_RNDN);
        if (mpfr_get_si(r51395, MPFR_RNDN)) { mpfr_set(r51404, r51403, MPFR_RNDN); } else { mpfr_set(r51404, r51390, MPFR_RNDN); };
        if (mpfr_get_si(r51392, MPFR_RNDN)) { mpfr_set(r51405, r51393, MPFR_RNDN); } else { mpfr_set(r51405, r51404, MPFR_RNDN); };
        return mpfr_get_d(r51405, MPFR_RNDN);
}

