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

char *name = "Radioactive exchange between two surfaces";

double f_if(float x, float y) {
        float r21055 = x;
        float r21056 = 4;
        float r21057 = pow(r21055, r21056);
        float r21058 = y;
        float r21059 = pow(r21058, r21056);
        float r21060 = r21057 - r21059;
        return r21060;
}

double f_id(double x, double y) {
        double r21061 = x;
        double r21062 = 4;
        double r21063 = pow(r21061, r21062);
        double r21064 = y;
        double r21065 = pow(r21064, r21062);
        double r21066 = r21063 - r21065;
        return r21066;
}


double f_of(float x, float y) {
        float r21067 = x;
        float r21068 = 4;
        float r21069 = pow(r21067, r21068);
        float r21070 = y;
        float r21071 = pow(r21070, r21068);
        float r21072 = r21069 - r21071;
        return r21072;
}

double f_od(double x, double y) {
        double r21073 = x;
        double r21074 = 4;
        double r21075 = pow(r21073, r21074);
        double r21076 = y;
        double r21077 = pow(r21076, r21074);
        double r21078 = r21075 - r21077;
        return r21078;
}

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 r21079, r21080, r21081, r21082, r21083, r21084;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21079);
        mpfr_init_set_str(r21080, "4", 10, MPFR_RNDN);
        mpfr_init(r21081);
        mpfr_init(r21082);
        mpfr_init(r21083);
        mpfr_init(r21084);
}

double f_im(double x, double y) {
        mpfr_set_d(r21079, x, MPFR_RNDN);
        ;
        mpfr_pow(r21081, r21079, r21080, MPFR_RNDN);
        mpfr_set_d(r21082, y, MPFR_RNDN);
        mpfr_pow(r21083, r21082, r21080, MPFR_RNDN);
        mpfr_sub(r21084, r21081, r21083, MPFR_RNDN);
        return mpfr_get_d(r21084, MPFR_RNDN);
}

static mpfr_t r21085, r21086, r21087, r21088, r21089, r21090;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21085);
        mpfr_init_set_str(r21086, "4", 10, MPFR_RNDN);
        mpfr_init(r21087);
        mpfr_init(r21088);
        mpfr_init(r21089);
        mpfr_init(r21090);
}

double f_fm(double x, double y) {
        mpfr_set_d(r21085, x, MPFR_RNDN);
        ;
        mpfr_pow(r21087, r21085, r21086, MPFR_RNDN);
        mpfr_set_d(r21088, y, MPFR_RNDN);
        mpfr_pow(r21089, r21088, r21086, MPFR_RNDN);
        mpfr_sub(r21090, r21087, r21089, MPFR_RNDN);
        return mpfr_get_d(r21090, MPFR_RNDN);
}

static mpfr_t r21091, r21092, r21093, r21094, r21095, r21096;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21091);
        mpfr_init_set_str(r21092, "4", 10, MPFR_RNDN);
        mpfr_init(r21093);
        mpfr_init(r21094);
        mpfr_init(r21095);
        mpfr_init(r21096);
}

double f_dm(double x, double y) {
        mpfr_set_d(r21091, x, MPFR_RNDN);
        ;
        mpfr_pow(r21093, r21091, r21092, MPFR_RNDN);
        mpfr_set_d(r21094, y, MPFR_RNDN);
        mpfr_pow(r21095, r21094, r21092, MPFR_RNDN);
        mpfr_sub(r21096, r21093, r21095, MPFR_RNDN);
        return mpfr_get_d(r21096, MPFR_RNDN);
}

