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

char *name = "NMSE Section 6.1 mentioned, B";

double f_if(float a, float b) {
        float r8710 = atan2(1.0, 0.0);
        float r8711 = 2;
        float r8712 = r8710 / r8711;
        float r8713 = 1;
        float r8714 = b;
        float r8715 = r8714 * r8714;
        float r8716 = a;
        float r8717 = r8716 * r8716;
        float r8718 = r8715 - r8717;
        float r8719 = r8713 / r8718;
        float r8720 = r8712 * r8719;
        float r8721 = r8713 / r8716;
        float r8722 = r8713 / r8714;
        float r8723 = r8721 - r8722;
        float r8724 = r8720 * r8723;
        return r8724;
}

double f_id(double a, double b) {
        double r8725 = atan2(1.0, 0.0);
        double r8726 = 2;
        double r8727 = r8725 / r8726;
        double r8728 = 1;
        double r8729 = b;
        double r8730 = r8729 * r8729;
        double r8731 = a;
        double r8732 = r8731 * r8731;
        double r8733 = r8730 - r8732;
        double r8734 = r8728 / r8733;
        double r8735 = r8727 * r8734;
        double r8736 = r8728 / r8731;
        double r8737 = r8728 / r8729;
        double r8738 = r8736 - r8737;
        double r8739 = r8735 * r8738;
        return r8739;
}


double f_of(float a, float b) {
        float r8740 = atan2(1.0, 0.0);
        float r8741 = 2;
        float r8742 = r8740 / r8741;
        float r8743 = b;
        float r8744 = a;
        float r8745 = r8743 - r8744;
        float r8746 = r8743 + r8744;
        float r8747 = r8745 / r8746;
        float r8748 = r8742 * r8747;
        float r8749 = 1;
        float r8750 = r8749 / r8745;
        float r8751 = r8744 * r8743;
        float r8752 = r8750 / r8751;
        float r8753 = r8748 * r8752;
        return r8753;
}

double f_od(double a, double b) {
        double r8754 = atan2(1.0, 0.0);
        double r8755 = 2;
        double r8756 = r8754 / r8755;
        double r8757 = b;
        double r8758 = a;
        double r8759 = r8757 - r8758;
        double r8760 = r8757 + r8758;
        double r8761 = r8759 / r8760;
        double r8762 = r8756 * r8761;
        double r8763 = 1;
        double r8764 = r8763 / r8759;
        double r8765 = r8758 * r8757;
        double r8766 = r8764 / r8765;
        double r8767 = r8762 * r8766;
        return r8767;
}

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 r8768, r8769, r8770, r8771, r8772, r8773, r8774, r8775, r8776, r8777, r8778, r8779, r8780, r8781, r8782;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r8768);
        mpfr_init_set_str(r8769, "2", 10, MPFR_RNDN);
        mpfr_init(r8770);
        mpfr_init_set_str(r8771, "1", 10, MPFR_RNDN);
        mpfr_init(r8772);
        mpfr_init(r8773);
        mpfr_init(r8774);
        mpfr_init(r8775);
        mpfr_init(r8776);
        mpfr_init(r8777);
        mpfr_init(r8778);
        mpfr_init(r8779);
        mpfr_init(r8780);
        mpfr_init(r8781);
        mpfr_init(r8782);
}

double f_im(double a, double b) {
        mpfr_const_pi(r8768, MPFR_RNDN);
        ;
        mpfr_div(r8770, r8768, r8769, MPFR_RNDN);
        ;
        mpfr_set_d(r8772, b, MPFR_RNDN);
        mpfr_mul(r8773, r8772, r8772, MPFR_RNDN);
        mpfr_set_d(r8774, a, MPFR_RNDN);
        mpfr_mul(r8775, r8774, r8774, MPFR_RNDN);
        mpfr_sub(r8776, r8773, r8775, MPFR_RNDN);
        mpfr_div(r8777, r8771, r8776, MPFR_RNDN);
        mpfr_mul(r8778, r8770, r8777, MPFR_RNDN);
        mpfr_div(r8779, r8771, r8774, MPFR_RNDN);
        mpfr_div(r8780, r8771, r8772, MPFR_RNDN);
        mpfr_sub(r8781, r8779, r8780, MPFR_RNDN);
        mpfr_mul(r8782, r8778, r8781, MPFR_RNDN);
        return mpfr_get_d(r8782, MPFR_RNDN);
}

static mpfr_t r8783, r8784, r8785, r8786, r8787, r8788, r8789, r8790, r8791, r8792, r8793, r8794, r8795, r8796;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8783);
        mpfr_init_set_str(r8784, "2", 10, MPFR_RNDN);
        mpfr_init(r8785);
        mpfr_init(r8786);
        mpfr_init(r8787);
        mpfr_init(r8788);
        mpfr_init(r8789);
        mpfr_init(r8790);
        mpfr_init(r8791);
        mpfr_init_set_str(r8792, "1", 10, MPFR_RNDN);
        mpfr_init(r8793);
        mpfr_init(r8794);
        mpfr_init(r8795);
        mpfr_init(r8796);
}

double f_fm(double a, double b) {
        mpfr_const_pi(r8783, MPFR_RNDN);
        ;
        mpfr_div(r8785, r8783, r8784, MPFR_RNDN);
        mpfr_set_d(r8786, b, MPFR_RNDN);
        mpfr_set_d(r8787, a, MPFR_RNDN);
        mpfr_sub(r8788, r8786, r8787, MPFR_RNDN);
        mpfr_add(r8789, r8786, r8787, MPFR_RNDN);
        mpfr_div(r8790, r8788, r8789, MPFR_RNDN);
        mpfr_mul(r8791, r8785, r8790, MPFR_RNDN);
        ;
        mpfr_div(r8793, r8792, r8788, MPFR_RNDN);
        mpfr_mul(r8794, r8787, r8786, MPFR_RNDN);
        mpfr_div(r8795, r8793, r8794, MPFR_RNDN);
        mpfr_mul(r8796, r8791, r8795, MPFR_RNDN);
        return mpfr_get_d(r8796, MPFR_RNDN);
}

static mpfr_t r8797, r8798, r8799, r8800, r8801, r8802, r8803, r8804, r8805, r8806, r8807, r8808, r8809, r8810;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init(r8797);
        mpfr_init_set_str(r8798, "2", 10, MPFR_RNDN);
        mpfr_init(r8799);
        mpfr_init(r8800);
        mpfr_init(r8801);
        mpfr_init(r8802);
        mpfr_init(r8803);
        mpfr_init(r8804);
        mpfr_init(r8805);
        mpfr_init_set_str(r8806, "1", 10, MPFR_RNDN);
        mpfr_init(r8807);
        mpfr_init(r8808);
        mpfr_init(r8809);
        mpfr_init(r8810);
}

double f_dm(double a, double b) {
        mpfr_const_pi(r8797, MPFR_RNDN);
        ;
        mpfr_div(r8799, r8797, r8798, MPFR_RNDN);
        mpfr_set_d(r8800, b, MPFR_RNDN);
        mpfr_set_d(r8801, a, MPFR_RNDN);
        mpfr_sub(r8802, r8800, r8801, MPFR_RNDN);
        mpfr_add(r8803, r8800, r8801, MPFR_RNDN);
        mpfr_div(r8804, r8802, r8803, MPFR_RNDN);
        mpfr_mul(r8805, r8799, r8804, MPFR_RNDN);
        ;
        mpfr_div(r8807, r8806, r8802, MPFR_RNDN);
        mpfr_mul(r8808, r8801, r8800, MPFR_RNDN);
        mpfr_div(r8809, r8807, r8808, MPFR_RNDN);
        mpfr_mul(r8810, r8805, r8809, MPFR_RNDN);
        return mpfr_get_d(r8810, MPFR_RNDN);
}

