#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 r21031 = x;
        float r21032 = 4;
        float r21033 = pow(r21031, r21032);
        float r21034 = y;
        float r21035 = pow(r21034, r21032);
        float r21036 = r21033 - r21035;
        return r21036;
}

double f_id(double x, double y) {
        double r21037 = x;
        double r21038 = 4;
        double r21039 = pow(r21037, r21038);
        double r21040 = y;
        double r21041 = pow(r21040, r21038);
        double r21042 = r21039 - r21041;
        return r21042;
}


double f_of(float x, float y) {
        float r21043 = x;
        float r21044 = 4;
        float r21045 = pow(r21043, r21044);
        float r21046 = y;
        float r21047 = pow(r21046, r21044);
        float r21048 = r21045 - r21047;
        return r21048;
}

double f_od(double x, double y) {
        double r21049 = x;
        double r21050 = 4;
        double r21051 = pow(r21049, r21050);
        double r21052 = y;
        double r21053 = pow(r21052, r21050);
        double r21054 = r21051 - r21053;
        return r21054;
}

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 r21055, r21056, r21057, r21058, r21059, r21060;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21055);
        mpfr_init_set_str(r21056, "4", 10, MPFR_RNDN);
        mpfr_init(r21057);
        mpfr_init(r21058);
        mpfr_init(r21059);
        mpfr_init(r21060);
}

double f_im(double x, double y) {
        mpfr_set_d(r21055, x, MPFR_RNDN);
        ;
        mpfr_pow(r21057, r21055, r21056, MPFR_RNDN);
        mpfr_set_d(r21058, y, MPFR_RNDN);
        mpfr_pow(r21059, r21058, r21056, MPFR_RNDN);
        mpfr_sub(r21060, r21057, r21059, MPFR_RNDN);
        return mpfr_get_d(r21060, MPFR_RNDN);
}

static mpfr_t r21061, r21062, r21063, r21064, r21065, r21066;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21061);
        mpfr_init_set_str(r21062, "4", 10, MPFR_RNDN);
        mpfr_init(r21063);
        mpfr_init(r21064);
        mpfr_init(r21065);
        mpfr_init(r21066);
}

double f_fm(double x, double y) {
        mpfr_set_d(r21061, x, MPFR_RNDN);
        ;
        mpfr_pow(r21063, r21061, r21062, MPFR_RNDN);
        mpfr_set_d(r21064, y, MPFR_RNDN);
        mpfr_pow(r21065, r21064, r21062, MPFR_RNDN);
        mpfr_sub(r21066, r21063, r21065, MPFR_RNDN);
        return mpfr_get_d(r21066, MPFR_RNDN);
}

static mpfr_t r21067, r21068, r21069, r21070, r21071, r21072;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r21067);
        mpfr_init_set_str(r21068, "4", 10, MPFR_RNDN);
        mpfr_init(r21069);
        mpfr_init(r21070);
        mpfr_init(r21071);
        mpfr_init(r21072);
}

double f_dm(double x, double y) {
        mpfr_set_d(r21067, x, MPFR_RNDN);
        ;
        mpfr_pow(r21069, r21067, r21068, MPFR_RNDN);
        mpfr_set_d(r21070, y, MPFR_RNDN);
        mpfr_pow(r21071, r21070, r21068, MPFR_RNDN);
        mpfr_sub(r21072, r21069, r21071, MPFR_RNDN);
        return mpfr_get_d(r21072, MPFR_RNDN);
}

