#include <tgmath.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdio.h>
#include <stdbool.h>

char *name = "Data.Array.Repa.Algorithms.Pixel:doubleRmsOfRGB8 from repa-algorithms-3.4.0.1";

double f_if(float x, float y, float z) {
        float r57268 = x;
        float r57269 = r57268 * r57268;
        float r57270 = y;
        float r57271 = r57270 * r57270;
        float r57272 = r57269 + r57271;
        float r57273 = z;
        float r57274 = r57273 * r57273;
        float r57275 = r57272 + r57274;
        float r57276 = 3.0;
        float r57277 = r57275 / r57276;
        float r57278 = sqrt(r57277);
        return r57278;
}

double f_id(double x, double y, double z) {
        double r57279 = x;
        double r57280 = r57279 * r57279;
        double r57281 = y;
        double r57282 = r57281 * r57281;
        double r57283 = r57280 + r57282;
        double r57284 = z;
        double r57285 = r57284 * r57284;
        double r57286 = r57283 + r57285;
        double r57287 = 3.0;
        double r57288 = r57286 / r57287;
        double r57289 = sqrt(r57288);
        return r57289;
}


double f_of(float x, float y, float z) {
        float r57290 = x;
        float r57291 = -2.013881564242057e+151;
        bool r57292 = r57290 <= r57291;
        float r57293 = 0.3333333333333333;
        float r57294 = sqrt(r57293);
        float r57295 = -r57290;
        float r57296 = r57294 * r57295;
        float r57297 = 1.6698180397332825e+161;
        bool r57298 = r57290 <= r57297;
        float r57299 = r57290 * r57290;
        float r57300 = y;
        float r57301 = r57300 * r57300;
        float r57302 = r57299 + r57301;
        float r57303 = z;
        float r57304 = r57303 * r57303;
        float r57305 = r57302 + r57304;
        float r57306 = 3.0;
        float r57307 = r57305 / r57306;
        float r57308 = sqrt(r57307);
        float r57309 = sqrt(r57306);
        float r57310 = r57290 / r57309;
        float r57311 = r57298 ? r57308 : r57310;
        float r57312 = r57292 ? r57296 : r57311;
        return r57312;
}

double f_od(double x, double y, double z) {
        double r57313 = x;
        double r57314 = -2.013881564242057e+151;
        bool r57315 = r57313 <= r57314;
        double r57316 = 0.3333333333333333;
        double r57317 = sqrt(r57316);
        double r57318 = -r57313;
        double r57319 = r57317 * r57318;
        double r57320 = 1.6698180397332825e+161;
        bool r57321 = r57313 <= r57320;
        double r57322 = r57313 * r57313;
        double r57323 = y;
        double r57324 = r57323 * r57323;
        double r57325 = r57322 + r57324;
        double r57326 = z;
        double r57327 = r57326 * r57326;
        double r57328 = r57325 + r57327;
        double r57329 = 3.0;
        double r57330 = r57328 / r57329;
        double r57331 = sqrt(r57330);
        double r57332 = sqrt(r57329);
        double r57333 = r57313 / r57332;
        double r57334 = r57321 ? r57331 : r57333;
        double r57335 = r57315 ? r57319 : r57334;
        return r57335;
}

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 r57336, r57337, r57338, r57339, r57340, r57341, r57342, r57343, r57344, r57345, r57346;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57336);
        mpfr_init(r57337);
        mpfr_init(r57338);
        mpfr_init(r57339);
        mpfr_init(r57340);
        mpfr_init(r57341);
        mpfr_init(r57342);
        mpfr_init(r57343);
        mpfr_init_set_str(r57344, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57345);
        mpfr_init(r57346);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r57336, x, MPFR_RNDN);
        mpfr_mul(r57337, r57336, r57336, MPFR_RNDN);
        mpfr_set_d(r57338, y, MPFR_RNDN);
        mpfr_mul(r57339, r57338, r57338, MPFR_RNDN);
        mpfr_add(r57340, r57337, r57339, MPFR_RNDN);
        mpfr_set_d(r57341, z, MPFR_RNDN);
        mpfr_mul(r57342, r57341, r57341, MPFR_RNDN);
        mpfr_add(r57343, r57340, r57342, MPFR_RNDN);
        ;
        mpfr_div(r57345, r57343, r57344, MPFR_RNDN);
        mpfr_sqrt(r57346, r57345, MPFR_RNDN);
        return mpfr_get_d(r57346, MPFR_RNDN);
}

static mpfr_t r57347, r57348, r57349, r57350, r57351, r57352, r57353, r57354, r57355, r57356, r57357, r57358, r57359, r57360, r57361, r57362, r57363, r57364, r57365, r57366, r57367, r57368, r57369;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57347);
        mpfr_init_set_str(r57348, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r57349);
        mpfr_init_set_str(r57350, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57351);
        mpfr_init(r57352);
        mpfr_init(r57353);
        mpfr_init_set_str(r57354, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r57355);
        mpfr_init(r57356);
        mpfr_init(r57357);
        mpfr_init(r57358);
        mpfr_init(r57359);
        mpfr_init(r57360);
        mpfr_init(r57361);
        mpfr_init(r57362);
        mpfr_init_set_str(r57363, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57364);
        mpfr_init(r57365);
        mpfr_init(r57366);
        mpfr_init(r57367);
        mpfr_init(r57368);
        mpfr_init(r57369);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r57347, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57349, mpfr_cmp(r57347, r57348) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57351, r57350, MPFR_RNDN);
        mpfr_neg(r57352, r57347, MPFR_RNDN);
        mpfr_mul(r57353, r57351, r57352, MPFR_RNDN);
        ;
        mpfr_set_si(r57355, mpfr_cmp(r57347, r57354) <= 0, MPFR_RNDN);
        mpfr_mul(r57356, r57347, r57347, MPFR_RNDN);
        mpfr_set_d(r57357, y, MPFR_RNDN);
        mpfr_mul(r57358, r57357, r57357, MPFR_RNDN);
        mpfr_add(r57359, r57356, r57358, MPFR_RNDN);
        mpfr_set_d(r57360, z, MPFR_RNDN);
        mpfr_mul(r57361, r57360, r57360, MPFR_RNDN);
        mpfr_add(r57362, r57359, r57361, MPFR_RNDN);
        ;
        mpfr_div(r57364, r57362, r57363, MPFR_RNDN);
        mpfr_sqrt(r57365, r57364, MPFR_RNDN);
        mpfr_sqrt(r57366, r57363, MPFR_RNDN);
        mpfr_div(r57367, r57347, r57366, MPFR_RNDN);
        if (mpfr_get_si(r57355, MPFR_RNDN)) { mpfr_set(r57368, r57365, MPFR_RNDN); } else { mpfr_set(r57368, r57367, MPFR_RNDN); };
        if (mpfr_get_si(r57349, MPFR_RNDN)) { mpfr_set(r57369, r57353, MPFR_RNDN); } else { mpfr_set(r57369, r57368, MPFR_RNDN); };
        return mpfr_get_d(r57369, MPFR_RNDN);
}

static mpfr_t r57370, r57371, r57372, r57373, r57374, r57375, r57376, r57377, r57378, r57379, r57380, r57381, r57382, r57383, r57384, r57385, r57386, r57387, r57388, r57389, r57390, r57391, r57392;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57370);
        mpfr_init_set_str(r57371, "-2.013881564242057e+151", 10, MPFR_RNDN);
        mpfr_init(r57372);
        mpfr_init_set_str(r57373, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57374);
        mpfr_init(r57375);
        mpfr_init(r57376);
        mpfr_init_set_str(r57377, "1.6698180397332825e+161", 10, MPFR_RNDN);
        mpfr_init(r57378);
        mpfr_init(r57379);
        mpfr_init(r57380);
        mpfr_init(r57381);
        mpfr_init(r57382);
        mpfr_init(r57383);
        mpfr_init(r57384);
        mpfr_init(r57385);
        mpfr_init_set_str(r57386, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57387);
        mpfr_init(r57388);
        mpfr_init(r57389);
        mpfr_init(r57390);
        mpfr_init(r57391);
        mpfr_init(r57392);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r57370, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57372, mpfr_cmp(r57370, r57371) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57374, r57373, MPFR_RNDN);
        mpfr_neg(r57375, r57370, MPFR_RNDN);
        mpfr_mul(r57376, r57374, r57375, MPFR_RNDN);
        ;
        mpfr_set_si(r57378, mpfr_cmp(r57370, r57377) <= 0, MPFR_RNDN);
        mpfr_mul(r57379, r57370, r57370, MPFR_RNDN);
        mpfr_set_d(r57380, y, MPFR_RNDN);
        mpfr_mul(r57381, r57380, r57380, MPFR_RNDN);
        mpfr_add(r57382, r57379, r57381, MPFR_RNDN);
        mpfr_set_d(r57383, z, MPFR_RNDN);
        mpfr_mul(r57384, r57383, r57383, MPFR_RNDN);
        mpfr_add(r57385, r57382, r57384, MPFR_RNDN);
        ;
        mpfr_div(r57387, r57385, r57386, MPFR_RNDN);
        mpfr_sqrt(r57388, r57387, MPFR_RNDN);
        mpfr_sqrt(r57389, r57386, MPFR_RNDN);
        mpfr_div(r57390, r57370, r57389, MPFR_RNDN);
        if (mpfr_get_si(r57378, MPFR_RNDN)) { mpfr_set(r57391, r57388, MPFR_RNDN); } else { mpfr_set(r57391, r57390, MPFR_RNDN); };
        if (mpfr_get_si(r57372, MPFR_RNDN)) { mpfr_set(r57392, r57376, MPFR_RNDN); } else { mpfr_set(r57392, r57391, MPFR_RNDN); };
        return mpfr_get_d(r57392, MPFR_RNDN);
}

