#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 r50783 = x;
        float r50784 = r50783 * r50783;
        float r50785 = y;
        float r50786 = 4.0;
        float r50787 = r50785 * r50786;
        float r50788 = z;
        float r50789 = r50788 * r50788;
        float r50790 = t;
        float r50791 = r50789 - r50790;
        float r50792 = r50787 * r50791;
        float r50793 = r50784 - r50792;
        return r50793;
}

double f_id(double x, double y, double z, double t) {
        double r50794 = x;
        double r50795 = r50794 * r50794;
        double r50796 = y;
        double r50797 = 4.0;
        double r50798 = r50796 * r50797;
        double r50799 = z;
        double r50800 = r50799 * r50799;
        double r50801 = t;
        double r50802 = r50800 - r50801;
        double r50803 = r50798 * r50802;
        double r50804 = r50795 - r50803;
        return r50804;
}


double f_of(float x, float y, float z, float t) {
        float r50805 = x;
        float r50806 = r50805 * r50805;
        float r50807 = y;
        float r50808 = 4.0;
        float r50809 = r50807 * r50808;
        float r50810 = z;
        float r50811 = r50810 * r50810;
        float r50812 = t;
        float r50813 = r50811 - r50812;
        float r50814 = r50809 * r50813;
        float r50815 = r50806 - r50814;
        return r50815;
}

double f_od(double x, double y, double z, double t) {
        double r50816 = x;
        double r50817 = r50816 * r50816;
        double r50818 = y;
        double r50819 = 4.0;
        double r50820 = r50818 * r50819;
        double r50821 = z;
        double r50822 = r50821 * r50821;
        double r50823 = t;
        double r50824 = r50822 - r50823;
        double r50825 = r50820 * r50824;
        double r50826 = r50817 - r50825;
        return r50826;
}

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 r50827, r50828, r50829, r50830, r50831, r50832, r50833, r50834, r50835, r50836, r50837;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50827);
        mpfr_init(r50828);
        mpfr_init(r50829);
        mpfr_init_set_str(r50830, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50831);
        mpfr_init(r50832);
        mpfr_init(r50833);
        mpfr_init(r50834);
        mpfr_init(r50835);
        mpfr_init(r50836);
        mpfr_init(r50837);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50827, x, MPFR_RNDN);
        mpfr_mul(r50828, r50827, r50827, MPFR_RNDN);
        mpfr_set_d(r50829, y, MPFR_RNDN);
        ;
        mpfr_mul(r50831, r50829, r50830, MPFR_RNDN);
        mpfr_set_d(r50832, z, MPFR_RNDN);
        mpfr_mul(r50833, r50832, r50832, MPFR_RNDN);
        mpfr_set_d(r50834, t, MPFR_RNDN);
        mpfr_sub(r50835, r50833, r50834, MPFR_RNDN);
        mpfr_mul(r50836, r50831, r50835, MPFR_RNDN);
        mpfr_sub(r50837, r50828, r50836, MPFR_RNDN);
        return mpfr_get_d(r50837, MPFR_RNDN);
}

static mpfr_t r50838, r50839, r50840, r50841, r50842, r50843, r50844, r50845, r50846, r50847, r50848;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50838);
        mpfr_init(r50839);
        mpfr_init(r50840);
        mpfr_init_set_str(r50841, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50842);
        mpfr_init(r50843);
        mpfr_init(r50844);
        mpfr_init(r50845);
        mpfr_init(r50846);
        mpfr_init(r50847);
        mpfr_init(r50848);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50838, x, MPFR_RNDN);
        mpfr_mul(r50839, r50838, r50838, MPFR_RNDN);
        mpfr_set_d(r50840, y, MPFR_RNDN);
        ;
        mpfr_mul(r50842, r50840, r50841, MPFR_RNDN);
        mpfr_set_d(r50843, z, MPFR_RNDN);
        mpfr_mul(r50844, r50843, r50843, MPFR_RNDN);
        mpfr_set_d(r50845, t, MPFR_RNDN);
        mpfr_sub(r50846, r50844, r50845, MPFR_RNDN);
        mpfr_mul(r50847, r50842, r50846, MPFR_RNDN);
        mpfr_sub(r50848, r50839, r50847, MPFR_RNDN);
        return mpfr_get_d(r50848, MPFR_RNDN);
}

static mpfr_t r50849, r50850, r50851, r50852, r50853, r50854, r50855, r50856, r50857, r50858, r50859;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50849);
        mpfr_init(r50850);
        mpfr_init(r50851);
        mpfr_init_set_str(r50852, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50853);
        mpfr_init(r50854);
        mpfr_init(r50855);
        mpfr_init(r50856);
        mpfr_init(r50857);
        mpfr_init(r50858);
        mpfr_init(r50859);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50849, x, MPFR_RNDN);
        mpfr_mul(r50850, r50849, r50849, MPFR_RNDN);
        mpfr_set_d(r50851, y, MPFR_RNDN);
        ;
        mpfr_mul(r50853, r50851, r50852, MPFR_RNDN);
        mpfr_set_d(r50854, z, MPFR_RNDN);
        mpfr_mul(r50855, r50854, r50854, MPFR_RNDN);
        mpfr_set_d(r50856, t, MPFR_RNDN);
        mpfr_sub(r50857, r50855, r50856, MPFR_RNDN);
        mpfr_mul(r50858, r50853, r50857, MPFR_RNDN);
        mpfr_sub(r50859, r50850, r50858, MPFR_RNDN);
        return mpfr_get_d(r50859, MPFR_RNDN);
}

