#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";

double f_if(float x, float y) {
        float r48301 = x;
        float r48302 = y;
        float r48303 = r48302 * r48302;
        float r48304 = r48301 - r48303;
        return r48304;
}

double f_id(double x, double y) {
        double r48305 = x;
        double r48306 = y;
        double r48307 = r48306 * r48306;
        double r48308 = r48305 - r48307;
        return r48308;
}


double f_of(float x, float y) {
        float r48309 = x;
        float r48310 = y;
        float r48311 = r48310 * r48310;
        float r48312 = r48309 - r48311;
        return r48312;
}

double f_od(double x, double y) {
        double r48313 = x;
        double r48314 = y;
        double r48315 = r48314 * r48314;
        double r48316 = r48313 - r48315;
        return r48316;
}

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 r48317, r48318, r48319, r48320;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r48317);
        mpfr_init(r48318);
        mpfr_init(r48319);
        mpfr_init(r48320);
}

double f_im(double x, double y) {
        mpfr_set_d(r48317, x, MPFR_RNDN);
        mpfr_set_d(r48318, y, MPFR_RNDN);
        mpfr_mul(r48319, r48318, r48318, MPFR_RNDN);
        mpfr_sub(r48320, r48317, r48319, MPFR_RNDN);
        return mpfr_get_d(r48320, MPFR_RNDN);
}

static mpfr_t r48321, r48322, r48323, r48324;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48321);
        mpfr_init(r48322);
        mpfr_init(r48323);
        mpfr_init(r48324);
}

double f_fm(double x, double y) {
        mpfr_set_d(r48321, x, MPFR_RNDN);
        mpfr_set_d(r48322, y, MPFR_RNDN);
        mpfr_sqr(r48323, r48322, MPFR_RNDN);
        mpfr_sub(r48324, r48321, r48323, MPFR_RNDN);
        return mpfr_get_d(r48324, MPFR_RNDN);
}

static mpfr_t r48325, r48326, r48327, r48328;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r48325);
        mpfr_init(r48326);
        mpfr_init(r48327);
        mpfr_init(r48328);
}

double f_dm(double x, double y) {
        mpfr_set_d(r48325, x, MPFR_RNDN);
        mpfr_set_d(r48326, y, MPFR_RNDN);
        mpfr_sqr(r48327, r48326, MPFR_RNDN);
        mpfr_sub(r48328, r48325, r48327, MPFR_RNDN);
        return mpfr_get_d(r48328, MPFR_RNDN);
}

