#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 r53989 = x;
        float r53990 = y;
        float r53991 = z;
        float r53992 = r53991 - r53989;
        float r53993 = r53990 * r53992;
        float r53994 = r53989 + r53993;
        float r53995 = r53994 / r53991;
        return r53995;
}

double f_id(double x, double y, double z) {
        double r53996 = x;
        double r53997 = y;
        double r53998 = z;
        double r53999 = r53998 - r53996;
        double r54000 = r53997 * r53999;
        double r54001 = r53996 + r54000;
        double r54002 = r54001 / r53998;
        return r54002;
}


double f_of(float x, float y, float z) {
        float r54003 = y;
        float r54004 = x;
        float r54005 = z;
        float r54006 = r54004 / r54005;
        float r54007 = r54003 + r54006;
        float r54008 = r54005 / r54004;
        float r54009 = r54003 / r54008;
        float r54010 = r54007 - r54009;
        return r54010;
}

double f_od(double x, double y, double z) {
        double r54011 = y;
        double r54012 = x;
        double r54013 = z;
        double r54014 = r54012 / r54013;
        double r54015 = r54011 + r54014;
        double r54016 = r54013 / r54012;
        double r54017 = r54011 / r54016;
        double r54018 = r54015 - r54017;
        return r54018;
}

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 r54019, r54020, r54021, r54022, r54023, r54024, r54025;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r54019);
        mpfr_init(r54020);
        mpfr_init(r54021);
        mpfr_init(r54022);
        mpfr_init(r54023);
        mpfr_init(r54024);
        mpfr_init(r54025);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r54019, x, MPFR_RNDN);
        mpfr_set_d(r54020, y, MPFR_RNDN);
        mpfr_set_d(r54021, z, MPFR_RNDN);
        mpfr_sub(r54022, r54021, r54019, MPFR_RNDN);
        mpfr_mul(r54023, r54020, r54022, MPFR_RNDN);
        mpfr_add(r54024, r54019, r54023, MPFR_RNDN);
        mpfr_div(r54025, r54024, r54021, MPFR_RNDN);
        return mpfr_get_d(r54025, MPFR_RNDN);
}

static mpfr_t r54026, r54027, r54028, r54029, r54030, r54031, r54032, r54033;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54026);
        mpfr_init(r54027);
        mpfr_init(r54028);
        mpfr_init(r54029);
        mpfr_init(r54030);
        mpfr_init(r54031);
        mpfr_init(r54032);
        mpfr_init(r54033);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r54026, y, MPFR_RNDN);
        mpfr_set_d(r54027, x, MPFR_RNDN);
        mpfr_set_d(r54028, z, MPFR_RNDN);
        mpfr_div(r54029, r54027, r54028, MPFR_RNDN);
        mpfr_add(r54030, r54026, r54029, MPFR_RNDN);
        mpfr_div(r54031, r54028, r54027, MPFR_RNDN);
        mpfr_div(r54032, r54026, r54031, MPFR_RNDN);
        mpfr_sub(r54033, r54030, r54032, MPFR_RNDN);
        return mpfr_get_d(r54033, MPFR_RNDN);
}

static mpfr_t r54034, r54035, r54036, r54037, r54038, r54039, r54040, r54041;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r54034);
        mpfr_init(r54035);
        mpfr_init(r54036);
        mpfr_init(r54037);
        mpfr_init(r54038);
        mpfr_init(r54039);
        mpfr_init(r54040);
        mpfr_init(r54041);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r54034, y, MPFR_RNDN);
        mpfr_set_d(r54035, x, MPFR_RNDN);
        mpfr_set_d(r54036, z, MPFR_RNDN);
        mpfr_div(r54037, r54035, r54036, MPFR_RNDN);
        mpfr_add(r54038, r54034, r54037, MPFR_RNDN);
        mpfr_div(r54039, r54036, r54035, MPFR_RNDN);
        mpfr_div(r54040, r54034, r54039, MPFR_RNDN);
        mpfr_sub(r54041, r54038, r54040, MPFR_RNDN);
        return mpfr_get_d(r54041, MPFR_RNDN);
}

