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

char *name = "Diagrams.Backend.Rasterific:rasterificRadialGradient from diagrams-rasterific-1.3.1.3";

double f_if(float x, float y, float z) {
        float r55200 = x;
        float r55201 = y;
        float r55202 = z;
        float r55203 = r55202 - r55200;
        float r55204 = r55201 * r55203;
        float r55205 = r55200 + r55204;
        float r55206 = r55205 / r55202;
        return r55206;
}

double f_id(double x, double y, double z) {
        double r55207 = x;
        double r55208 = y;
        double r55209 = z;
        double r55210 = r55209 - r55207;
        double r55211 = r55208 * r55210;
        double r55212 = r55207 + r55211;
        double r55213 = r55212 / r55209;
        return r55213;
}


double f_of(float x, float y, float z) {
        float r55214 = y;
        float r55215 = x;
        float r55216 = z;
        float r55217 = r55215 / r55216;
        float r55218 = r55214 + r55217;
        float r55219 = r55216 / r55215;
        float r55220 = r55214 / r55219;
        float r55221 = r55218 - r55220;
        return r55221;
}

double f_od(double x, double y, double z) {
        double r55222 = y;
        double r55223 = x;
        double r55224 = z;
        double r55225 = r55223 / r55224;
        double r55226 = r55222 + r55225;
        double r55227 = r55224 / r55223;
        double r55228 = r55222 / r55227;
        double r55229 = r55226 - r55228;
        return r55229;
}

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 r55230, r55231, r55232, r55233, r55234, r55235, r55236;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55230);
        mpfr_init(r55231);
        mpfr_init(r55232);
        mpfr_init(r55233);
        mpfr_init(r55234);
        mpfr_init(r55235);
        mpfr_init(r55236);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55230, x, MPFR_RNDN);
        mpfr_set_d(r55231, y, MPFR_RNDN);
        mpfr_set_d(r55232, z, MPFR_RNDN);
        mpfr_sub(r55233, r55232, r55230, MPFR_RNDN);
        mpfr_mul(r55234, r55231, r55233, MPFR_RNDN);
        mpfr_add(r55235, r55230, r55234, MPFR_RNDN);
        mpfr_div(r55236, r55235, r55232, MPFR_RNDN);
        return mpfr_get_d(r55236, MPFR_RNDN);
}

static mpfr_t r55237, r55238, r55239, r55240, r55241, r55242, r55243, r55244;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55237);
        mpfr_init(r55238);
        mpfr_init(r55239);
        mpfr_init(r55240);
        mpfr_init(r55241);
        mpfr_init(r55242);
        mpfr_init(r55243);
        mpfr_init(r55244);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55237, y, MPFR_RNDN);
        mpfr_set_d(r55238, x, MPFR_RNDN);
        mpfr_set_d(r55239, z, MPFR_RNDN);
        mpfr_div(r55240, r55238, r55239, MPFR_RNDN);
        mpfr_add(r55241, r55237, r55240, MPFR_RNDN);
        mpfr_div(r55242, r55239, r55238, MPFR_RNDN);
        mpfr_div(r55243, r55237, r55242, MPFR_RNDN);
        mpfr_sub(r55244, r55241, r55243, MPFR_RNDN);
        return mpfr_get_d(r55244, MPFR_RNDN);
}

static mpfr_t r55245, r55246, r55247, r55248, r55249, r55250, r55251, r55252;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55245);
        mpfr_init(r55246);
        mpfr_init(r55247);
        mpfr_init(r55248);
        mpfr_init(r55249);
        mpfr_init(r55250);
        mpfr_init(r55251);
        mpfr_init(r55252);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55245, y, MPFR_RNDN);
        mpfr_set_d(r55246, x, MPFR_RNDN);
        mpfr_set_d(r55247, z, MPFR_RNDN);
        mpfr_div(r55248, r55246, r55247, MPFR_RNDN);
        mpfr_add(r55249, r55245, r55248, MPFR_RNDN);
        mpfr_div(r55250, r55247, r55246, MPFR_RNDN);
        mpfr_div(r55251, r55245, r55250, MPFR_RNDN);
        mpfr_sub(r55252, r55249, r55251, MPFR_RNDN);
        return mpfr_get_d(r55252, MPFR_RNDN);
}

