#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 r57414 = x;
        float r57415 = r57414 * r57414;
        float r57416 = y;
        float r57417 = r57416 * r57416;
        float r57418 = r57415 + r57417;
        float r57419 = z;
        float r57420 = r57419 * r57419;
        float r57421 = r57418 + r57420;
        float r57422 = 3.0;
        float r57423 = r57421 / r57422;
        float r57424 = sqrt(r57423);
        return r57424;
}

double f_id(double x, double y, double z) {
        double r57425 = x;
        double r57426 = r57425 * r57425;
        double r57427 = y;
        double r57428 = r57427 * r57427;
        double r57429 = r57426 + r57428;
        double r57430 = z;
        double r57431 = r57430 * r57430;
        double r57432 = r57429 + r57431;
        double r57433 = 3.0;
        double r57434 = r57432 / r57433;
        double r57435 = sqrt(r57434);
        return r57435;
}


double f_of(float x, float y, float z) {
        float r57436 = x;
        float r57437 = -1.2462366172629023e+154;
        bool r57438 = r57436 <= r57437;
        float r57439 = 0.3333333333333333;
        float r57440 = sqrt(r57439);
        float r57441 = -r57436;
        float r57442 = r57440 * r57441;
        float r57443 = 1.8809713604828146e+158;
        bool r57444 = r57436 <= r57443;
        float r57445 = r57436 * r57436;
        float r57446 = y;
        float r57447 = r57446 * r57446;
        float r57448 = r57445 + r57447;
        float r57449 = z;
        float r57450 = r57449 * r57449;
        float r57451 = r57448 + r57450;
        float r57452 = 3.0;
        float r57453 = r57451 / r57452;
        float r57454 = sqrt(r57453);
        float r57455 = sqrt(r57452);
        float r57456 = r57436 / r57455;
        float r57457 = r57444 ? r57454 : r57456;
        float r57458 = r57438 ? r57442 : r57457;
        return r57458;
}

double f_od(double x, double y, double z) {
        double r57459 = x;
        double r57460 = -1.2462366172629023e+154;
        bool r57461 = r57459 <= r57460;
        double r57462 = 0.3333333333333333;
        double r57463 = sqrt(r57462);
        double r57464 = -r57459;
        double r57465 = r57463 * r57464;
        double r57466 = 1.8809713604828146e+158;
        bool r57467 = r57459 <= r57466;
        double r57468 = r57459 * r57459;
        double r57469 = y;
        double r57470 = r57469 * r57469;
        double r57471 = r57468 + r57470;
        double r57472 = z;
        double r57473 = r57472 * r57472;
        double r57474 = r57471 + r57473;
        double r57475 = 3.0;
        double r57476 = r57474 / r57475;
        double r57477 = sqrt(r57476);
        double r57478 = sqrt(r57475);
        double r57479 = r57459 / r57478;
        double r57480 = r57467 ? r57477 : r57479;
        double r57481 = r57461 ? r57465 : r57480;
        return r57481;
}

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 r57482, r57483, r57484, r57485, r57486, r57487, r57488, r57489, r57490, r57491, r57492;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r57482);
        mpfr_init(r57483);
        mpfr_init(r57484);
        mpfr_init(r57485);
        mpfr_init(r57486);
        mpfr_init(r57487);
        mpfr_init(r57488);
        mpfr_init(r57489);
        mpfr_init_set_str(r57490, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57491);
        mpfr_init(r57492);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r57482, x, MPFR_RNDN);
        mpfr_mul(r57483, r57482, r57482, MPFR_RNDN);
        mpfr_set_d(r57484, y, MPFR_RNDN);
        mpfr_mul(r57485, r57484, r57484, MPFR_RNDN);
        mpfr_add(r57486, r57483, r57485, MPFR_RNDN);
        mpfr_set_d(r57487, z, MPFR_RNDN);
        mpfr_mul(r57488, r57487, r57487, MPFR_RNDN);
        mpfr_add(r57489, r57486, r57488, MPFR_RNDN);
        ;
        mpfr_div(r57491, r57489, r57490, MPFR_RNDN);
        mpfr_sqrt(r57492, r57491, MPFR_RNDN);
        return mpfr_get_d(r57492, MPFR_RNDN);
}

static mpfr_t r57493, r57494, r57495, r57496, r57497, r57498, r57499, r57500, r57501, r57502, r57503, r57504, r57505, r57506, r57507, r57508, r57509, r57510, r57511, r57512, r57513, r57514, r57515;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57493);
        mpfr_init_set_str(r57494, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r57495);
        mpfr_init_set_str(r57496, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57497);
        mpfr_init(r57498);
        mpfr_init(r57499);
        mpfr_init_set_str(r57500, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r57501);
        mpfr_init(r57502);
        mpfr_init(r57503);
        mpfr_init(r57504);
        mpfr_init(r57505);
        mpfr_init(r57506);
        mpfr_init(r57507);
        mpfr_init(r57508);
        mpfr_init_set_str(r57509, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57510);
        mpfr_init(r57511);
        mpfr_init(r57512);
        mpfr_init(r57513);
        mpfr_init(r57514);
        mpfr_init(r57515);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r57493, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57495, mpfr_cmp(r57493, r57494) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57497, r57496, MPFR_RNDN);
        mpfr_neg(r57498, r57493, MPFR_RNDN);
        mpfr_mul(r57499, r57497, r57498, MPFR_RNDN);
        ;
        mpfr_set_si(r57501, mpfr_cmp(r57493, r57500) <= 0, MPFR_RNDN);
        mpfr_mul(r57502, r57493, r57493, MPFR_RNDN);
        mpfr_set_d(r57503, y, MPFR_RNDN);
        mpfr_mul(r57504, r57503, r57503, MPFR_RNDN);
        mpfr_add(r57505, r57502, r57504, MPFR_RNDN);
        mpfr_set_d(r57506, z, MPFR_RNDN);
        mpfr_mul(r57507, r57506, r57506, MPFR_RNDN);
        mpfr_add(r57508, r57505, r57507, MPFR_RNDN);
        ;
        mpfr_div(r57510, r57508, r57509, MPFR_RNDN);
        mpfr_sqrt(r57511, r57510, MPFR_RNDN);
        mpfr_sqrt(r57512, r57509, MPFR_RNDN);
        mpfr_div(r57513, r57493, r57512, MPFR_RNDN);
        if (mpfr_get_si(r57501, MPFR_RNDN)) { mpfr_set(r57514, r57511, MPFR_RNDN); } else { mpfr_set(r57514, r57513, MPFR_RNDN); };
        if (mpfr_get_si(r57495, MPFR_RNDN)) { mpfr_set(r57515, r57499, MPFR_RNDN); } else { mpfr_set(r57515, r57514, MPFR_RNDN); };
        return mpfr_get_d(r57515, MPFR_RNDN);
}

static mpfr_t r57516, r57517, r57518, r57519, r57520, r57521, r57522, r57523, r57524, r57525, r57526, r57527, r57528, r57529, r57530, r57531, r57532, r57533, r57534, r57535, r57536, r57537, r57538;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r57516);
        mpfr_init_set_str(r57517, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r57518);
        mpfr_init_set_str(r57519, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r57520);
        mpfr_init(r57521);
        mpfr_init(r57522);
        mpfr_init_set_str(r57523, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r57524);
        mpfr_init(r57525);
        mpfr_init(r57526);
        mpfr_init(r57527);
        mpfr_init(r57528);
        mpfr_init(r57529);
        mpfr_init(r57530);
        mpfr_init(r57531);
        mpfr_init_set_str(r57532, "3.0", 10, MPFR_RNDN);
        mpfr_init(r57533);
        mpfr_init(r57534);
        mpfr_init(r57535);
        mpfr_init(r57536);
        mpfr_init(r57537);
        mpfr_init(r57538);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r57516, x, MPFR_RNDN);
        ;
        mpfr_set_si(r57518, mpfr_cmp(r57516, r57517) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r57520, r57519, MPFR_RNDN);
        mpfr_neg(r57521, r57516, MPFR_RNDN);
        mpfr_mul(r57522, r57520, r57521, MPFR_RNDN);
        ;
        mpfr_set_si(r57524, mpfr_cmp(r57516, r57523) <= 0, MPFR_RNDN);
        mpfr_mul(r57525, r57516, r57516, MPFR_RNDN);
        mpfr_set_d(r57526, y, MPFR_RNDN);
        mpfr_mul(r57527, r57526, r57526, MPFR_RNDN);
        mpfr_add(r57528, r57525, r57527, MPFR_RNDN);
        mpfr_set_d(r57529, z, MPFR_RNDN);
        mpfr_mul(r57530, r57529, r57529, MPFR_RNDN);
        mpfr_add(r57531, r57528, r57530, MPFR_RNDN);
        ;
        mpfr_div(r57533, r57531, r57532, MPFR_RNDN);
        mpfr_sqrt(r57534, r57533, MPFR_RNDN);
        mpfr_sqrt(r57535, r57532, MPFR_RNDN);
        mpfr_div(r57536, r57516, r57535, MPFR_RNDN);
        if (mpfr_get_si(r57524, MPFR_RNDN)) { mpfr_set(r57537, r57534, MPFR_RNDN); } else { mpfr_set(r57537, r57536, MPFR_RNDN); };
        if (mpfr_get_si(r57518, MPFR_RNDN)) { mpfr_set(r57538, r57522, MPFR_RNDN); } else { mpfr_set(r57538, r57537, MPFR_RNDN); };
        return mpfr_get_d(r57538, MPFR_RNDN);
}

