#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 r27770 = atan2(1.0, 0.0);
        float r27771 = 2;
        float r27772 = r27770 / r27771;
        float r27773 = 1;
        float r27774 = b;
        float r27775 = r27774 * r27774;
        float r27776 = a;
        float r27777 = r27776 * r27776;
        float r27778 = r27775 - r27777;
        float r27779 = r27773 / r27778;
        float r27780 = r27772 * r27779;
        float r27781 = r27773 / r27776;
        float r27782 = r27773 / r27774;
        float r27783 = r27781 - r27782;
        float r27784 = r27780 * r27783;
        return r27784;
}

double f_id(double a, double b) {
        double r27785 = atan2(1.0, 0.0);
        double r27786 = 2;
        double r27787 = r27785 / r27786;
        double r27788 = 1;
        double r27789 = b;
        double r27790 = r27789 * r27789;
        double r27791 = a;
        double r27792 = r27791 * r27791;
        double r27793 = r27790 - r27792;
        double r27794 = r27788 / r27793;
        double r27795 = r27787 * r27794;
        double r27796 = r27788 / r27791;
        double r27797 = r27788 / r27789;
        double r27798 = r27796 - r27797;
        double r27799 = r27795 * r27798;
        return r27799;
}


double f_of(float a, float b) {
        float r27800 = atan2(1.0, 0.0);
        float r27801 = 2;
        float r27802 = r27800 / r27801;
        float r27803 = b;
        float r27804 = a;
        float r27805 = r27803 + r27804;
        float r27806 = r27802 / r27805;
        float r27807 = 1;
        float r27808 = r27804 * r27803;
        float r27809 = r27807 / r27808;
        float r27810 = r27806 * r27809;
        return r27810;
}

double f_od(double a, double b) {
        double r27811 = atan2(1.0, 0.0);
        double r27812 = 2;
        double r27813 = r27811 / r27812;
        double r27814 = b;
        double r27815 = a;
        double r27816 = r27814 + r27815;
        double r27817 = r27813 / r27816;
        double r27818 = 1;
        double r27819 = r27815 * r27814;
        double r27820 = r27818 / r27819;
        double r27821 = r27817 * r27820;
        return r27821;
}

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 r27822, r27823, r27824, r27825, r27826, r27827, r27828, r27829, r27830, r27831, r27832, r27833, r27834, r27835, r27836;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r27822);
        mpfr_init_set_str(r27823, "2", 10, MPFR_RNDN);
        mpfr_init(r27824);
        mpfr_init_set_str(r27825, "1", 10, MPFR_RNDN);
        mpfr_init(r27826);
        mpfr_init(r27827);
        mpfr_init(r27828);
        mpfr_init(r27829);
        mpfr_init(r27830);
        mpfr_init(r27831);
        mpfr_init(r27832);
        mpfr_init(r27833);
        mpfr_init(r27834);
        mpfr_init(r27835);
        mpfr_init(r27836);
}

double f_im(double a, double b) {
        mpfr_const_pi(r27822, MPFR_RNDN);
        ;
        mpfr_div(r27824, r27822, r27823, MPFR_RNDN);
        ;
        mpfr_set_d(r27826, b, MPFR_RNDN);
        mpfr_mul(r27827, r27826, r27826, MPFR_RNDN);
        mpfr_set_d(r27828, a, MPFR_RNDN);
        mpfr_mul(r27829, r27828, r27828, MPFR_RNDN);
        mpfr_sub(r27830, r27827, r27829, MPFR_RNDN);
        mpfr_div(r27831, r27825, r27830, MPFR_RNDN);
        mpfr_mul(r27832, r27824, r27831, MPFR_RNDN);
        mpfr_div(r27833, r27825, r27828, MPFR_RNDN);
        mpfr_div(r27834, r27825, r27826, MPFR_RNDN);
        mpfr_sub(r27835, r27833, r27834, MPFR_RNDN);
        mpfr_mul(r27836, r27832, r27835, MPFR_RNDN);
        return mpfr_get_d(r27836, MPFR_RNDN);
}

static mpfr_t r27837, r27838, r27839, r27840, r27841, r27842, r27843, r27844, r27845, r27846, r27847;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27837);
        mpfr_init_set_str(r27838, "2", 10, MPFR_RNDN);
        mpfr_init(r27839);
        mpfr_init(r27840);
        mpfr_init(r27841);
        mpfr_init(r27842);
        mpfr_init(r27843);
        mpfr_init_set_str(r27844, "1", 10, MPFR_RNDN);
        mpfr_init(r27845);
        mpfr_init(r27846);
        mpfr_init(r27847);
}

double f_fm(double a, double b) {
        mpfr_const_pi(r27837, MPFR_RNDN);
        ;
        mpfr_div(r27839, r27837, r27838, MPFR_RNDN);
        mpfr_set_d(r27840, b, MPFR_RNDN);
        mpfr_set_d(r27841, a, MPFR_RNDN);
        mpfr_add(r27842, r27840, r27841, MPFR_RNDN);
        mpfr_div(r27843, r27839, r27842, MPFR_RNDN);
        ;
        mpfr_mul(r27845, r27841, r27840, MPFR_RNDN);
        mpfr_div(r27846, r27844, r27845, MPFR_RNDN);
        mpfr_mul(r27847, r27843, r27846, MPFR_RNDN);
        return mpfr_get_d(r27847, MPFR_RNDN);
}

static mpfr_t r27848, r27849, r27850, r27851, r27852, r27853, r27854, r27855, r27856, r27857, r27858;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init(r27848);
        mpfr_init_set_str(r27849, "2", 10, MPFR_RNDN);
        mpfr_init(r27850);
        mpfr_init(r27851);
        mpfr_init(r27852);
        mpfr_init(r27853);
        mpfr_init(r27854);
        mpfr_init_set_str(r27855, "1", 10, MPFR_RNDN);
        mpfr_init(r27856);
        mpfr_init(r27857);
        mpfr_init(r27858);
}

double f_dm(double a, double b) {
        mpfr_const_pi(r27848, MPFR_RNDN);
        ;
        mpfr_div(r27850, r27848, r27849, MPFR_RNDN);
        mpfr_set_d(r27851, b, MPFR_RNDN);
        mpfr_set_d(r27852, a, MPFR_RNDN);
        mpfr_add(r27853, r27851, r27852, MPFR_RNDN);
        mpfr_div(r27854, r27850, r27853, MPFR_RNDN);
        ;
        mpfr_mul(r27856, r27852, r27851, MPFR_RNDN);
        mpfr_div(r27857, r27855, r27856, MPFR_RNDN);
        mpfr_mul(r27858, r27854, r27857, MPFR_RNDN);
        return mpfr_get_d(r27858, MPFR_RNDN);
}

