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

char *name = "Graphics.Rasterific.Shading:$sradialGradientWithFocusShader from Rasterific-0.6.1, B";

double f_if(float x, float y, float z, float t) {
        float r48196 = x;
        float r48197 = r48196 * r48196;
        float r48198 = y;
        float r48199 = 4.0f;
        float r48200 = r48198 * r48199;
        float r48201 = z;
        float r48202 = r48201 * r48201;
        float r48203 = t;
        float r48204 = r48202 - r48203;
        float r48205 = r48200 * r48204;
        float r48206 = r48197 - r48205;
        return r48206;
}

double f_id(double x, double y, double z, double t) {
        double r48207 = x;
        double r48208 = r48207 * r48207;
        double r48209 = y;
        double r48210 = 4.0;
        double r48211 = r48209 * r48210;
        double r48212 = z;
        double r48213 = r48212 * r48212;
        double r48214 = t;
        double r48215 = r48213 - r48214;
        double r48216 = r48211 * r48215;
        double r48217 = r48208 - r48216;
        return r48217;
}


double f_of(float x, float y, float z, float t) {
        float r48218 = x;
        float r48219 = r48218 * r48218;
        float r48220 = z;
        float r48221 = r48220 * r48220;
        float r48222 = t;
        float r48223 = r48221 - r48222;
        float r48224 = y;
        float r48225 = r48223 * r48224;
        float r48226 = 4.0f;
        float r48227 = r48225 * r48226;
        float r48228 = r48219 - r48227;
        return r48228;
}

double f_od(double x, double y, double z, double t) {
        double r48229 = x;
        double r48230 = r48229 * r48229;
        double r48231 = z;
        double r48232 = r48231 * r48231;
        double r48233 = t;
        double r48234 = r48232 - r48233;
        double r48235 = y;
        double r48236 = r48234 * r48235;
        double r48237 = 4.0;
        double r48238 = r48236 * r48237;
        double r48239 = r48230 - r48238;
        return r48239;
}

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 r48240, r48241, r48242, r48243, r48244, r48245, r48246, r48247, r48248, r48249, r48250;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r48240);
        mpfr_init(r48241);
        mpfr_init(r48242);
        mpfr_init_set_str(r48243, "4.0", 10, MPFR_RNDN);
        mpfr_init(r48244);
        mpfr_init(r48245);
        mpfr_init(r48246);
        mpfr_init(r48247);
        mpfr_init(r48248);
        mpfr_init(r48249);
        mpfr_init(r48250);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r48240, x, MPFR_RNDN);
        mpfr_mul(r48241, r48240, r48240, MPFR_RNDN);
        mpfr_set_d(r48242, y, MPFR_RNDN);
        ;
        mpfr_mul(r48244, r48242, r48243, MPFR_RNDN);
        mpfr_set_d(r48245, z, MPFR_RNDN);
        mpfr_mul(r48246, r48245, r48245, MPFR_RNDN);
        mpfr_set_d(r48247, t, MPFR_RNDN);
        mpfr_sub(r48248, r48246, r48247, MPFR_RNDN);
        mpfr_mul(r48249, r48244, r48248, MPFR_RNDN);
        mpfr_sub(r48250, r48241, r48249, MPFR_RNDN);
        return mpfr_get_d(r48250, MPFR_RNDN);
}

static mpfr_t r48251, r48252, r48253, r48254, r48255, r48256, r48257, r48258, r48259, r48260, r48261;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48251);
        mpfr_init(r48252);
        mpfr_init(r48253);
        mpfr_init(r48254);
        mpfr_init(r48255);
        mpfr_init(r48256);
        mpfr_init(r48257);
        mpfr_init(r48258);
        mpfr_init_set_str(r48259, "4.0", 10, MPFR_RNDN);
        mpfr_init(r48260);
        mpfr_init(r48261);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r48251, x, MPFR_RNDN);
        mpfr_sqr(r48252, r48251, MPFR_RNDN);
        mpfr_set_d(r48253, z, MPFR_RNDN);
        mpfr_sqr(r48254, r48253, MPFR_RNDN);
        mpfr_set_d(r48255, t, MPFR_RNDN);
        mpfr_sub(r48256, r48254, r48255, MPFR_RNDN);
        mpfr_set_d(r48257, y, MPFR_RNDN);
        mpfr_mul(r48258, r48256, r48257, MPFR_RNDN);
        ;
        mpfr_mul(r48260, r48258, r48259, MPFR_RNDN);
        mpfr_sub(r48261, r48252, r48260, MPFR_RNDN);
        return mpfr_get_d(r48261, MPFR_RNDN);
}

static mpfr_t r48262, r48263, r48264, r48265, r48266, r48267, r48268, r48269, r48270, r48271, r48272;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48262);
        mpfr_init(r48263);
        mpfr_init(r48264);
        mpfr_init(r48265);
        mpfr_init(r48266);
        mpfr_init(r48267);
        mpfr_init(r48268);
        mpfr_init(r48269);
        mpfr_init_set_str(r48270, "4.0", 10, MPFR_RNDN);
        mpfr_init(r48271);
        mpfr_init(r48272);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r48262, x, MPFR_RNDN);
        mpfr_sqr(r48263, r48262, MPFR_RNDN);
        mpfr_set_d(r48264, z, MPFR_RNDN);
        mpfr_sqr(r48265, r48264, MPFR_RNDN);
        mpfr_set_d(r48266, t, MPFR_RNDN);
        mpfr_sub(r48267, r48265, r48266, MPFR_RNDN);
        mpfr_set_d(r48268, y, MPFR_RNDN);
        mpfr_mul(r48269, r48267, r48268, MPFR_RNDN);
        ;
        mpfr_mul(r48271, r48269, r48270, MPFR_RNDN);
        mpfr_sub(r48272, r48263, r48271, MPFR_RNDN);
        return mpfr_get_d(r48272, MPFR_RNDN);
}

