#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 r54078 = x;
        float r54079 = y;
        float r54080 = r54078 * r54079;
        float r54081 = 1.0;
        float r54082 = r54081 - r54078;
        float r54083 = z;
        float r54084 = r54082 * r54083;
        float r54085 = r54080 + r54084;
        return r54085;
}

double f_id(double x, double y, double z) {
        double r54086 = x;
        double r54087 = y;
        double r54088 = r54086 * r54087;
        double r54089 = 1.0;
        double r54090 = r54089 - r54086;
        double r54091 = z;
        double r54092 = r54090 * r54091;
        double r54093 = r54088 + r54092;
        return r54093;
}


double f_of(float x, float y, float z) {
        float r54094 = x;
        float r54095 = y;
        float r54096 = r54094 * r54095;
        float r54097 = 1.0;
        float r54098 = r54097 - r54094;
        float r54099 = z;
        float r54100 = r54098 * r54099;
        float r54101 = r54096 + r54100;
        return r54101;
}

double f_od(double x, double y, double z) {
        double r54102 = x;
        double r54103 = y;
        double r54104 = r54102 * r54103;
        double r54105 = 1.0;
        double r54106 = r54105 - r54102;
        double r54107 = z;
        double r54108 = r54106 * r54107;
        double r54109 = r54104 + r54108;
        return r54109;
}

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 r54110, r54111, r54112, r54113, r54114, r54115, r54116, r54117;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r54110);
        mpfr_init(r54111);
        mpfr_init(r54112);
        mpfr_init_set_str(r54113, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54114);
        mpfr_init(r54115);
        mpfr_init(r54116);
        mpfr_init(r54117);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r54110, x, MPFR_RNDN);
        mpfr_set_d(r54111, y, MPFR_RNDN);
        mpfr_mul(r54112, r54110, r54111, MPFR_RNDN);
        ;
        mpfr_sub(r54114, r54113, r54110, MPFR_RNDN);
        mpfr_set_d(r54115, z, MPFR_RNDN);
        mpfr_mul(r54116, r54114, r54115, MPFR_RNDN);
        mpfr_add(r54117, r54112, r54116, MPFR_RNDN);
        return mpfr_get_d(r54117, MPFR_RNDN);
}

static mpfr_t r54118, r54119, r54120, r54121, r54122, r54123, r54124, r54125;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54118);
        mpfr_init(r54119);
        mpfr_init(r54120);
        mpfr_init_set_str(r54121, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54122);
        mpfr_init(r54123);
        mpfr_init(r54124);
        mpfr_init(r54125);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r54118, x, MPFR_RNDN);
        mpfr_set_d(r54119, y, MPFR_RNDN);
        mpfr_mul(r54120, r54118, r54119, MPFR_RNDN);
        ;
        mpfr_sub(r54122, r54121, r54118, MPFR_RNDN);
        mpfr_set_d(r54123, z, MPFR_RNDN);
        mpfr_mul(r54124, r54122, r54123, MPFR_RNDN);
        mpfr_add(r54125, r54120, r54124, MPFR_RNDN);
        return mpfr_get_d(r54125, MPFR_RNDN);
}

static mpfr_t r54126, r54127, r54128, r54129, r54130, r54131, r54132, r54133;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r54126);
        mpfr_init(r54127);
        mpfr_init(r54128);
        mpfr_init_set_str(r54129, "1.0", 10, MPFR_RNDN);
        mpfr_init(r54130);
        mpfr_init(r54131);
        mpfr_init(r54132);
        mpfr_init(r54133);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r54126, x, MPFR_RNDN);
        mpfr_set_d(r54127, y, MPFR_RNDN);
        mpfr_mul(r54128, r54126, r54127, MPFR_RNDN);
        ;
        mpfr_sub(r54130, r54129, r54126, MPFR_RNDN);
        mpfr_set_d(r54131, z, MPFR_RNDN);
        mpfr_mul(r54132, r54130, r54131, MPFR_RNDN);
        mpfr_add(r54133, r54128, r54132, MPFR_RNDN);
        return mpfr_get_d(r54133, MPFR_RNDN);
}

