#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 r51071 = x;
        float r51072 = r51071 * r51071;
        float r51073 = y;
        float r51074 = 4.0;
        float r51075 = r51073 * r51074;
        float r51076 = z;
        float r51077 = r51076 * r51076;
        float r51078 = t;
        float r51079 = r51077 - r51078;
        float r51080 = r51075 * r51079;
        float r51081 = r51072 - r51080;
        return r51081;
}

double f_id(double x, double y, double z, double t) {
        double r51082 = x;
        double r51083 = r51082 * r51082;
        double r51084 = y;
        double r51085 = 4.0;
        double r51086 = r51084 * r51085;
        double r51087 = z;
        double r51088 = r51087 * r51087;
        double r51089 = t;
        double r51090 = r51088 - r51089;
        double r51091 = r51086 * r51090;
        double r51092 = r51083 - r51091;
        return r51092;
}


double f_of(float x, float y, float z, float t) {
        float r51093 = x;
        float r51094 = r51093 * r51093;
        float r51095 = y;
        float r51096 = 4.0;
        float r51097 = r51095 * r51096;
        float r51098 = z;
        float r51099 = r51098 * r51098;
        float r51100 = t;
        float r51101 = r51099 - r51100;
        float r51102 = r51097 * r51101;
        float r51103 = r51094 - r51102;
        return r51103;
}

double f_od(double x, double y, double z, double t) {
        double r51104 = x;
        double r51105 = r51104 * r51104;
        double r51106 = y;
        double r51107 = 4.0;
        double r51108 = r51106 * r51107;
        double r51109 = z;
        double r51110 = r51109 * r51109;
        double r51111 = t;
        double r51112 = r51110 - r51111;
        double r51113 = r51108 * r51112;
        double r51114 = r51105 - r51113;
        return r51114;
}

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 r51115, r51116, r51117, r51118, r51119, r51120, r51121, r51122, r51123, r51124, r51125;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51115);
        mpfr_init(r51116);
        mpfr_init(r51117);
        mpfr_init_set_str(r51118, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51119);
        mpfr_init(r51120);
        mpfr_init(r51121);
        mpfr_init(r51122);
        mpfr_init(r51123);
        mpfr_init(r51124);
        mpfr_init(r51125);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r51115, x, MPFR_RNDN);
        mpfr_mul(r51116, r51115, r51115, MPFR_RNDN);
        mpfr_set_d(r51117, y, MPFR_RNDN);
        ;
        mpfr_mul(r51119, r51117, r51118, MPFR_RNDN);
        mpfr_set_d(r51120, z, MPFR_RNDN);
        mpfr_mul(r51121, r51120, r51120, MPFR_RNDN);
        mpfr_set_d(r51122, t, MPFR_RNDN);
        mpfr_sub(r51123, r51121, r51122, MPFR_RNDN);
        mpfr_mul(r51124, r51119, r51123, MPFR_RNDN);
        mpfr_sub(r51125, r51116, r51124, MPFR_RNDN);
        return mpfr_get_d(r51125, MPFR_RNDN);
}

static mpfr_t r51126, r51127, r51128, r51129, r51130, r51131, r51132, r51133, r51134, r51135, r51136;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51126);
        mpfr_init(r51127);
        mpfr_init(r51128);
        mpfr_init_set_str(r51129, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51130);
        mpfr_init(r51131);
        mpfr_init(r51132);
        mpfr_init(r51133);
        mpfr_init(r51134);
        mpfr_init(r51135);
        mpfr_init(r51136);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r51126, x, MPFR_RNDN);
        mpfr_mul(r51127, r51126, r51126, MPFR_RNDN);
        mpfr_set_d(r51128, y, MPFR_RNDN);
        ;
        mpfr_mul(r51130, r51128, r51129, MPFR_RNDN);
        mpfr_set_d(r51131, z, MPFR_RNDN);
        mpfr_mul(r51132, r51131, r51131, MPFR_RNDN);
        mpfr_set_d(r51133, t, MPFR_RNDN);
        mpfr_sub(r51134, r51132, r51133, MPFR_RNDN);
        mpfr_mul(r51135, r51130, r51134, MPFR_RNDN);
        mpfr_sub(r51136, r51127, r51135, MPFR_RNDN);
        return mpfr_get_d(r51136, MPFR_RNDN);
}

static mpfr_t r51137, r51138, r51139, r51140, r51141, r51142, r51143, r51144, r51145, r51146, r51147;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51137);
        mpfr_init(r51138);
        mpfr_init(r51139);
        mpfr_init_set_str(r51140, "4.0", 10, MPFR_RNDN);
        mpfr_init(r51141);
        mpfr_init(r51142);
        mpfr_init(r51143);
        mpfr_init(r51144);
        mpfr_init(r51145);
        mpfr_init(r51146);
        mpfr_init(r51147);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r51137, x, MPFR_RNDN);
        mpfr_mul(r51138, r51137, r51137, MPFR_RNDN);
        mpfr_set_d(r51139, y, MPFR_RNDN);
        ;
        mpfr_mul(r51141, r51139, r51140, MPFR_RNDN);
        mpfr_set_d(r51142, z, MPFR_RNDN);
        mpfr_mul(r51143, r51142, r51142, MPFR_RNDN);
        mpfr_set_d(r51144, t, MPFR_RNDN);
        mpfr_sub(r51145, r51143, r51144, MPFR_RNDN);
        mpfr_mul(r51146, r51141, r51145, MPFR_RNDN);
        mpfr_sub(r51147, r51138, r51146, MPFR_RNDN);
        return mpfr_get_d(r51147, MPFR_RNDN);
}

