#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 r56123 = x;
        float r56124 = r56123 * r56123;
        float r56125 = y;
        float r56126 = r56125 * r56125;
        float r56127 = r56124 + r56126;
        float r56128 = z;
        float r56129 = r56128 * r56128;
        float r56130 = r56127 + r56129;
        float r56131 = 3.0;
        float r56132 = r56130 / r56131;
        float r56133 = sqrt(r56132);
        return r56133;
}

double f_id(double x, double y, double z) {
        double r56134 = x;
        double r56135 = r56134 * r56134;
        double r56136 = y;
        double r56137 = r56136 * r56136;
        double r56138 = r56135 + r56137;
        double r56139 = z;
        double r56140 = r56139 * r56139;
        double r56141 = r56138 + r56140;
        double r56142 = 3.0;
        double r56143 = r56141 / r56142;
        double r56144 = sqrt(r56143);
        return r56144;
}


double f_of(float x, float y, float z) {
        float r56145 = x;
        float r56146 = -1.2462366172629023e+154;
        bool r56147 = r56145 <= r56146;
        float r56148 = 0.3333333333333333;
        float r56149 = sqrt(r56148);
        float r56150 = -r56145;
        float r56151 = r56149 * r56150;
        float r56152 = 1.8809713604828146e+158;
        bool r56153 = r56145 <= r56152;
        float r56154 = r56145 * r56145;
        float r56155 = y;
        float r56156 = r56155 * r56155;
        float r56157 = r56154 + r56156;
        float r56158 = z;
        float r56159 = r56158 * r56158;
        float r56160 = r56157 + r56159;
        float r56161 = 3.0;
        float r56162 = r56160 / r56161;
        float r56163 = sqrt(r56162);
        float r56164 = sqrt(r56161);
        float r56165 = r56145 / r56164;
        float r56166 = r56153 ? r56163 : r56165;
        float r56167 = r56147 ? r56151 : r56166;
        return r56167;
}

double f_od(double x, double y, double z) {
        double r56168 = x;
        double r56169 = -1.2462366172629023e+154;
        bool r56170 = r56168 <= r56169;
        double r56171 = 0.3333333333333333;
        double r56172 = sqrt(r56171);
        double r56173 = -r56168;
        double r56174 = r56172 * r56173;
        double r56175 = 1.8809713604828146e+158;
        bool r56176 = r56168 <= r56175;
        double r56177 = r56168 * r56168;
        double r56178 = y;
        double r56179 = r56178 * r56178;
        double r56180 = r56177 + r56179;
        double r56181 = z;
        double r56182 = r56181 * r56181;
        double r56183 = r56180 + r56182;
        double r56184 = 3.0;
        double r56185 = r56183 / r56184;
        double r56186 = sqrt(r56185);
        double r56187 = sqrt(r56184);
        double r56188 = r56168 / r56187;
        double r56189 = r56176 ? r56186 : r56188;
        double r56190 = r56170 ? r56174 : r56189;
        return r56190;
}

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 r56191, r56192, r56193, r56194, r56195, r56196, r56197, r56198, r56199, r56200, r56201;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r56191);
        mpfr_init(r56192);
        mpfr_init(r56193);
        mpfr_init(r56194);
        mpfr_init(r56195);
        mpfr_init(r56196);
        mpfr_init(r56197);
        mpfr_init(r56198);
        mpfr_init_set_str(r56199, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56200);
        mpfr_init(r56201);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r56191, x, MPFR_RNDN);
        mpfr_mul(r56192, r56191, r56191, MPFR_RNDN);
        mpfr_set_d(r56193, y, MPFR_RNDN);
        mpfr_mul(r56194, r56193, r56193, MPFR_RNDN);
        mpfr_add(r56195, r56192, r56194, MPFR_RNDN);
        mpfr_set_d(r56196, z, MPFR_RNDN);
        mpfr_mul(r56197, r56196, r56196, MPFR_RNDN);
        mpfr_add(r56198, r56195, r56197, MPFR_RNDN);
        ;
        mpfr_div(r56200, r56198, r56199, MPFR_RNDN);
        mpfr_sqrt(r56201, r56200, MPFR_RNDN);
        return mpfr_get_d(r56201, MPFR_RNDN);
}

static mpfr_t r56202, r56203, r56204, r56205, r56206, r56207, r56208, r56209, r56210, r56211, r56212, r56213, r56214, r56215, r56216, r56217, r56218, r56219, r56220, r56221, r56222, r56223, r56224;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56202);
        mpfr_init_set_str(r56203, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r56204);
        mpfr_init_set_str(r56205, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r56206);
        mpfr_init(r56207);
        mpfr_init(r56208);
        mpfr_init_set_str(r56209, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r56210);
        mpfr_init(r56211);
        mpfr_init(r56212);
        mpfr_init(r56213);
        mpfr_init(r56214);
        mpfr_init(r56215);
        mpfr_init(r56216);
        mpfr_init(r56217);
        mpfr_init_set_str(r56218, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56219);
        mpfr_init(r56220);
        mpfr_init(r56221);
        mpfr_init(r56222);
        mpfr_init(r56223);
        mpfr_init(r56224);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r56202, x, MPFR_RNDN);
        ;
        mpfr_set_si(r56204, mpfr_cmp(r56202, r56203) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r56206, r56205, MPFR_RNDN);
        mpfr_neg(r56207, r56202, MPFR_RNDN);
        mpfr_mul(r56208, r56206, r56207, MPFR_RNDN);
        ;
        mpfr_set_si(r56210, mpfr_cmp(r56202, r56209) <= 0, MPFR_RNDN);
        mpfr_mul(r56211, r56202, r56202, MPFR_RNDN);
        mpfr_set_d(r56212, y, MPFR_RNDN);
        mpfr_mul(r56213, r56212, r56212, MPFR_RNDN);
        mpfr_add(r56214, r56211, r56213, MPFR_RNDN);
        mpfr_set_d(r56215, z, MPFR_RNDN);
        mpfr_mul(r56216, r56215, r56215, MPFR_RNDN);
        mpfr_add(r56217, r56214, r56216, MPFR_RNDN);
        ;
        mpfr_div(r56219, r56217, r56218, MPFR_RNDN);
        mpfr_sqrt(r56220, r56219, MPFR_RNDN);
        mpfr_sqrt(r56221, r56218, MPFR_RNDN);
        mpfr_div(r56222, r56202, r56221, MPFR_RNDN);
        if (mpfr_get_si(r56210, MPFR_RNDN)) { mpfr_set(r56223, r56220, MPFR_RNDN); } else { mpfr_set(r56223, r56222, MPFR_RNDN); };
        if (mpfr_get_si(r56204, MPFR_RNDN)) { mpfr_set(r56224, r56208, MPFR_RNDN); } else { mpfr_set(r56224, r56223, MPFR_RNDN); };
        return mpfr_get_d(r56224, MPFR_RNDN);
}

static mpfr_t r56225, r56226, r56227, r56228, r56229, r56230, r56231, r56232, r56233, r56234, r56235, r56236, r56237, r56238, r56239, r56240, r56241, r56242, r56243, r56244, r56245, r56246, r56247;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r56225);
        mpfr_init_set_str(r56226, "-1.2462366172629023e+154", 10, MPFR_RNDN);
        mpfr_init(r56227);
        mpfr_init_set_str(r56228, "0.3333333333333333", 10, MPFR_RNDN);
        mpfr_init(r56229);
        mpfr_init(r56230);
        mpfr_init(r56231);
        mpfr_init_set_str(r56232, "1.8809713604828146e+158", 10, MPFR_RNDN);
        mpfr_init(r56233);
        mpfr_init(r56234);
        mpfr_init(r56235);
        mpfr_init(r56236);
        mpfr_init(r56237);
        mpfr_init(r56238);
        mpfr_init(r56239);
        mpfr_init(r56240);
        mpfr_init_set_str(r56241, "3.0", 10, MPFR_RNDN);
        mpfr_init(r56242);
        mpfr_init(r56243);
        mpfr_init(r56244);
        mpfr_init(r56245);
        mpfr_init(r56246);
        mpfr_init(r56247);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r56225, x, MPFR_RNDN);
        ;
        mpfr_set_si(r56227, mpfr_cmp(r56225, r56226) <= 0, MPFR_RNDN);
        ;
        mpfr_sqrt(r56229, r56228, MPFR_RNDN);
        mpfr_neg(r56230, r56225, MPFR_RNDN);
        mpfr_mul(r56231, r56229, r56230, MPFR_RNDN);
        ;
        mpfr_set_si(r56233, mpfr_cmp(r56225, r56232) <= 0, MPFR_RNDN);
        mpfr_mul(r56234, r56225, r56225, MPFR_RNDN);
        mpfr_set_d(r56235, y, MPFR_RNDN);
        mpfr_mul(r56236, r56235, r56235, MPFR_RNDN);
        mpfr_add(r56237, r56234, r56236, MPFR_RNDN);
        mpfr_set_d(r56238, z, MPFR_RNDN);
        mpfr_mul(r56239, r56238, r56238, MPFR_RNDN);
        mpfr_add(r56240, r56237, r56239, MPFR_RNDN);
        ;
        mpfr_div(r56242, r56240, r56241, MPFR_RNDN);
        mpfr_sqrt(r56243, r56242, MPFR_RNDN);
        mpfr_sqrt(r56244, r56241, MPFR_RNDN);
        mpfr_div(r56245, r56225, r56244, MPFR_RNDN);
        if (mpfr_get_si(r56233, MPFR_RNDN)) { mpfr_set(r56246, r56243, MPFR_RNDN); } else { mpfr_set(r56246, r56245, MPFR_RNDN); };
        if (mpfr_get_si(r56227, MPFR_RNDN)) { mpfr_set(r56247, r56231, MPFR_RNDN); } else { mpfr_set(r56247, r56246, MPFR_RNDN); };
        return mpfr_get_d(r56247, MPFR_RNDN);
}

