#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 r21069 = atan2(1.0, 0.0);
        float r21070 = 2;
        float r21071 = r21069 / r21070;
        float r21072 = 1;
        float r21073 = b;
        float r21074 = r21073 * r21073;
        float r21075 = a;
        float r21076 = r21075 * r21075;
        float r21077 = r21074 - r21076;
        float r21078 = r21072 / r21077;
        float r21079 = r21071 * r21078;
        float r21080 = r21072 / r21075;
        float r21081 = r21072 / r21073;
        float r21082 = r21080 - r21081;
        float r21083 = r21079 * r21082;
        return r21083;
}

double f_id(double a, double b) {
        double r21084 = atan2(1.0, 0.0);
        double r21085 = 2;
        double r21086 = r21084 / r21085;
        double r21087 = 1;
        double r21088 = b;
        double r21089 = r21088 * r21088;
        double r21090 = a;
        double r21091 = r21090 * r21090;
        double r21092 = r21089 - r21091;
        double r21093 = r21087 / r21092;
        double r21094 = r21086 * r21093;
        double r21095 = r21087 / r21090;
        double r21096 = r21087 / r21088;
        double r21097 = r21095 - r21096;
        double r21098 = r21094 * r21097;
        return r21098;
}


double f_of(float a, float b) {
        float r21099 = 1;
        float r21100 = b;
        float r21101 = a;
        float r21102 = r21100 + r21101;
        float r21103 = r21099 / r21102;
        float r21104 = r21099 / r21101;
        float r21105 = r21099 / r21100;
        float r21106 = r21104 - r21105;
        float r21107 = r21100 - r21101;
        float r21108 = r21106 / r21107;
        float r21109 = atan2(1.0, 0.0);
        float r21110 = 2;
        float r21111 = r21109 / r21110;
        float r21112 = r21108 * r21111;
        float r21113 = r21103 * r21112;
        return r21113;
}

double f_od(double a, double b) {
        double r21114 = 1;
        double r21115 = b;
        double r21116 = a;
        double r21117 = r21115 + r21116;
        double r21118 = r21114 / r21117;
        double r21119 = r21114 / r21116;
        double r21120 = r21114 / r21115;
        double r21121 = r21119 - r21120;
        double r21122 = r21115 - r21116;
        double r21123 = r21121 / r21122;
        double r21124 = atan2(1.0, 0.0);
        double r21125 = 2;
        double r21126 = r21124 / r21125;
        double r21127 = r21123 * r21126;
        double r21128 = r21118 * r21127;
        return r21128;
}

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 r21129, r21130, r21131, r21132, r21133, r21134, r21135, r21136, r21137, r21138, r21139, r21140, r21141, r21142, r21143;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(400);
        mpfr_init(r21129);
        mpfr_init_set_str(r21130, "2", 10, MPFR_RNDN);
        mpfr_init(r21131);
        mpfr_init_set_str(r21132, "1", 10, MPFR_RNDN);
        mpfr_init(r21133);
        mpfr_init(r21134);
        mpfr_init(r21135);
        mpfr_init(r21136);
        mpfr_init(r21137);
        mpfr_init(r21138);
        mpfr_init(r21139);
        mpfr_init(r21140);
        mpfr_init(r21141);
        mpfr_init(r21142);
        mpfr_init(r21143);
}

double f_im(double a, double b) {
        mpfr_const_pi(r21129, MPFR_RNDN);
        ;
        mpfr_div(r21131, r21129, r21130, MPFR_RNDN);
        ;
        mpfr_set_d(r21133, b, MPFR_RNDN);
        mpfr_mul(r21134, r21133, r21133, MPFR_RNDN);
        mpfr_set_d(r21135, a, MPFR_RNDN);
        mpfr_mul(r21136, r21135, r21135, MPFR_RNDN);
        mpfr_sub(r21137, r21134, r21136, MPFR_RNDN);
        mpfr_div(r21138, r21132, r21137, MPFR_RNDN);
        mpfr_mul(r21139, r21131, r21138, MPFR_RNDN);
        mpfr_div(r21140, r21132, r21135, MPFR_RNDN);
        mpfr_div(r21141, r21132, r21133, MPFR_RNDN);
        mpfr_sub(r21142, r21140, r21141, MPFR_RNDN);
        mpfr_mul(r21143, r21139, r21142, MPFR_RNDN);
        return mpfr_get_d(r21143, MPFR_RNDN);
}

static mpfr_t r21144, r21145, r21146, r21147, r21148, r21149, r21150, r21151, r21152, r21153, r21154, r21155, r21156, r21157, r21158;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21144, "1", 10, MPFR_RNDN);
        mpfr_init(r21145);
        mpfr_init(r21146);
        mpfr_init(r21147);
        mpfr_init(r21148);
        mpfr_init(r21149);
        mpfr_init(r21150);
        mpfr_init(r21151);
        mpfr_init(r21152);
        mpfr_init(r21153);
        mpfr_init(r21154);
        mpfr_init_set_str(r21155, "2", 10, MPFR_RNDN);
        mpfr_init(r21156);
        mpfr_init(r21157);
        mpfr_init(r21158);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r21145, b, MPFR_RNDN);
        mpfr_set_d(r21146, a, MPFR_RNDN);
        mpfr_add(r21147, r21145, r21146, MPFR_RNDN);
        mpfr_div(r21148, r21144, r21147, MPFR_RNDN);
        mpfr_div(r21149, r21144, r21146, MPFR_RNDN);
        mpfr_div(r21150, r21144, r21145, MPFR_RNDN);
        mpfr_sub(r21151, r21149, r21150, MPFR_RNDN);
        mpfr_sub(r21152, r21145, r21146, MPFR_RNDN);
        mpfr_div(r21153, r21151, r21152, MPFR_RNDN);
        mpfr_const_pi(r21154, MPFR_RNDN);
        ;
        mpfr_div(r21156, r21154, r21155, MPFR_RNDN);
        mpfr_mul(r21157, r21153, r21156, MPFR_RNDN);
        mpfr_mul(r21158, r21148, r21157, MPFR_RNDN);
        return mpfr_get_d(r21158, MPFR_RNDN);
}

static mpfr_t r21159, r21160, r21161, r21162, r21163, r21164, r21165, r21166, r21167, r21168, r21169, r21170, r21171, r21172, r21173;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(400);
        mpfr_init_set_str(r21159, "1", 10, MPFR_RNDN);
        mpfr_init(r21160);
        mpfr_init(r21161);
        mpfr_init(r21162);
        mpfr_init(r21163);
        mpfr_init(r21164);
        mpfr_init(r21165);
        mpfr_init(r21166);
        mpfr_init(r21167);
        mpfr_init(r21168);
        mpfr_init(r21169);
        mpfr_init_set_str(r21170, "2", 10, MPFR_RNDN);
        mpfr_init(r21171);
        mpfr_init(r21172);
        mpfr_init(r21173);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r21160, b, MPFR_RNDN);
        mpfr_set_d(r21161, a, MPFR_RNDN);
        mpfr_add(r21162, r21160, r21161, MPFR_RNDN);
        mpfr_div(r21163, r21159, r21162, MPFR_RNDN);
        mpfr_div(r21164, r21159, r21161, MPFR_RNDN);
        mpfr_div(r21165, r21159, r21160, MPFR_RNDN);
        mpfr_sub(r21166, r21164, r21165, MPFR_RNDN);
        mpfr_sub(r21167, r21160, r21161, MPFR_RNDN);
        mpfr_div(r21168, r21166, r21167, MPFR_RNDN);
        mpfr_const_pi(r21169, MPFR_RNDN);
        ;
        mpfr_div(r21171, r21169, r21170, MPFR_RNDN);
        mpfr_mul(r21172, r21168, r21171, MPFR_RNDN);
        mpfr_mul(r21173, r21163, r21172, MPFR_RNDN);
        return mpfr_get_d(r21173, MPFR_RNDN);
}

