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

char *name = "Graphics.Rendering.Chart.Drawing:drawTextsR from Chart-1.5.3";

double f_if(float x, float y, float z) {
        float r49487 = x;
        float r49488 = y;
        float r49489 = r49487 * r49488;
        float r49490 = 1.0;
        float r49491 = r49487 - r49490;
        float r49492 = z;
        float r49493 = r49491 * r49492;
        float r49494 = r49489 + r49493;
        return r49494;
}

double f_id(double x, double y, double z) {
        double r49495 = x;
        double r49496 = y;
        double r49497 = r49495 * r49496;
        double r49498 = 1.0;
        double r49499 = r49495 - r49498;
        double r49500 = z;
        double r49501 = r49499 * r49500;
        double r49502 = r49497 + r49501;
        return r49502;
}


double f_of(float x, float y, float z) {
        float r49503 = x;
        float r49504 = y;
        float r49505 = r49503 * r49504;
        float r49506 = 1.0;
        float r49507 = r49503 - r49506;
        float r49508 = z;
        float r49509 = r49507 * r49508;
        float r49510 = r49505 + r49509;
        return r49510;
}

double f_od(double x, double y, double z) {
        double r49511 = x;
        double r49512 = y;
        double r49513 = r49511 * r49512;
        double r49514 = 1.0;
        double r49515 = r49511 - r49514;
        double r49516 = z;
        double r49517 = r49515 * r49516;
        double r49518 = r49513 + r49517;
        return r49518;
}

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 r49519, r49520, r49521, r49522, r49523, r49524, r49525, r49526;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r49519);
        mpfr_init(r49520);
        mpfr_init(r49521);
        mpfr_init_set_str(r49522, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49523);
        mpfr_init(r49524);
        mpfr_init(r49525);
        mpfr_init(r49526);
}

double f_im(double x, double y, double z) {
        mpfr_set_d(r49519, x, MPFR_RNDN);
        mpfr_set_d(r49520, y, MPFR_RNDN);
        mpfr_mul(r49521, r49519, r49520, MPFR_RNDN);
        ;
        mpfr_sub(r49523, r49519, r49522, MPFR_RNDN);
        mpfr_set_d(r49524, z, MPFR_RNDN);
        mpfr_mul(r49525, r49523, r49524, MPFR_RNDN);
        mpfr_add(r49526, r49521, r49525, MPFR_RNDN);
        return mpfr_get_d(r49526, MPFR_RNDN);
}

static mpfr_t r49527, r49528, r49529, r49530, r49531, r49532, r49533, r49534;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49527);
        mpfr_init(r49528);
        mpfr_init(r49529);
        mpfr_init_set_str(r49530, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49531);
        mpfr_init(r49532);
        mpfr_init(r49533);
        mpfr_init(r49534);
}

double f_fm(double x, double y, double z) {
        mpfr_set_d(r49527, x, MPFR_RNDN);
        mpfr_set_d(r49528, y, MPFR_RNDN);
        mpfr_mul(r49529, r49527, r49528, MPFR_RNDN);
        ;
        mpfr_sub(r49531, r49527, r49530, MPFR_RNDN);
        mpfr_set_d(r49532, z, MPFR_RNDN);
        mpfr_mul(r49533, r49531, r49532, MPFR_RNDN);
        mpfr_add(r49534, r49529, r49533, MPFR_RNDN);
        return mpfr_get_d(r49534, MPFR_RNDN);
}

static mpfr_t r49535, r49536, r49537, r49538, r49539, r49540, r49541, r49542;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49535);
        mpfr_init(r49536);
        mpfr_init(r49537);
        mpfr_init_set_str(r49538, "1.0", 10, MPFR_RNDN);
        mpfr_init(r49539);
        mpfr_init(r49540);
        mpfr_init(r49541);
        mpfr_init(r49542);
}

double f_dm(double x, double y, double z) {
        mpfr_set_d(r49535, x, MPFR_RNDN);
        mpfr_set_d(r49536, y, MPFR_RNDN);
        mpfr_mul(r49537, r49535, r49536, MPFR_RNDN);
        ;
        mpfr_sub(r49539, r49535, r49538, MPFR_RNDN);
        mpfr_set_d(r49540, z, MPFR_RNDN);
        mpfr_mul(r49541, r49539, r49540, MPFR_RNDN);
        mpfr_add(r49542, r49537, r49541, MPFR_RNDN);
        return mpfr_get_d(r49542, MPFR_RNDN);
}

