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

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

double f_if(float x, float y, float z) {
        float r55323 = x;
        float r55324 = y;
        float r55325 = r55323 * r55324;
        float r55326 = 1.0;
        float r55327 = r55326 - r55323;
        float r55328 = z;
        float r55329 = r55327 * r55328;
        float r55330 = r55325 + r55329;
        return r55330;
}

double f_id(double x, double y, double z) {
        double r55331 = x;
        double r55332 = y;
        double r55333 = r55331 * r55332;
        double r55334 = 1.0;
        double r55335 = r55334 - r55331;
        double r55336 = z;
        double r55337 = r55335 * r55336;
        double r55338 = r55333 + r55337;
        return r55338;
}


double f_of(float x, float y, float z) {
        float r55339 = x;
        float r55340 = y;
        float r55341 = r55339 * r55340;
        float r55342 = 1.0;
        float r55343 = r55342 - r55339;
        float r55344 = z;
        float r55345 = r55343 * r55344;
        float r55346 = r55341 + r55345;
        return r55346;
}

double f_od(double x, double y, double z) {
        double r55347 = x;
        double r55348 = y;
        double r55349 = r55347 * r55348;
        double r55350 = 1.0;
        double r55351 = r55350 - r55347;
        double r55352 = z;
        double r55353 = r55351 * r55352;
        double r55354 = r55349 + r55353;
        return r55354;
}

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 r55355, r55356, r55357, r55358, r55359, r55360, r55361, r55362;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r55355);
        mpfr_init(r55356);
        mpfr_init(r55357);
        mpfr_init_set_str(r55358, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55359);
        mpfr_init(r55360);
        mpfr_init(r55361);
        mpfr_init(r55362);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r55355, x, MPFR_RNDN);
        mpfr_set_d(r55356, y, MPFR_RNDN);
        mpfr_mul(r55357, r55355, r55356, MPFR_RNDN);
        ;
        mpfr_sub(r55359, r55358, r55355, MPFR_RNDN);
        mpfr_set_d(r55360, z, MPFR_RNDN);
        mpfr_mul(r55361, r55359, r55360, MPFR_RNDN);
        mpfr_add(r55362, r55357, r55361, MPFR_RNDN);
        return mpfr_get_d(r55362, MPFR_RNDN);
}

static mpfr_t r55363, r55364, r55365, r55366, r55367, r55368, r55369, r55370;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55363);
        mpfr_init(r55364);
        mpfr_init(r55365);
        mpfr_init_set_str(r55366, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55367);
        mpfr_init(r55368);
        mpfr_init(r55369);
        mpfr_init(r55370);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r55363, x, MPFR_RNDN);
        mpfr_set_d(r55364, y, MPFR_RNDN);
        mpfr_mul(r55365, r55363, r55364, MPFR_RNDN);
        ;
        mpfr_sub(r55367, r55366, r55363, MPFR_RNDN);
        mpfr_set_d(r55368, z, MPFR_RNDN);
        mpfr_mul(r55369, r55367, r55368, MPFR_RNDN);
        mpfr_add(r55370, r55365, r55369, MPFR_RNDN);
        return mpfr_get_d(r55370, MPFR_RNDN);
}

static mpfr_t r55371, r55372, r55373, r55374, r55375, r55376, r55377, r55378;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r55371);
        mpfr_init(r55372);
        mpfr_init(r55373);
        mpfr_init_set_str(r55374, "1.0", 10, MPFR_RNDN);
        mpfr_init(r55375);
        mpfr_init(r55376);
        mpfr_init(r55377);
        mpfr_init(r55378);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r55371, x, MPFR_RNDN);
        mpfr_set_d(r55372, y, MPFR_RNDN);
        mpfr_mul(r55373, r55371, r55372, MPFR_RNDN);
        ;
        mpfr_sub(r55375, r55374, r55371, MPFR_RNDN);
        mpfr_set_d(r55376, z, MPFR_RNDN);
        mpfr_mul(r55377, r55375, r55376, MPFR_RNDN);
        mpfr_add(r55378, r55373, r55377, MPFR_RNDN);
        return mpfr_get_d(r55378, MPFR_RNDN);
}

