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

char *name = "Graphics.Rasterific.Linear:$cquadrance from Rasterific-0.6.1";

double f_if(float x, float y) {
        float r32312 = x;
        float r32313 = r32312 * r32312;
        float r32314 = y;
        float r32315 = r32314 * r32314;
        float r32316 = r32313 + r32315;
        return r32316;
}

double f_id(double x, double y) {
        double r32317 = x;
        double r32318 = r32317 * r32317;
        double r32319 = y;
        double r32320 = r32319 * r32319;
        double r32321 = r32318 + r32320;
        return r32321;
}


double f_of(float x, float y) {
        float r32322 = x;
        float r32323 = r32322 * r32322;
        float r32324 = y;
        float r32325 = r32324 * r32324;
        float r32326 = r32323 + r32325;
        return r32326;
}

double f_od(double x, double y) {
        double r32327 = x;
        double r32328 = r32327 * r32327;
        double r32329 = y;
        double r32330 = r32329 * r32329;
        double r32331 = r32328 + r32330;
        return r32331;
}

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 r32332, r32333, r32334, r32335, r32336;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r32332);
        mpfr_init(r32333);
        mpfr_init(r32334);
        mpfr_init(r32335);
        mpfr_init(r32336);
}

double f_im(double x, double y) {
        mpfr_set_d(r32332, x, MPFR_RNDN);
        mpfr_mul(r32333, r32332, r32332, MPFR_RNDN);
        mpfr_set_d(r32334, y, MPFR_RNDN);
        mpfr_mul(r32335, r32334, r32334, MPFR_RNDN);
        mpfr_add(r32336, r32333, r32335, MPFR_RNDN);
        return mpfr_get_d(r32336, MPFR_RNDN);
}

static mpfr_t r32337, r32338, r32339, r32340, r32341;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32337);
        mpfr_init(r32338);
        mpfr_init(r32339);
        mpfr_init(r32340);
        mpfr_init(r32341);
}

double f_fm(double x, double y) {
        mpfr_set_d(r32337, x, MPFR_RNDN);
        mpfr_mul(r32338, r32337, r32337, MPFR_RNDN);
        mpfr_set_d(r32339, y, MPFR_RNDN);
        mpfr_mul(r32340, r32339, r32339, MPFR_RNDN);
        mpfr_add(r32341, r32338, r32340, MPFR_RNDN);
        return mpfr_get_d(r32341, MPFR_RNDN);
}

static mpfr_t r32342, r32343, r32344, r32345, r32346;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r32342);
        mpfr_init(r32343);
        mpfr_init(r32344);
        mpfr_init(r32345);
        mpfr_init(r32346);
}

double f_dm(double x, double y) {
        mpfr_set_d(r32342, x, MPFR_RNDN);
        mpfr_mul(r32343, r32342, r32342, MPFR_RNDN);
        mpfr_set_d(r32344, y, MPFR_RNDN);
        mpfr_mul(r32345, r32344, r32344, MPFR_RNDN);
        mpfr_add(r32346, r32343, r32345, MPFR_RNDN);
        return mpfr_get_d(r32346, MPFR_RNDN);
}

