#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 r57340 = x;
        float r57341 = r57340 * r57340;
        float r57342 = y;
        float r57343 = r57342 * r57342;
        float r57344 = r57341 + r57343;
        float r57345 = z;
        float r57346 = r57345 * r57345;
        float r57347 = r57344 + r57346;
        float r57348 = 3.0;
        float r57349 = r57347 / r57348;
        float r57350 = sqrt(r57349);
        return r57350;
}

double f_id(double x, double y, double z) {
        double r57351 = x;
        double r57352 = r57351 * r57351;
        double r57353 = y;
        double r57354 = r57353 * r57353;
        double r57355 = r57352 + r57354;
        double r57356 = z;
        double r57357 = r57356 * r57356;
        double r57358 = r57355 + r57357;
        double r57359 = 3.0;
        double r57360 = r57358 / r57359;
        double r57361 = sqrt(r57360);
        return r57361;
}


double f_of(float x, float y, float z) {
        float r57362 = x;
        float r57363 = -1.2462366172629023e+154;
        bool r57364 = r57362 <= r57363;
        float r57365 = 0.3333333333333333;
        float r57366 = sqrt(r57365);
        float r57367 = -r57362;
        float r57368 = r57366 * r57367;
        float r57369 = 1.8809713604828146e+158;
        bool r57370 = r57362 <= r57369;
        float r57371 = r57362 * r57362;
        float r57372 = y;
        float r57373 = r57372 * r57372;
        float r57374 = r57371 + r57373;
        float r57375 = z;
        float r57376 = r57375 * r57375;
        float r57377 = r57374 + r57376;
        float r57378 = 3.0;
        float r57379 = r57377 / r57378;
        float r57380 = sqrt(r57379);
        float r57381 = sqrt(r57378);
        float r57382 = r57362 / r57381;
        float r57383 = r57370 ? r57380 : r57382;
        float r57384 = r57364 ? r57368 : r57383;
        return r57384;
}

double f_od(double x, double y, double z) {
        double r57385 = x;
        double r57386 = -1.2462366172629023e+154;
        bool r57387 = r57385 <= r57386;
        double r57388 = 0.3333333333333333;
        double r57389 = sqrt(r57388);
        double r57390 = -r57385;
        double r57391 = r57389 * r57390;
        double r57392 = 1.8809713604828146e+158;
        bool r57393 = r57385 <= r57392;
        double r57394 = r57385 * r57385;
        double r57395 = y;
        double r57396 = r57395 * r57395;
        double r57397 = r57394 + r57396;
        double r57398 = z;
        double r57399 = r57398 * r57398;
        double r57400 = r57397 + r57399;
        double r57401 = 3.0;
        double r57402 = r57400 / r57401;
        double r57403 = sqrt(r57402);
        double r57404 = sqrt(r57401);
        double r57405 = r57385 / r57404;
        double r57406 = r57393 ? r57403 : r57405;
        double r57407 = r57387 ? r57391 : r57406;
        return r57407;
}

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 r57408, r57409, r57410, r57411, r57412, r57413, r57414, r57415, r57416, r57417, r57418;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57408);
        mpfr_init(r57409);
        mpfr_init(r57410);
        mpfr_init(r57411);
        mpfr_init(r57412);
        mpfr_init(r57413);
        mpfr_init(r57414);
        mpfr_init(r57415);
        mpfr_init_set_str(r57416, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57417);
        mpfr_init(r57418);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r57408, x, MPFR_RNDN);
        mpfr_mul(r57409, r57408, r57408, MPFR_RNDN);
        mpfr_set_d(r57410, y, MPFR_RNDN);
        mpfr_mul(r57411, r57410, r57410, MPFR_RNDN);
        mpfr_add(r57412, r57409, r57411, MPFR_RNDN);
        mpfr_set_d(r57413, z, MPFR_RNDN);
        mpfr_mul(r57414, r57413, r57413, MPFR_RNDN);
        mpfr_add(r57415, r57412, r57414, MPFR_RNDN);
        ;
        mpfr_div(r57417, r57415, r57416, MPFR_RNDN);
        mpfr_sqrt(r57418, r57417, MPFR_RNDN);
        return mpfr_get_d(r57418, MPFR_RNDN);
}

static mpfr_t r57419, r57420, r57421, r57422, r57423, r57424, r57425, r57426, r57427, r57428, r57429, r57430, r57431, r57432, r57433, r57434, r57435, r57436, r57437, r57438, r57439, r57440, r57441;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57419);
        mpfr_init_set_str(r57420, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r57421);
        mpfr_init_set_str(r57422, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57423);
        mpfr_init(r57424);
        mpfr_init(r57425);
        mpfr_init_set_str(r57426, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r57427);
        mpfr_init(r57428);
        mpfr_init(r57429);
        mpfr_init(r57430);
        mpfr_init(r57431);
        mpfr_init(r57432);
        mpfr_init(r57433);
        mpfr_init(r57434);
        mpfr_init_set_str(r57435, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57436);
        mpfr_init(r57437);
        mpfr_init(r57438);
        mpfr_init(r57439);
        mpfr_init(r57440);
        mpfr_init(r57441);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r57419, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57421, mpfr_cmp(r57419, r57420) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57423, r57422, MPFR_RNDN);
        mpfr_neg(r57424, r57419, MPFR_RNDN);
        mpfr_mul(r57425, r57423, r57424, MPFR_RNDN);
        ;
        mpfr_set_si(r57427, mpfr_cmp(r57419, r57426) <= 0, MPFR_RNDN);
        mpfr_mul(r57428, r57419, r57419, MPFR_RNDN);
        mpfr_set_d(r57429, y, MPFR_RNDN);
        mpfr_mul(r57430, r57429, r57429, MPFR_RNDN);
        mpfr_add(r57431, r57428, r57430, MPFR_RNDN);
        mpfr_set_d(r57432, z, MPFR_RNDN);
        mpfr_mul(r57433, r57432, r57432, MPFR_RNDN);
        mpfr_add(r57434, r57431, r57433, MPFR_RNDN);
        ;
        mpfr_div(r57436, r57434, r57435, MPFR_RNDN);
        mpfr_sqrt(r57437, r57436, MPFR_RNDN);
        mpfr_sqrt(r57438, r57435, MPFR_RNDN);
        mpfr_div(r57439, r57419, r57438, MPFR_RNDN);
        if (mpfr_get_si(r57427, MPFR_RNDN)) { mpfr_set(r57440, r57437, MPFR_RNDN); } else { mpfr_set(r57440, r57439, MPFR_RNDN); };
        if (mpfr_get_si(r57421, MPFR_RNDN)) { mpfr_set(r57441, r57425, MPFR_RNDN); } else { mpfr_set(r57441, r57440, MPFR_RNDN); };
        return mpfr_get_d(r57441, MPFR_RNDN);
}

static mpfr_t r57442, r57443, r57444, r57445, r57446, r57447, r57448, r57449, r57450, r57451, r57452, r57453, r57454, r57455, r57456, r57457, r57458, r57459, r57460, r57461, r57462, r57463, r57464;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57442);
        mpfr_init_set_str(r57443, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r57444);
        mpfr_init_set_str(r57445, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57446);
        mpfr_init(r57447);
        mpfr_init(r57448);
        mpfr_init_set_str(r57449, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r57450);
        mpfr_init(r57451);
        mpfr_init(r57452);
        mpfr_init(r57453);
        mpfr_init(r57454);
        mpfr_init(r57455);
        mpfr_init(r57456);
        mpfr_init(r57457);
        mpfr_init_set_str(r57458, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57459);
        mpfr_init(r57460);
        mpfr_init(r57461);
        mpfr_init(r57462);
        mpfr_init(r57463);
        mpfr_init(r57464);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r57442, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57444, mpfr_cmp(r57442, r57443) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57446, r57445, MPFR_RNDN);
        mpfr_neg(r57447, r57442, MPFR_RNDN);
        mpfr_mul(r57448, r57446, r57447, MPFR_RNDN);
        ;
        mpfr_set_si(r57450, mpfr_cmp(r57442, r57449) <= 0, MPFR_RNDN);
        mpfr_mul(r57451, r57442, r57442, MPFR_RNDN);
        mpfr_set_d(r57452, y, MPFR_RNDN);
        mpfr_mul(r57453, r57452, r57452, MPFR_RNDN);
        mpfr_add(r57454, r57451, r57453, MPFR_RNDN);
        mpfr_set_d(r57455, z, MPFR_RNDN);
        mpfr_mul(r57456, r57455, r57455, MPFR_RNDN);
        mpfr_add(r57457, r57454, r57456, MPFR_RNDN);
        ;
        mpfr_div(r57459, r57457, r57458, MPFR_RNDN);
        mpfr_sqrt(r57460, r57459, MPFR_RNDN);
        mpfr_sqrt(r57461, r57458, MPFR_RNDN);
        mpfr_div(r57462, r57442, r57461, MPFR_RNDN);
        if (mpfr_get_si(r57450, MPFR_RNDN)) { mpfr_set(r57463, r57460, MPFR_RNDN); } else { mpfr_set(r57463, r57462, MPFR_RNDN); };
        if (mpfr_get_si(r57444, MPFR_RNDN)) { mpfr_set(r57464, r57448, MPFR_RNDN); } else { mpfr_set(r57464, r57463, MPFR_RNDN); };
        return mpfr_get_d(r57464, MPFR_RNDN);
}

