#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 r50986 = x;
        float r50987 = r50986 * r50986;
        float r50988 = y;
        float r50989 = r50988 * r50988;
        float r50990 = r50987 / r50989;
        float r50991 = z;
        float r50992 = r50991 * r50991;
        float r50993 = t;
        float r50994 = r50993 * r50993;
        float r50995 = r50992 / r50994;
        float r50996 = r50990 + r50995;
        return r50996;
}

double f_id(double x, double y, double z, double t) {
        double r50997 = x;
        double r50998 = r50997 * r50997;
        double r50999 = y;
        double r51000 = r50999 * r50999;
        double r51001 = r50998 / r51000;
        double r51002 = z;
        double r51003 = r51002 * r51002;
        double r51004 = t;
        double r51005 = r51004 * r51004;
        double r51006 = r51003 / r51005;
        double r51007 = r51001 + r51006;
        return r51007;
}


double f_of(float x, float y, float z, float t) {
        float r51008 = x;
        float r51009 = y;
        float r51010 = r51008 / r51009;
        float r51011 = fabs(r51010);
        float r51012 = sqrt(r51011);
        float r51013 = r51011 * r51012;
        float r51014 = r51013 * r51012;
        float r51015 = z;
        float r51016 = t;
        float r51017 = r51015 / r51016;
        float r51018 = fabs(r51017);
        float r51019 = r51018 * r51018;
        float r51020 = r51014 + r51019;
        return r51020;
}

double f_od(double x, double y, double z, double t) {
        double r51021 = x;
        double r51022 = y;
        double r51023 = r51021 / r51022;
        double r51024 = fabs(r51023);
        double r51025 = sqrt(r51024);
        double r51026 = r51024 * r51025;
        double r51027 = r51026 * r51025;
        double r51028 = z;
        double r51029 = t;
        double r51030 = r51028 / r51029;
        double r51031 = fabs(r51030);
        double r51032 = r51031 * r51031;
        double r51033 = r51027 + r51032;
        return r51033;
}

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 r51034, r51035, r51036, r51037, r51038, r51039, r51040, r51041, r51042, r51043, r51044;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r51034);
        mpfr_init(r51035);
        mpfr_init(r51036);
        mpfr_init(r51037);
        mpfr_init(r51038);
        mpfr_init(r51039);
        mpfr_init(r51040);
        mpfr_init(r51041);
        mpfr_init(r51042);
        mpfr_init(r51043);
        mpfr_init(r51044);
}

double f_im(double x, double y, double z, double t) {
        mpfr_set_d(r51034, x, MPFR_RNDN);
        mpfr_mul(r51035, r51034, r51034, MPFR_RNDN);
        mpfr_set_d(r51036, y, MPFR_RNDN);
        mpfr_mul(r51037, r51036, r51036, MPFR_RNDN);
        mpfr_div(r51038, r51035, r51037, MPFR_RNDN);
        mpfr_set_d(r51039, z, MPFR_RNDN);
        mpfr_mul(r51040, r51039, r51039, MPFR_RNDN);
        mpfr_set_d(r51041, t, MPFR_RNDN);
        mpfr_mul(r51042, r51041, r51041, MPFR_RNDN);
        mpfr_div(r51043, r51040, r51042, MPFR_RNDN);
        mpfr_add(r51044, r51038, r51043, MPFR_RNDN);
        return mpfr_get_d(r51044, MPFR_RNDN);
}

static mpfr_t r51045, r51046, r51047, r51048, r51049, r51050, r51051, r51052, r51053, r51054, r51055, r51056, r51057;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51045);
        mpfr_init(r51046);
        mpfr_init(r51047);
        mpfr_init(r51048);
        mpfr_init(r51049);
        mpfr_init(r51050);
        mpfr_init(r51051);
        mpfr_init(r51052);
        mpfr_init(r51053);
        mpfr_init(r51054);
        mpfr_init(r51055);
        mpfr_init(r51056);
        mpfr_init(r51057);
}

double f_fm(double x, double y, double z, double t) {
        mpfr_set_d(r51045, x, MPFR_RNDN);
        mpfr_set_d(r51046, y, MPFR_RNDN);
        mpfr_div(r51047, r51045, r51046, MPFR_RNDN);
        mpfr_abs(r51048, r51047, MPFR_RNDN);
        mpfr_sqrt(r51049, r51048, MPFR_RNDN);
        mpfr_mul(r51050, r51048, r51049, MPFR_RNDN);
        mpfr_mul(r51051, r51050, r51049, MPFR_RNDN);
        mpfr_set_d(r51052, z, MPFR_RNDN);
        mpfr_set_d(r51053, t, MPFR_RNDN);
        mpfr_div(r51054, r51052, r51053, MPFR_RNDN);
        mpfr_abs(r51055, r51054, MPFR_RNDN);
        mpfr_mul(r51056, r51055, r51055, MPFR_RNDN);
        mpfr_add(r51057, r51051, r51056, MPFR_RNDN);
        return mpfr_get_d(r51057, MPFR_RNDN);
}

static mpfr_t r51058, r51059, r51060, r51061, r51062, r51063, r51064, r51065, r51066, r51067, r51068, r51069, r51070;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r51058);
        mpfr_init(r51059);
        mpfr_init(r51060);
        mpfr_init(r51061);
        mpfr_init(r51062);
        mpfr_init(r51063);
        mpfr_init(r51064);
        mpfr_init(r51065);
        mpfr_init(r51066);
        mpfr_init(r51067);
        mpfr_init(r51068);
        mpfr_init(r51069);
        mpfr_init(r51070);
}

double f_dm(double x, double y, double z, double t) {
        mpfr_set_d(r51058, x, MPFR_RNDN);
        mpfr_set_d(r51059, y, MPFR_RNDN);
        mpfr_div(r51060, r51058, r51059, MPFR_RNDN);
        mpfr_abs(r51061, r51060, MPFR_RNDN);
        mpfr_sqrt(r51062, r51061, MPFR_RNDN);
        mpfr_mul(r51063, r51061, r51062, MPFR_RNDN);
        mpfr_mul(r51064, r51063, r51062, MPFR_RNDN);
        mpfr_set_d(r51065, z, MPFR_RNDN);
        mpfr_set_d(r51066, t, MPFR_RNDN);
        mpfr_div(r51067, r51065, r51066, MPFR_RNDN);
        mpfr_abs(r51068, r51067, MPFR_RNDN);
        mpfr_mul(r51069, r51068, r51068, MPFR_RNDN);
        mpfr_add(r51070, r51064, r51069, MPFR_RNDN);
        return mpfr_get_d(r51070, MPFR_RNDN);
}

