#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 r49873 = x;
        float r49874 = y;
        float r49875 = z;
        float r49876 = t;
        float r49877 = r49875 - r49876;
        float r49878 = a;
        float r49879 = r49875 - r49878;
        float r49880 = r49877 / r49879;
        float r49881 = r49874 * r49880;
        float r49882 = r49873 + r49881;
        return r49882;
}

double f_id(double x, double y, double z, double t, double a) {
        double r49883 = x;
        double r49884 = y;
        double r49885 = z;
        double r49886 = t;
        double r49887 = r49885 - r49886;
        double r49888 = a;
        double r49889 = r49885 - r49888;
        double r49890 = r49887 / r49889;
        double r49891 = r49884 * r49890;
        double r49892 = r49883 + r49891;
        return r49892;
}


double f_of(float x, float y, float z, float t, float a) {
        float r49893 = x;
        float r49894 = y;
        float r49895 = z;
        float r49896 = a;
        float r49897 = r49895 - r49896;
        float r49898 = r49895 / r49897;
        float r49899 = t;
        float r49900 = r49899 / r49897;
        float r49901 = r49898 - r49900;
        float r49902 = r49894 * r49901;
        float r49903 = r49893 + r49902;
        return r49903;
}

double f_od(double x, double y, double z, double t, double a) {
        double r49904 = x;
        double r49905 = y;
        double r49906 = z;
        double r49907 = a;
        double r49908 = r49906 - r49907;
        double r49909 = r49906 / r49908;
        double r49910 = t;
        double r49911 = r49910 / r49908;
        double r49912 = r49909 - r49911;
        double r49913 = r49905 * r49912;
        double r49914 = r49904 + r49913;
        return r49914;
}

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 r49915, r49916, r49917, r49918, r49919, r49920, r49921, r49922, r49923, r49924;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r49915);
        mpfr_init(r49916);
        mpfr_init(r49917);
        mpfr_init(r49918);
        mpfr_init(r49919);
        mpfr_init(r49920);
        mpfr_init(r49921);
        mpfr_init(r49922);
        mpfr_init(r49923);
        mpfr_init(r49924);
}

double f_im(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49915, x, MPFR_RNDN);
        mpfr_set_d(r49916, y, MPFR_RNDN);
        mpfr_set_d(r49917, z, MPFR_RNDN);
        mpfr_set_d(r49918, t, MPFR_RNDN);
        mpfr_sub(r49919, r49917, r49918, MPFR_RNDN);
        mpfr_set_d(r49920, a, MPFR_RNDN);
        mpfr_sub(r49921, r49917, r49920, MPFR_RNDN);
        mpfr_div(r49922, r49919, r49921, MPFR_RNDN);
        mpfr_mul(r49923, r49916, r49922, MPFR_RNDN);
        mpfr_add(r49924, r49915, r49923, MPFR_RNDN);
        return mpfr_get_d(r49924, MPFR_RNDN);
}

static mpfr_t r49925, r49926, r49927, r49928, r49929, r49930, r49931, r49932, r49933, r49934, r49935;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49925);
        mpfr_init(r49926);
        mpfr_init(r49927);
        mpfr_init(r49928);
        mpfr_init(r49929);
        mpfr_init(r49930);
        mpfr_init(r49931);
        mpfr_init(r49932);
        mpfr_init(r49933);
        mpfr_init(r49934);
        mpfr_init(r49935);
}

double f_fm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49925, x, MPFR_RNDN);
        mpfr_set_d(r49926, y, MPFR_RNDN);
        mpfr_set_d(r49927, z, MPFR_RNDN);
        mpfr_set_d(r49928, a, MPFR_RNDN);
        mpfr_sub(r49929, r49927, r49928, MPFR_RNDN);
        mpfr_div(r49930, r49927, r49929, MPFR_RNDN);
        mpfr_set_d(r49931, t, MPFR_RNDN);
        mpfr_div(r49932, r49931, r49929, MPFR_RNDN);
        mpfr_sub(r49933, r49930, r49932, MPFR_RNDN);
        mpfr_mul(r49934, r49926, r49933, MPFR_RNDN);
        mpfr_add(r49935, r49925, r49934, MPFR_RNDN);
        return mpfr_get_d(r49935, MPFR_RNDN);
}

static mpfr_t r49936, r49937, r49938, r49939, r49940, r49941, r49942, r49943, r49944, r49945, r49946;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r49936);
        mpfr_init(r49937);
        mpfr_init(r49938);
        mpfr_init(r49939);
        mpfr_init(r49940);
        mpfr_init(r49941);
        mpfr_init(r49942);
        mpfr_init(r49943);
        mpfr_init(r49944);
        mpfr_init(r49945);
        mpfr_init(r49946);
}

double f_dm(double x, double y, double z, double t, double a) {
        mpfr_set_d(r49936, x, MPFR_RNDN);
        mpfr_set_d(r49937, y, MPFR_RNDN);
        mpfr_set_d(r49938, z, MPFR_RNDN);
        mpfr_set_d(r49939, a, MPFR_RNDN);
        mpfr_sub(r49940, r49938, r49939, MPFR_RNDN);
        mpfr_div(r49941, r49938, r49940, MPFR_RNDN);
        mpfr_set_d(r49942, t, MPFR_RNDN);
        mpfr_div(r49943, r49942, r49940, MPFR_RNDN);
        mpfr_sub(r49944, r49941, r49943, MPFR_RNDN);
        mpfr_mul(r49945, r49937, r49944, MPFR_RNDN);
        mpfr_add(r49946, r49936, r49945, MPFR_RNDN);
        return mpfr_get_d(r49946, MPFR_RNDN);
}

