#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 r50792 = x;
        float r50793 = r50792 * r50792;
        float r50794 = y;
        float r50795 = r50794 * r50794;
        float r50796 = r50793 / r50795;
        float r50797 = z;
        float r50798 = r50797 * r50797;
        float r50799 = t;
        float r50800 = r50799 * r50799;
        float r50801 = r50798 / r50800;
        float r50802 = r50796 + r50801;
        return r50802;
}

double f_id(double x, double y, double z, double t) {
        double r50803 = x;
        double r50804 = r50803 * r50803;
        double r50805 = y;
        double r50806 = r50805 * r50805;
        double r50807 = r50804 / r50806;
        double r50808 = z;
        double r50809 = r50808 * r50808;
        double r50810 = t;
        double r50811 = r50810 * r50810;
        double r50812 = r50809 / r50811;
        double r50813 = r50807 + r50812;
        return r50813;
}


double f_of(float x, float y, float z, float t) {
        float r50814 = x;
        float r50815 = y;
        float r50816 = r50814 / r50815;
        float r50817 = fabs(r50816);
        float r50818 = sqrt(r50817);
        float r50819 = r50817 * r50818;
        float r50820 = r50819 * r50818;
        float r50821 = z;
        float r50822 = t;
        float r50823 = r50821 / r50822;
        float r50824 = fabs(r50823);
        float r50825 = r50824 * r50824;
        float r50826 = r50820 + r50825;
        return r50826;
}

double f_od(double x, double y, double z, double t) {
        double r50827 = x;
        double r50828 = y;
        double r50829 = r50827 / r50828;
        double r50830 = fabs(r50829);
        double r50831 = sqrt(r50830);
        double r50832 = r50830 * r50831;
        double r50833 = r50832 * r50831;
        double r50834 = z;
        double r50835 = t;
        double r50836 = r50834 / r50835;
        double r50837 = fabs(r50836);
        double r50838 = r50837 * r50837;
        double r50839 = r50833 + r50838;
        return r50839;
}

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 r50840, r50841, r50842, r50843, r50844, r50845, r50846, r50847, r50848, r50849, r50850;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r50840);
        mpfr_init(r50841);
        mpfr_init(r50842);
        mpfr_init(r50843);
        mpfr_init(r50844);
        mpfr_init(r50845);
        mpfr_init(r50846);
        mpfr_init(r50847);
        mpfr_init(r50848);
        mpfr_init(r50849);
        mpfr_init(r50850);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r50840, x, MPFR_RNDN);
        mpfr_mul(r50841, r50840, r50840, MPFR_RNDN);
        mpfr_set_d(r50842, y, MPFR_RNDN);
        mpfr_mul(r50843, r50842, r50842, MPFR_RNDN);
        mpfr_div(r50844, r50841, r50843, MPFR_RNDN);
        mpfr_set_d(r50845, z, MPFR_RNDN);
        mpfr_mul(r50846, r50845, r50845, MPFR_RNDN);
        mpfr_set_d(r50847, t, MPFR_RNDN);
        mpfr_mul(r50848, r50847, r50847, MPFR_RNDN);
        mpfr_div(r50849, r50846, r50848, MPFR_RNDN);
        mpfr_add(r50850, r50844, r50849, MPFR_RNDN);
        return mpfr_get_d(r50850, MPFR_RNDN);
}

static mpfr_t r50851, r50852, r50853, r50854, r50855, r50856, r50857, r50858, r50859, r50860, r50861, r50862, r50863;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50851);
        mpfr_init(r50852);
        mpfr_init(r50853);
        mpfr_init(r50854);
        mpfr_init(r50855);
        mpfr_init(r50856);
        mpfr_init(r50857);
        mpfr_init(r50858);
        mpfr_init(r50859);
        mpfr_init(r50860);
        mpfr_init(r50861);
        mpfr_init(r50862);
        mpfr_init(r50863);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r50851, x, MPFR_RNDN);
        mpfr_set_d(r50852, y, MPFR_RNDN);
        mpfr_div(r50853, r50851, r50852, MPFR_RNDN);
        mpfr_abs(r50854, r50853, MPFR_RNDN);
        mpfr_sqrt(r50855, r50854, MPFR_RNDN);
        mpfr_mul(r50856, r50854, r50855, MPFR_RNDN);
        mpfr_mul(r50857, r50856, r50855, MPFR_RNDN);
        mpfr_set_d(r50858, z, MPFR_RNDN);
        mpfr_set_d(r50859, t, MPFR_RNDN);
        mpfr_div(r50860, r50858, r50859, MPFR_RNDN);
        mpfr_abs(r50861, r50860, MPFR_RNDN);
        mpfr_mul(r50862, r50861, r50861, MPFR_RNDN);
        mpfr_add(r50863, r50857, r50862, MPFR_RNDN);
        return mpfr_get_d(r50863, MPFR_RNDN);
}

static mpfr_t r50864, r50865, r50866, r50867, r50868, r50869, r50870, r50871, r50872, r50873, r50874, r50875, r50876;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r50864);
        mpfr_init(r50865);
        mpfr_init(r50866);
        mpfr_init(r50867);
        mpfr_init(r50868);
        mpfr_init(r50869);
        mpfr_init(r50870);
        mpfr_init(r50871);
        mpfr_init(r50872);
        mpfr_init(r50873);
        mpfr_init(r50874);
        mpfr_init(r50875);
        mpfr_init(r50876);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r50864, x, MPFR_RNDN);
        mpfr_set_d(r50865, y, MPFR_RNDN);
        mpfr_div(r50866, r50864, r50865, MPFR_RNDN);
        mpfr_abs(r50867, r50866, MPFR_RNDN);
        mpfr_sqrt(r50868, r50867, MPFR_RNDN);
        mpfr_mul(r50869, r50867, r50868, MPFR_RNDN);
        mpfr_mul(r50870, r50869, r50868, MPFR_RNDN);
        mpfr_set_d(r50871, z, MPFR_RNDN);
        mpfr_set_d(r50872, t, MPFR_RNDN);
        mpfr_div(r50873, r50871, r50872, MPFR_RNDN);
        mpfr_abs(r50874, r50873, MPFR_RNDN);
        mpfr_mul(r50875, r50874, r50874, MPFR_RNDN);
        mpfr_add(r50876, r50870, r50875, MPFR_RNDN);
        return mpfr_get_d(r50876, MPFR_RNDN);
}

