#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 r8589 = x;
        float r8590 = 4;
        float r8591 = pow(r8589, r8590);
        float r8592 = y;
        float r8593 = pow(r8592, r8590);
        float r8594 = r8591 - r8593;
        return r8594;
}

double f_id(double x, double y) {
        double r8595 = x;
        double r8596 = 4;
        double r8597 = pow(r8595, r8596);
        double r8598 = y;
        double r8599 = pow(r8598, r8596);
        double r8600 = r8597 - r8599;
        return r8600;
}


double f_of(float x, float y) {
        float r8601 = x;
        float r8602 = 4;
        float r8603 = pow(r8601, r8602);
        float r8604 = y;
        float r8605 = pow(r8604, r8602);
        float r8606 = r8603 - r8605;
        return r8606;
}

double f_od(double x, double y) {
        double r8607 = x;
        double r8608 = 4;
        double r8609 = pow(r8607, r8608);
        double r8610 = y;
        double r8611 = pow(r8610, r8608);
        double r8612 = r8609 - r8611;
        return r8612;
}

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 r8613, r8614, r8615, r8616, r8617, r8618;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(336);
        mpfr_init(r8613);
        mpfr_init_set_str(r8614, "4", 10, MPFR_RNDN);
        mpfr_init(r8615);
        mpfr_init(r8616);
        mpfr_init(r8617);
        mpfr_init(r8618);
}

double f_im(double x, double y) {
        mpfr_set_d(r8613, x, MPFR_RNDN);
        ;
        mpfr_pow(r8615, r8613, r8614, MPFR_RNDN);
        mpfr_set_d(r8616, y, MPFR_RNDN);
        mpfr_pow(r8617, r8616, r8614, MPFR_RNDN);
        mpfr_sub(r8618, r8615, r8617, MPFR_RNDN);
        return mpfr_get_d(r8618, MPFR_RNDN);
}

static mpfr_t r8619, r8620, r8621, r8622, r8623, r8624;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8619);
        mpfr_init_set_str(r8620, "4", 10, MPFR_RNDN);
        mpfr_init(r8621);
        mpfr_init(r8622);
        mpfr_init(r8623);
        mpfr_init(r8624);
}

double f_fm(double x, double y) {
        mpfr_set_d(r8619, x, MPFR_RNDN);
        ;
        mpfr_pow(r8621, r8619, r8620, MPFR_RNDN);
        mpfr_set_d(r8622, y, MPFR_RNDN);
        mpfr_pow(r8623, r8622, r8620, MPFR_RNDN);
        mpfr_sub(r8624, r8621, r8623, MPFR_RNDN);
        return mpfr_get_d(r8624, MPFR_RNDN);
}

static mpfr_t r8625, r8626, r8627, r8628, r8629, r8630;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(336);
        mpfr_init(r8625);
        mpfr_init_set_str(r8626, "4", 10, MPFR_RNDN);
        mpfr_init(r8627);
        mpfr_init(r8628);
        mpfr_init(r8629);
        mpfr_init(r8630);
}

double f_dm(double x, double y) {
        mpfr_set_d(r8625, x, MPFR_RNDN);
        ;
        mpfr_pow(r8627, r8625, r8626, MPFR_RNDN);
        mpfr_set_d(r8628, y, MPFR_RNDN);
        mpfr_pow(r8629, r8628, r8626, MPFR_RNDN);
        mpfr_sub(r8630, r8627, r8629, MPFR_RNDN);
        return mpfr_get_d(r8630, MPFR_RNDN);
}

