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

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

double f_if(float x, float y, float z, float t, float a) {
        float r49844 = x;
        float r49845 = y;
        float r49846 = z;
        float r49847 = t;
        float r49848 = r49846 - r49847;
        float r49849 = a;
        float r49850 = r49846 - r49849;
        float r49851 = r49848 / r49850;
        float r49852 = r49845 * r49851;
        float r49853 = r49844 + r49852;
        return r49853;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49854 = x;
        double r49855 = y;
        double r49856 = z;
        double r49857 = t;
        double r49858 = r49856 - r49857;
        double r49859 = a;
        double r49860 = r49856 - r49859;
        double r49861 = r49858 / r49860;
        double r49862 = r49855 * r49861;
        double r49863 = r49854 + r49862;
        return r49863;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49864 = x;
        float r49865 = y;
        float r49866 = z;
        float r49867 = a;
        float r49868 = r49866 - r49867;
        float r49869 = r49866 / r49868;
        float r49870 = t;
        float r49871 = r49870 / r49868;
        float r49872 = r49869 - r49871;
        float r49873 = r49865 * r49872;
        float r49874 = r49864 + r49873;
        return r49874;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49875 = x;
        double r49876 = y;
        double r49877 = z;
        double r49878 = a;
        double r49879 = r49877 - r49878;
        double r49880 = r49877 / r49879;
        double r49881 = t;
        double r49882 = r49881 / r49879;
        double r49883 = r49880 - r49882;
        double r49884 = r49876 * r49883;
        double r49885 = r49875 + r49884;
        return r49885;
}

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 r49886, r49887, r49888, r49889, r49890, r49891, r49892, r49893, r49894, r49895;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r49886);
        mpfr_init(r49887);
        mpfr_init(r49888);
        mpfr_init(r49889);
        mpfr_init(r49890);
        mpfr_init(r49891);
        mpfr_init(r49892);
        mpfr_init(r49893);
        mpfr_init(r49894);
        mpfr_init(r49895);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49886, x, MPFR_RNDN);
        mpfr_set_d(r49887, y, MPFR_RNDN);
        mpfr_set_d(r49888, z, MPFR_RNDN);
        mpfr_set_d(r49889, t, MPFR_RNDN);
        mpfr_sub(r49890, r49888, r49889, MPFR_RNDN);
        mpfr_set_d(r49891, a, MPFR_RNDN);
        mpfr_sub(r49892, r49888, r49891, MPFR_RNDN);
        mpfr_div(r49893, r49890, r49892, MPFR_RNDN);
        mpfr_mul(r49894, r49887, r49893, MPFR_RNDN);
        mpfr_add(r49895, r49886, r49894, MPFR_RNDN);
        return mpfr_get_d(r49895, MPFR_RNDN);
}

static mpfr_t r49896, r49897, r49898, r49899, r49900, r49901, r49902, r49903, r49904, r49905, r49906;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49896);
        mpfr_init(r49897);
        mpfr_init(r49898);
        mpfr_init(r49899);
        mpfr_init(r49900);
        mpfr_init(r49901);
        mpfr_init(r49902);
        mpfr_init(r49903);
        mpfr_init(r49904);
        mpfr_init(r49905);
        mpfr_init(r49906);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49896, x, MPFR_RNDN);
        mpfr_set_d(r49897, y, MPFR_RNDN);
        mpfr_set_d(r49898, z, MPFR_RNDN);
        mpfr_set_d(r49899, a, MPFR_RNDN);
        mpfr_sub(r49900, r49898, r49899, MPFR_RNDN);
        mpfr_div(r49901, r49898, r49900, MPFR_RNDN);
        mpfr_set_d(r49902, t, MPFR_RNDN);
        mpfr_div(r49903, r49902, r49900, MPFR_RNDN);
        mpfr_sub(r49904, r49901, r49903, MPFR_RNDN);
        mpfr_mul(r49905, r49897, r49904, MPFR_RNDN);
        mpfr_add(r49906, r49896, r49905, MPFR_RNDN);
        return mpfr_get_d(r49906, MPFR_RNDN);
}

static mpfr_t r49907, r49908, r49909, r49910, r49911, r49912, r49913, r49914, r49915, r49916, r49917;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49907);
        mpfr_init(r49908);
        mpfr_init(r49909);
        mpfr_init(r49910);
        mpfr_init(r49911);
        mpfr_init(r49912);
        mpfr_init(r49913);
        mpfr_init(r49914);
        mpfr_init(r49915);
        mpfr_init(r49916);
        mpfr_init(r49917);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49907, x, MPFR_RNDN);
        mpfr_set_d(r49908, y, MPFR_RNDN);
        mpfr_set_d(r49909, z, MPFR_RNDN);
        mpfr_set_d(r49910, a, MPFR_RNDN);
        mpfr_sub(r49911, r49909, r49910, MPFR_RNDN);
        mpfr_div(r49912, r49909, r49911, MPFR_RNDN);
        mpfr_set_d(r49913, t, MPFR_RNDN);
        mpfr_div(r49914, r49913, r49911, MPFR_RNDN);
        mpfr_sub(r49915, r49912, r49914, MPFR_RNDN);
        mpfr_mul(r49916, r49908, r49915, MPFR_RNDN);
        mpfr_add(r49917, r49907, r49916, MPFR_RNDN);
        return mpfr_get_d(r49917, MPFR_RNDN);
}

