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

char *name = "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1";

double f_if(float x, float y, float z, float t) {
        float r9808 = x;
        float r9809 = y;
        float r9810 = z;
        float r9811 = r9809 / r9810;
        float r9812 = t;
        float r9813 = r9811 * r9812;
        float r9814 = r9813 / r9812;
        float r9815 = r9808 * r9814;
        return r9815;
}

double f_id(double x, double y, double z, double t) {
        double r9816 = x;
        double r9817 = y;
        double r9818 = z;
        double r9819 = r9817 / r9818;
        double r9820 = t;
        double r9821 = r9819 * r9820;
        double r9822 = r9821 / r9820;
        double r9823 = r9816 * r9822;
        return r9823;
}


double f_of(float x, float y, float z, float __attribute__((unused)) t) {
        float r9824 = y;
        float r9825 = x;
        float r9826 = r9824 * r9825;
        float r9827 = -3.9632570729893533e+295f;
        bool r9828 = r9826 <= r9827;
        float r9829 = z;
        float r9830 = r9825 / r9829;
        float r9831 = r9824 * r9830;
        float r9832 = -2.3421821286895737e-141f;
        bool r9833 = r9826 <= r9832;
        float r9834 = r9826 / r9829;
        float r9835 = 8.507385469605398e-166f;
        bool r9836 = r9826 <= r9835;
        float r9837 = 8.854482967741617e+153f;
        bool r9838 = r9826 <= r9837;
        float r9839 = r9838 ? r9834 : r9831;
        float r9840 = r9836 ? r9831 : r9839;
        float r9841 = r9833 ? r9834 : r9840;
        float r9842 = r9828 ? r9831 : r9841;
        return r9842;
}

double f_od(double x, double y, double z, double __attribute__((unused)) t) {
        double r9843 = y;
        double r9844 = x;
        double r9845 = r9843 * r9844;
        double r9846 = -3.9632570729893533e+295;
        bool r9847 = r9845 <= r9846;
        double r9848 = z;
        double r9849 = r9844 / r9848;
        double r9850 = r9843 * r9849;
        double r9851 = -2.3421821286895737e-141;
        bool r9852 = r9845 <= r9851;
        double r9853 = r9845 / r9848;
        double r9854 = 8.507385469605398e-166;
        bool r9855 = r9845 <= r9854;
        double r9856 = 8.854482967741617e+153;
        bool r9857 = r9845 <= r9856;
        double r9858 = r9857 ? r9853 : r9850;
        double r9859 = r9855 ? r9850 : r9858;
        double r9860 = r9852 ? r9853 : r9859;
        double r9861 = r9847 ? r9850 : r9860;
        return r9861;
}

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 r9862, r9863, r9864, r9865, r9866, r9867, r9868, r9869;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r9862);
        mpfr_init(r9863);
        mpfr_init(r9864);
        mpfr_init(r9865);
        mpfr_init(r9866);
        mpfr_init(r9867);
        mpfr_init(r9868);
        mpfr_init(r9869);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r9862, x, MPFR_RNDN);
        mpfr_set_d(r9863, y, MPFR_RNDN);
        mpfr_set_d(r9864, z, MPFR_RNDN);
        mpfr_div(r9865, r9863, r9864, MPFR_RNDN);
        mpfr_set_d(r9866, t, MPFR_RNDN);
        mpfr_mul(r9867, r9865, r9866, MPFR_RNDN);
        mpfr_div(r9868, r9867, r9866, MPFR_RNDN);
        mpfr_mul(r9869, r9862, r9868, MPFR_RNDN);
        return mpfr_get_d(r9869, MPFR_RNDN);
}

static mpfr_t r9870, r9871, r9872, r9873, r9874, r9875, r9876, r9877, r9878, r9879, r9880, r9881, r9882, r9883, r9884, r9885, r9886, r9887, r9888;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9870);
        mpfr_init(r9871);
        mpfr_init(r9872);
        mpfr_init_set_str(r9873, "-3.9632570729893533e+295", 10, MPFR_RNDN);
        mpfr_init(r9874);
        mpfr_init(r9875);
        mpfr_init(r9876);
        mpfr_init(r9877);
        mpfr_init_set_str(r9878, "-2.3421821286895737e-141", 10, MPFR_RNDN);
        mpfr_init(r9879);
        mpfr_init(r9880);
        mpfr_init_set_str(r9881, "8.507385469605398e-166", 10, MPFR_RNDN);
        mpfr_init(r9882);
        mpfr_init_set_str(r9883, "8.854482967741617e+153", 10, MPFR_RNDN);
        mpfr_init(r9884);
        mpfr_init(r9885);
        mpfr_init(r9886);
        mpfr_init(r9887);
        mpfr_init(r9888);
}

double f_fm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r9870, y, MPFR_RNDN);
        mpfr_set_d(r9871, x, MPFR_RNDN);
        mpfr_mul(r9872, r9870, r9871, MPFR_RNDN);
        ;
        mpfr_set_si(r9874, mpfr_cmp(r9872, r9873) <= 0, MPFR_RNDN);
        mpfr_set_d(r9875, z, MPFR_RNDN);
        mpfr_div(r9876, r9871, r9875, MPFR_RNDN);
        mpfr_mul(r9877, r9870, r9876, MPFR_RNDN);
        ;
        mpfr_set_si(r9879, mpfr_cmp(r9872, r9878) <= 0, MPFR_RNDN);
        mpfr_div(r9880, r9872, r9875, MPFR_RNDN);
        ;
        mpfr_set_si(r9882, mpfr_cmp(r9872, r9881) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9884, mpfr_cmp(r9872, r9883) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r9884, MPFR_RNDN)) { mpfr_set(r9885, r9880, MPFR_RNDN); } else { mpfr_set(r9885, r9877, MPFR_RNDN); };
        if (mpfr_get_si(r9882, MPFR_RNDN)) { mpfr_set(r9886, r9877, MPFR_RNDN); } else { mpfr_set(r9886, r9885, MPFR_RNDN); };
        if (mpfr_get_si(r9879, MPFR_RNDN)) { mpfr_set(r9887, r9880, MPFR_RNDN); } else { mpfr_set(r9887, r9886, MPFR_RNDN); };
        if (mpfr_get_si(r9874, MPFR_RNDN)) { mpfr_set(r9888, r9877, MPFR_RNDN); } else { mpfr_set(r9888, r9887, MPFR_RNDN); };
        return mpfr_get_d(r9888, MPFR_RNDN);
}

static mpfr_t r9889, r9890, r9891, r9892, r9893, r9894, r9895, r9896, r9897, r9898, r9899, r9900, r9901, r9902, r9903, r9904, r9905, r9906, r9907;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r9889);
        mpfr_init(r9890);
        mpfr_init(r9891);
        mpfr_init_set_str(r9892, "-3.9632570729893533e+295", 10, MPFR_RNDN);
        mpfr_init(r9893);
        mpfr_init(r9894);
        mpfr_init(r9895);
        mpfr_init(r9896);
        mpfr_init_set_str(r9897, "-2.3421821286895737e-141", 10, MPFR_RNDN);
        mpfr_init(r9898);
        mpfr_init(r9899);
        mpfr_init_set_str(r9900, "8.507385469605398e-166", 10, MPFR_RNDN);
        mpfr_init(r9901);
        mpfr_init_set_str(r9902, "8.854482967741617e+153", 10, MPFR_RNDN);
        mpfr_init(r9903);
        mpfr_init(r9904);
        mpfr_init(r9905);
        mpfr_init(r9906);
        mpfr_init(r9907);
}

double f_dm(double x, double y, double z, double __attribute__((unused)) t) {
        mpfr_set_d(r9889, y, MPFR_RNDN);
        mpfr_set_d(r9890, x, MPFR_RNDN);
        mpfr_mul(r9891, r9889, r9890, MPFR_RNDN);
        ;
        mpfr_set_si(r9893, mpfr_cmp(r9891, r9892) <= 0, MPFR_RNDN);
        mpfr_set_d(r9894, z, MPFR_RNDN);
        mpfr_div(r9895, r9890, r9894, MPFR_RNDN);
        mpfr_mul(r9896, r9889, r9895, MPFR_RNDN);
        ;
        mpfr_set_si(r9898, mpfr_cmp(r9891, r9897) <= 0, MPFR_RNDN);
        mpfr_div(r9899, r9891, r9894, MPFR_RNDN);
        ;
        mpfr_set_si(r9901, mpfr_cmp(r9891, r9900) <= 0, MPFR_RNDN);
        ;
        mpfr_set_si(r9903, mpfr_cmp(r9891, r9902) <= 0, MPFR_RNDN);
        if (mpfr_get_si(r9903, MPFR_RNDN)) { mpfr_set(r9904, r9899, MPFR_RNDN); } else { mpfr_set(r9904, r9896, MPFR_RNDN); };
        if (mpfr_get_si(r9901, MPFR_RNDN)) { mpfr_set(r9905, r9896, MPFR_RNDN); } else { mpfr_set(r9905, r9904, MPFR_RNDN); };
        if (mpfr_get_si(r9898, MPFR_RNDN)) { mpfr_set(r9906, r9899, MPFR_RNDN); } else { mpfr_set(r9906, r9905, MPFR_RNDN); };
        if (mpfr_get_si(r9893, MPFR_RNDN)) { mpfr_set(r9907, r9896, MPFR_RNDN); } else { mpfr_set(r9907, r9906, MPFR_RNDN); };
        return mpfr_get_d(r9907, MPFR_RNDN);
}

