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

char *name = "Diagrams.Solve.Polynomial:quadForm from diagrams-solve-0.1, A";

double f_if(float x, float y, float z) {
        float r34780 = x;
        float r34781 = y;
        float r34782 = 4.0;
        float r34783 = r34781 * r34782;
        float r34784 = z;
        float r34785 = r34783 * r34784;
        float r34786 = r34780 - r34785;
        return r34786;
}

double f_id(double x, double y, double z) {
        double r34787 = x;
        double r34788 = y;
        double r34789 = 4.0;
        double r34790 = r34788 * r34789;
        double r34791 = z;
        double r34792 = r34790 * r34791;
        double r34793 = r34787 - r34792;
        return r34793;
}


double f_of(float x, float y, float z) {
        float r34794 = x;
        float r34795 = y;
        float r34796 = 4.0;
        float r34797 = r34795 * r34796;
        float r34798 = z;
        float r34799 = r34797 * r34798;
        float r34800 = r34794 - r34799;
        return r34800;
}

double f_od(double x, double y, double z) {
        double r34801 = x;
        double r34802 = y;
        double r34803 = 4.0;
        double r34804 = r34802 * r34803;
        double r34805 = z;
        double r34806 = r34804 * r34805;
        double r34807 = r34801 - r34806;
        return r34807;
}

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 r34808, r34809, r34810, r34811, r34812, r34813, r34814;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r34808);
        mpfr_init(r34809);
        mpfr_init_set_str(r34810, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34811);
        mpfr_init(r34812);
        mpfr_init(r34813);
        mpfr_init(r34814);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r34808, x, MPFR_RNDN);
        mpfr_set_d(r34809, y, MPFR_RNDN);
        ;
        mpfr_mul(r34811, r34809, r34810, MPFR_RNDN);
        mpfr_set_d(r34812, z, MPFR_RNDN);
        mpfr_mul(r34813, r34811, r34812, MPFR_RNDN);
        mpfr_sub(r34814, r34808, r34813, MPFR_RNDN);
        return mpfr_get_d(r34814, MPFR_RNDN);
}

static mpfr_t r34815, r34816, r34817, r34818, r34819, r34820, r34821;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34815);
        mpfr_init(r34816);
        mpfr_init_set_str(r34817, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34818);
        mpfr_init(r34819);
        mpfr_init(r34820);
        mpfr_init(r34821);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r34815, x, MPFR_RNDN);
        mpfr_set_d(r34816, y, MPFR_RNDN);
        ;
        mpfr_mul(r34818, r34816, r34817, MPFR_RNDN);
        mpfr_set_d(r34819, z, MPFR_RNDN);
        mpfr_mul(r34820, r34818, r34819, MPFR_RNDN);
        mpfr_sub(r34821, r34815, r34820, MPFR_RNDN);
        return mpfr_get_d(r34821, MPFR_RNDN);
}

static mpfr_t r34822, r34823, r34824, r34825, r34826, r34827, r34828;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r34822);
        mpfr_init(r34823);
        mpfr_init_set_str(r34824, "4.0", 10, MPFR_RNDN);
        mpfr_init(r34825);
        mpfr_init(r34826);
        mpfr_init(r34827);
        mpfr_init(r34828);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r34822, x, MPFR_RNDN);
        mpfr_set_d(r34823, y, MPFR_RNDN);
        ;
        mpfr_mul(r34825, r34823, r34824, MPFR_RNDN);
        mpfr_set_d(r34826, z, MPFR_RNDN);
        mpfr_mul(r34827, r34825, r34826, MPFR_RNDN);
        mpfr_sub(r34828, r34822, r34827, MPFR_RNDN);
        return mpfr_get_d(r34828, MPFR_RNDN);
}

