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

char *name = "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1";

double f_if(float x, float y, float z, float t) {
        float r50754 = x;
        float r50755 = r50754 * r50754;
        float r50756 = y;
        float r50757 = r50756 * r50756;
        float r50758 = r50755 / r50757;
        float r50759 = z;
        float r50760 = r50759 * r50759;
        float r50761 = t;
        float r50762 = r50761 * r50761;
        float r50763 = r50760 / r50762;
        float r50764 = r50758 + r50763;
        return r50764;
}

double f_id(double x, double y, double z, double t) {
        double r50765 = x;
        double r50766 = r50765 * r50765;
        double r50767 = y;
        double r50768 = r50767 * r50767;
        double r50769 = r50766 / r50768;
        double r50770 = z;
        double r50771 = r50770 * r50770;
        double r50772 = t;
        double r50773 = r50772 * r50772;
        double r50774 = r50771 / r50773;
        double r50775 = r50769 + r50774;
        return r50775;
}


double f_of(float x, float y, float z, float t) {
        float r50776 = x;
        float r50777 = y;
        float r50778 = r50776 / r50777;
        float r50779 = fabs(r50778);
        float r50780 = sqrt(r50779);
        float r50781 = r50779 * r50780;
        float r50782 = r50781 * r50780;
        float r50783 = z;
        float r50784 = t;
        float r50785 = r50783 / r50784;
        float r50786 = fabs(r50785);
        float r50787 = r50786 * r50786;
        float r50788 = r50782 + r50787;
        return r50788;
}

double f_od(double x, double y, double z, double t) {
        double r50789 = x;
        double r50790 = y;
        double r50791 = r50789 / r50790;
        double r50792 = fabs(r50791);
        double r50793 = sqrt(r50792);
        double r50794 = r50792 * r50793;
        double r50795 = r50794 * r50793;
        double r50796 = z;
        double r50797 = t;
        double r50798 = r50796 / r50797;
        double r50799 = fabs(r50798);
        double r50800 = r50799 * r50799;
        double r50801 = r50795 + r50800;
        return r50801;
}

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 r50802, r50803, r50804, r50805, r50806, r50807, r50808, r50809, r50810, r50811, r50812;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50802);
        mpfr_init(r50803);
        mpfr_init(r50804);
        mpfr_init(r50805);
        mpfr_init(r50806);
        mpfr_init(r50807);
        mpfr_init(r50808);
        mpfr_init(r50809);
        mpfr_init(r50810);
        mpfr_init(r50811);
        mpfr_init(r50812);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50802, x, MPFR_RNDN);
        mpfr_mul(r50803, r50802, r50802, MPFR_RNDN);
        mpfr_set_d(r50804, y, MPFR_RNDN);
        mpfr_mul(r50805, r50804, r50804, MPFR_RNDN);
        mpfr_div(r50806, r50803, r50805, MPFR_RNDN);
        mpfr_set_d(r50807, z, MPFR_RNDN);
        mpfr_mul(r50808, r50807, r50807, MPFR_RNDN);
        mpfr_set_d(r50809, t, MPFR_RNDN);
        mpfr_mul(r50810, r50809, r50809, MPFR_RNDN);
        mpfr_div(r50811, r50808, r50810, MPFR_RNDN);
        mpfr_add(r50812, r50806, r50811, MPFR_RNDN);
        return mpfr_get_d(r50812, MPFR_RNDN);
}

static mpfr_t r50813, r50814, r50815, r50816, r50817, r50818, r50819, r50820, r50821, r50822, r50823, r50824, r50825;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50813);
        mpfr_init(r50814);
        mpfr_init(r50815);
        mpfr_init(r50816);
        mpfr_init(r50817);
        mpfr_init(r50818);
        mpfr_init(r50819);
        mpfr_init(r50820);
        mpfr_init(r50821);
        mpfr_init(r50822);
        mpfr_init(r50823);
        mpfr_init(r50824);
        mpfr_init(r50825);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50813, x, MPFR_RNDN);
        mpfr_set_d(r50814, y, MPFR_RNDN);
        mpfr_div(r50815, r50813, r50814, MPFR_RNDN);
        mpfr_abs(r50816, r50815, MPFR_RNDN);
        mpfr_sqrt(r50817, r50816, MPFR_RNDN);
        mpfr_mul(r50818, r50816, r50817, MPFR_RNDN);
        mpfr_mul(r50819, r50818, r50817, MPFR_RNDN);
        mpfr_set_d(r50820, z, MPFR_RNDN);
        mpfr_set_d(r50821, t, MPFR_RNDN);
        mpfr_div(r50822, r50820, r50821, MPFR_RNDN);
        mpfr_abs(r50823, r50822, MPFR_RNDN);
        mpfr_mul(r50824, r50823, r50823, MPFR_RNDN);
        mpfr_add(r50825, r50819, r50824, MPFR_RNDN);
        return mpfr_get_d(r50825, MPFR_RNDN);
}

static mpfr_t r50826, r50827, r50828, r50829, r50830, r50831, r50832, r50833, r50834, r50835, r50836, r50837, r50838;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50826);
        mpfr_init(r50827);
        mpfr_init(r50828);
        mpfr_init(r50829);
        mpfr_init(r50830);
        mpfr_init(r50831);
        mpfr_init(r50832);
        mpfr_init(r50833);
        mpfr_init(r50834);
        mpfr_init(r50835);
        mpfr_init(r50836);
        mpfr_init(r50837);
        mpfr_init(r50838);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50826, x, MPFR_RNDN);
        mpfr_set_d(r50827, y, MPFR_RNDN);
        mpfr_div(r50828, r50826, r50827, MPFR_RNDN);
        mpfr_abs(r50829, r50828, MPFR_RNDN);
        mpfr_sqrt(r50830, r50829, MPFR_RNDN);
        mpfr_mul(r50831, r50829, r50830, MPFR_RNDN);
        mpfr_mul(r50832, r50831, r50830, MPFR_RNDN);
        mpfr_set_d(r50833, z, MPFR_RNDN);
        mpfr_set_d(r50834, t, MPFR_RNDN);
        mpfr_div(r50835, r50833, r50834, MPFR_RNDN);
        mpfr_abs(r50836, r50835, MPFR_RNDN);
        mpfr_mul(r50837, r50836, r50836, MPFR_RNDN);
        mpfr_add(r50838, r50832, r50837, MPFR_RNDN);
        return mpfr_get_d(r50838, MPFR_RNDN);
}

