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

char *name = "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4";

double f_if(float x, float y, float z, float t) {
        float r48546 = x;
        float r48547 = y;
        float r48548 = r48547 - r48546;
        float r48549 = z;
        float r48550 = t;
        float r48551 = r48549 / r48550;
        float r48552 = r48548 * r48551;
        float r48553 = r48546 + r48552;
        return r48553;
}

double f_id(double x, double y, double z, double t) {
        double r48554 = x;
        double r48555 = y;
        double r48556 = r48555 - r48554;
        double r48557 = z;
        double r48558 = t;
        double r48559 = r48557 / r48558;
        double r48560 = r48556 * r48559;
        double r48561 = r48554 + r48560;
        return r48561;
}


double f_of(float x, float y, float z, float t) {
        float r48562 = x;
        float r48563 = y;
        float r48564 = r48563 - r48562;
        float r48565 = t;
        float r48566 = z;
        float r48567 = r48565 / r48566;
        float r48568 = r48564 / r48567;
        float r48569 = r48562 + r48568;
        return r48569;
}

double f_od(double x, double y, double z, double t) {
        double r48570 = x;
        double r48571 = y;
        double r48572 = r48571 - r48570;
        double r48573 = t;
        double r48574 = z;
        double r48575 = r48573 / r48574;
        double r48576 = r48572 / r48575;
        double r48577 = r48570 + r48576;
        return r48577;
}

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 r48578, r48579, r48580, r48581, r48582, r48583, r48584, r48585;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r48578);
        mpfr_init(r48579);
        mpfr_init(r48580);
        mpfr_init(r48581);
        mpfr_init(r48582);
        mpfr_init(r48583);
        mpfr_init(r48584);
        mpfr_init(r48585);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r48578, x, MPFR_RNDN);
        mpfr_set_d(r48579, y, MPFR_RNDN);
        mpfr_sub(r48580, r48579, r48578, MPFR_RNDN);
        mpfr_set_d(r48581, z, MPFR_RNDN);
        mpfr_set_d(r48582, t, MPFR_RNDN);
        mpfr_div(r48583, r48581, r48582, MPFR_RNDN);
        mpfr_mul(r48584, r48580, r48583, MPFR_RNDN);
        mpfr_add(r48585, r48578, r48584, MPFR_RNDN);
        return mpfr_get_d(r48585, MPFR_RNDN);
}

static mpfr_t r48586, r48587, r48588, r48589, r48590, r48591, r48592, r48593;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r48586);
        mpfr_init(r48587);
        mpfr_init(r48588);
        mpfr_init(r48589);
        mpfr_init(r48590);
        mpfr_init(r48591);
        mpfr_init(r48592);
        mpfr_init(r48593);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r48586, x, MPFR_RNDN);
        mpfr_set_d(r48587, y, MPFR_RNDN);
        mpfr_sub(r48588, r48587, r48586, MPFR_RNDN);
        mpfr_set_d(r48589, t, MPFR_RNDN);
        mpfr_set_d(r48590, z, MPFR_RNDN);
        mpfr_div(r48591, r48589, r48590, MPFR_RNDN);
        mpfr_div(r48592, r48588, r48591, MPFR_RNDN);
        mpfr_add(r48593, r48586, r48592, MPFR_RNDN);
        return mpfr_get_d(r48593, MPFR_RNDN);
}

static mpfr_t r48594, r48595, r48596, r48597, r48598, r48599, r48600, r48601;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r48594);
        mpfr_init(r48595);
        mpfr_init(r48596);
        mpfr_init(r48597);
        mpfr_init(r48598);
        mpfr_init(r48599);
        mpfr_init(r48600);
        mpfr_init(r48601);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r48594, x, MPFR_RNDN);
        mpfr_set_d(r48595, y, MPFR_RNDN);
        mpfr_sub(r48596, r48595, r48594, MPFR_RNDN);
        mpfr_set_d(r48597, t, MPFR_RNDN);
        mpfr_set_d(r48598, z, MPFR_RNDN);
        mpfr_div(r48599, r48597, r48598, MPFR_RNDN);
        mpfr_div(r48600, r48596, r48599, MPFR_RNDN);
        mpfr_add(r48601, r48594, r48600, MPFR_RNDN);
        return mpfr_get_d(r48601, MPFR_RNDN);
}

