#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 r54025 = x;
        float r54026 = y;
        float r54027 = z;
        float r54028 = r54027 - r54025;
        float r54029 = r54026 * r54028;
        float r54030 = r54025 + r54029;
        float r54031 = r54030 / r54027;
        return r54031;
}

double f_id(double x, double y, double z) {
        double r54032 = x;
        double r54033 = y;
        double r54034 = z;
        double r54035 = r54034 - r54032;
        double r54036 = r54033 * r54035;
        double r54037 = r54032 + r54036;
        double r54038 = r54037 / r54034;
        return r54038;
}


double f_of(float x, float y, float z) {
        float r54039 = y;
        float r54040 = x;
        float r54041 = z;
        float r54042 = r54040 / r54041;
        float r54043 = r54039 + r54042;
        float r54044 = r54041 / r54040;
        float r54045 = r54039 / r54044;
        float r54046 = r54043 - r54045;
        return r54046;
}

double f_od(double x, double y, double z) {
        double r54047 = y;
        double r54048 = x;
        double r54049 = z;
        double r54050 = r54048 / r54049;
        double r54051 = r54047 + r54050;
        double r54052 = r54049 / r54048;
        double r54053 = r54047 / r54052;
        double r54054 = r54051 - r54053;
        return r54054;
}

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 r54055, r54056, r54057, r54058, r54059, r54060, r54061;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54055);
        mpfr_init(r54056);
        mpfr_init(r54057);
        mpfr_init(r54058);
        mpfr_init(r54059);
        mpfr_init(r54060);
        mpfr_init(r54061);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r54055, x, MPFR_RNDN);
        mpfr_set_d(r54056, y, MPFR_RNDN);
        mpfr_set_d(r54057, z, MPFR_RNDN);
        mpfr_sub(r54058, r54057, r54055, MPFR_RNDN);
        mpfr_mul(r54059, r54056, r54058, MPFR_RNDN);
        mpfr_add(r54060, r54055, r54059, MPFR_RNDN);
        mpfr_div(r54061, r54060, r54057, MPFR_RNDN);
        return mpfr_get_d(r54061, MPFR_RNDN);
}

static mpfr_t r54062, r54063, r54064, r54065, r54066, r54067, r54068, r54069;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54062);
        mpfr_init(r54063);
        mpfr_init(r54064);
        mpfr_init(r54065);
        mpfr_init(r54066);
        mpfr_init(r54067);
        mpfr_init(r54068);
        mpfr_init(r54069);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r54062, y, MPFR_RNDN);
        mpfr_set_d(r54063, x, MPFR_RNDN);
        mpfr_set_d(r54064, z, MPFR_RNDN);
        mpfr_div(r54065, r54063, r54064, MPFR_RNDN);
        mpfr_add(r54066, r54062, r54065, MPFR_RNDN);
        mpfr_div(r54067, r54064, r54063, MPFR_RNDN);
        mpfr_div(r54068, r54062, r54067, MPFR_RNDN);
        mpfr_sub(r54069, r54066, r54068, MPFR_RNDN);
        return mpfr_get_d(r54069, MPFR_RNDN);
}

static mpfr_t r54070, r54071, r54072, r54073, r54074, r54075, r54076, r54077;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54070);
        mpfr_init(r54071);
        mpfr_init(r54072);
        mpfr_init(r54073);
        mpfr_init(r54074);
        mpfr_init(r54075);
        mpfr_init(r54076);
        mpfr_init(r54077);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r54070, y, MPFR_RNDN);
        mpfr_set_d(r54071, x, MPFR_RNDN);
        mpfr_set_d(r54072, z, MPFR_RNDN);
        mpfr_div(r54073, r54071, r54072, MPFR_RNDN);
        mpfr_add(r54074, r54070, r54073, MPFR_RNDN);
        mpfr_div(r54075, r54072, r54071, MPFR_RNDN);
        mpfr_div(r54076, r54070, r54075, MPFR_RNDN);
        mpfr_sub(r54077, r54074, r54076, MPFR_RNDN);
        return mpfr_get_d(r54077, MPFR_RNDN);
}

