#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 r55422 = x;
        float r55423 = y;
        float r55424 = z;
        float r55425 = r55424 - r55422;
        float r55426 = r55423 * r55425;
        float r55427 = r55422 + r55426;
        float r55428 = r55427 / r55424;
        return r55428;
}

double f_id(double x, double y, double z) {
        double r55429 = x;
        double r55430 = y;
        double r55431 = z;
        double r55432 = r55431 - r55429;
        double r55433 = r55430 * r55432;
        double r55434 = r55429 + r55433;
        double r55435 = r55434 / r55431;
        return r55435;
}


double f_of(float x, float y, float z) {
        float r55436 = y;
        float r55437 = x;
        float r55438 = z;
        float r55439 = r55437 / r55438;
        float r55440 = r55436 + r55439;
        float r55441 = r55438 / r55437;
        float r55442 = r55436 / r55441;
        float r55443 = r55440 - r55442;
        return r55443;
}

double f_od(double x, double y, double z) {
        double r55444 = y;
        double r55445 = x;
        double r55446 = z;
        double r55447 = r55445 / r55446;
        double r55448 = r55444 + r55447;
        double r55449 = r55446 / r55445;
        double r55450 = r55444 / r55449;
        double r55451 = r55448 - r55450;
        return r55451;
}

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 r55452, r55453, r55454, r55455, r55456, r55457, r55458;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55452);
        mpfr_init(r55453);
        mpfr_init(r55454);
        mpfr_init(r55455);
        mpfr_init(r55456);
        mpfr_init(r55457);
        mpfr_init(r55458);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55452, x, MPFR_RNDN);
        mpfr_set_d(r55453, y, MPFR_RNDN);
        mpfr_set_d(r55454, z, MPFR_RNDN);
        mpfr_sub(r55455, r55454, r55452, MPFR_RNDN);
        mpfr_mul(r55456, r55453, r55455, MPFR_RNDN);
        mpfr_add(r55457, r55452, r55456, MPFR_RNDN);
        mpfr_div(r55458, r55457, r55454, MPFR_RNDN);
        return mpfr_get_d(r55458, MPFR_RNDN);
}

static mpfr_t r55459, r55460, r55461, r55462, r55463, r55464, r55465, r55466;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55459);
        mpfr_init(r55460);
        mpfr_init(r55461);
        mpfr_init(r55462);
        mpfr_init(r55463);
        mpfr_init(r55464);
        mpfr_init(r55465);
        mpfr_init(r55466);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55459, y, MPFR_RNDN);
        mpfr_set_d(r55460, x, MPFR_RNDN);
        mpfr_set_d(r55461, z, MPFR_RNDN);
        mpfr_div(r55462, r55460, r55461, MPFR_RNDN);
        mpfr_add(r55463, r55459, r55462, MPFR_RNDN);
        mpfr_div(r55464, r55461, r55460, MPFR_RNDN);
        mpfr_div(r55465, r55459, r55464, MPFR_RNDN);
        mpfr_sub(r55466, r55463, r55465, MPFR_RNDN);
        return mpfr_get_d(r55466, MPFR_RNDN);
}

static mpfr_t r55467, r55468, r55469, r55470, r55471, r55472, r55473, r55474;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55467);
        mpfr_init(r55468);
        mpfr_init(r55469);
        mpfr_init(r55470);
        mpfr_init(r55471);
        mpfr_init(r55472);
        mpfr_init(r55473);
        mpfr_init(r55474);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55467, y, MPFR_RNDN);
        mpfr_set_d(r55468, x, MPFR_RNDN);
        mpfr_set_d(r55469, z, MPFR_RNDN);
        mpfr_div(r55470, r55468, r55469, MPFR_RNDN);
        mpfr_add(r55471, r55467, r55470, MPFR_RNDN);
        mpfr_div(r55472, r55469, r55468, MPFR_RNDN);
        mpfr_div(r55473, r55467, r55472, MPFR_RNDN);
        mpfr_sub(r55474, r55471, r55473, MPFR_RNDN);
        return mpfr_get_d(r55474, MPFR_RNDN);
}

