#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 r50877 = x;
        float r50878 = r50877 * r50877;
        float r50879 = y;
        float r50880 = 4.0;
        float r50881 = r50879 * r50880;
        float r50882 = z;
        float r50883 = r50882 * r50882;
        float r50884 = t;
        float r50885 = r50883 - r50884;
        float r50886 = r50881 * r50885;
        float r50887 = r50878 - r50886;
        return r50887;
}

double f_id(double x, double y, double z, double t) {
        double r50888 = x;
        double r50889 = r50888 * r50888;
        double r50890 = y;
        double r50891 = 4.0;
        double r50892 = r50890 * r50891;
        double r50893 = z;
        double r50894 = r50893 * r50893;
        double r50895 = t;
        double r50896 = r50894 - r50895;
        double r50897 = r50892 * r50896;
        double r50898 = r50889 - r50897;
        return r50898;
}


double f_of(float x, float y, float z, float t) {
        float r50899 = x;
        float r50900 = r50899 * r50899;
        float r50901 = y;
        float r50902 = 4.0;
        float r50903 = r50901 * r50902;
        float r50904 = z;
        float r50905 = r50904 * r50904;
        float r50906 = t;
        float r50907 = r50905 - r50906;
        float r50908 = r50903 * r50907;
        float r50909 = r50900 - r50908;
        return r50909;
}

double f_od(double x, double y, double z, double t) {
        double r50910 = x;
        double r50911 = r50910 * r50910;
        double r50912 = y;
        double r50913 = 4.0;
        double r50914 = r50912 * r50913;
        double r50915 = z;
        double r50916 = r50915 * r50915;
        double r50917 = t;
        double r50918 = r50916 - r50917;
        double r50919 = r50914 * r50918;
        double r50920 = r50911 - r50919;
        return r50920;
}

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 r50921, r50922, r50923, r50924, r50925, r50926, r50927, r50928, r50929, r50930, r50931;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50921);
        mpfr_init(r50922);
        mpfr_init(r50923);
        mpfr_init_set_str(r50924, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50925);
        mpfr_init(r50926);
        mpfr_init(r50927);
        mpfr_init(r50928);
        mpfr_init(r50929);
        mpfr_init(r50930);
        mpfr_init(r50931);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50921, x, MPFR_RNDN);
        mpfr_mul(r50922, r50921, r50921, MPFR_RNDN);
        mpfr_set_d(r50923, y, MPFR_RNDN);
        ;
        mpfr_mul(r50925, r50923, r50924, MPFR_RNDN);
        mpfr_set_d(r50926, z, MPFR_RNDN);
        mpfr_mul(r50927, r50926, r50926, MPFR_RNDN);
        mpfr_set_d(r50928, t, MPFR_RNDN);
        mpfr_sub(r50929, r50927, r50928, MPFR_RNDN);
        mpfr_mul(r50930, r50925, r50929, MPFR_RNDN);
        mpfr_sub(r50931, r50922, r50930, MPFR_RNDN);
        return mpfr_get_d(r50931, MPFR_RNDN);
}

static mpfr_t r50932, r50933, r50934, r50935, r50936, r50937, r50938, r50939, r50940, r50941, r50942;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50932);
        mpfr_init(r50933);
        mpfr_init(r50934);
        mpfr_init_set_str(r50935, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50936);
        mpfr_init(r50937);
        mpfr_init(r50938);
        mpfr_init(r50939);
        mpfr_init(r50940);
        mpfr_init(r50941);
        mpfr_init(r50942);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50932, x, MPFR_RNDN);
        mpfr_mul(r50933, r50932, r50932, MPFR_RNDN);
        mpfr_set_d(r50934, y, MPFR_RNDN);
        ;
        mpfr_mul(r50936, r50934, r50935, MPFR_RNDN);
        mpfr_set_d(r50937, z, MPFR_RNDN);
        mpfr_mul(r50938, r50937, r50937, MPFR_RNDN);
        mpfr_set_d(r50939, t, MPFR_RNDN);
        mpfr_sub(r50940, r50938, r50939, MPFR_RNDN);
        mpfr_mul(r50941, r50936, r50940, MPFR_RNDN);
        mpfr_sub(r50942, r50933, r50941, MPFR_RNDN);
        return mpfr_get_d(r50942, MPFR_RNDN);
}

static mpfr_t r50943, r50944, r50945, r50946, r50947, r50948, r50949, r50950, r50951, r50952, r50953;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50943);
        mpfr_init(r50944);
        mpfr_init(r50945);
        mpfr_init_set_str(r50946, "4.0", 10, MPFR_RNDN);
        mpfr_init(r50947);
        mpfr_init(r50948);
        mpfr_init(r50949);
        mpfr_init(r50950);
        mpfr_init(r50951);
        mpfr_init(r50952);
        mpfr_init(r50953);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50943, x, MPFR_RNDN);
        mpfr_mul(r50944, r50943, r50943, MPFR_RNDN);
        mpfr_set_d(r50945, y, MPFR_RNDN);
        ;
        mpfr_mul(r50947, r50945, r50946, MPFR_RNDN);
        mpfr_set_d(r50948, z, MPFR_RNDN);
        mpfr_mul(r50949, r50948, r50948, MPFR_RNDN);
        mpfr_set_d(r50950, t, MPFR_RNDN);
        mpfr_sub(r50951, r50949, r50950, MPFR_RNDN);
        mpfr_mul(r50952, r50947, r50951, MPFR_RNDN);
        mpfr_sub(r50953, r50944, r50952, MPFR_RNDN);
        return mpfr_get_d(r50953, MPFR_RNDN);
}

