#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 r7860 = atan2(1.0, 0.0);
        float r7861 = 2.0f;
        float r7862 = r7860 / r7861;
        float r7863 = 1.0f;
        float r7864 = b;
        float r7865 = r7864 * r7864;
        float r7866 = a;
        float r7867 = r7866 * r7866;
        float r7868 = r7865 - r7867;
        float r7869 = r7863 / r7868;
        float r7870 = r7862 * r7869;
        float r7871 = r7863 / r7866;
        float r7872 = r7863 / r7864;
        float r7873 = r7871 - r7872;
        float r7874 = r7870 * r7873;
        return r7874;
}

double f_id(double a, double b) {
        double r7875 = atan2(1.0, 0.0);
        double r7876 = 2.0;
        double r7877 = r7875 / r7876;
        double r7878 = 1.0;
        double r7879 = b;
        double r7880 = r7879 * r7879;
        double r7881 = a;
        double r7882 = r7881 * r7881;
        double r7883 = r7880 - r7882;
        double r7884 = r7878 / r7883;
        double r7885 = r7877 * r7884;
        double r7886 = r7878 / r7881;
        double r7887 = r7878 / r7879;
        double r7888 = r7886 - r7887;
        double r7889 = r7885 * r7888;
        return r7889;
}


double f_of(float a, float b) {
        float r7890 = 1.0f;
        float r7891 = a;
        float r7892 = r7890 / r7891;
        float r7893 = b;
        float r7894 = r7890 / r7893;
        float r7895 = r7892 - r7894;
        float r7896 = 2.0f;
        float r7897 = r7891 + r7893;
        float r7898 = r7896 * r7897;
        float r7899 = r7895 / r7898;
        float r7900 = r7893 - r7891;
        float r7901 = atan2(1.0, 0.0);
        float r7902 = r7900 / r7901;
        float r7903 = r7899 / r7902;
        return r7903;
}

double f_od(double a, double b) {
        double r7904 = 1.0;
        double r7905 = a;
        double r7906 = r7904 / r7905;
        double r7907 = b;
        double r7908 = r7904 / r7907;
        double r7909 = r7906 - r7908;
        double r7910 = 2.0;
        double r7911 = r7905 + r7907;
        double r7912 = r7910 * r7911;
        double r7913 = r7909 / r7912;
        double r7914 = r7907 - r7905;
        double r7915 = atan2(1.0, 0.0);
        double r7916 = r7914 / r7915;
        double r7917 = r7913 / r7916;
        return r7917;
}

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 r7918, r7919, r7920, r7921, r7922, r7923, r7924, r7925, r7926, r7927, r7928, r7929, r7930, r7931, r7932;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init(r7918);
        mpfr_init_set_str(r7919, "2", 10, MPFR_RNDN);
        mpfr_init(r7920);
        mpfr_init_set_str(r7921, "1", 10, MPFR_RNDN);
        mpfr_init(r7922);
        mpfr_init(r7923);
        mpfr_init(r7924);
        mpfr_init(r7925);
        mpfr_init(r7926);
        mpfr_init(r7927);
        mpfr_init(r7928);
        mpfr_init(r7929);
        mpfr_init(r7930);
        mpfr_init(r7931);
        mpfr_init(r7932);
}

double f_im(double a, double b) {
        mpfr_const_pi(r7918, MPFR_RNDN);
        ;
        mpfr_div(r7920, r7918, r7919, MPFR_RNDN);
        ;
        mpfr_set_d(r7922, b, MPFR_RNDN);
        mpfr_mul(r7923, r7922, r7922, MPFR_RNDN);
        mpfr_set_d(r7924, a, MPFR_RNDN);
        mpfr_mul(r7925, r7924, r7924, MPFR_RNDN);
        mpfr_sub(r7926, r7923, r7925, MPFR_RNDN);
        mpfr_div(r7927, r7921, r7926, MPFR_RNDN);
        mpfr_mul(r7928, r7920, r7927, MPFR_RNDN);
        mpfr_div(r7929, r7921, r7924, MPFR_RNDN);
        mpfr_div(r7930, r7921, r7922, MPFR_RNDN);
        mpfr_sub(r7931, r7929, r7930, MPFR_RNDN);
        mpfr_mul(r7932, r7928, r7931, MPFR_RNDN);
        return mpfr_get_d(r7932, MPFR_RNDN);
}

static mpfr_t r7933, r7934, r7935, r7936, r7937, r7938, r7939, r7940, r7941, r7942, r7943, r7944, r7945, r7946;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7933, "1", 10, MPFR_RNDN);
        mpfr_init(r7934);
        mpfr_init(r7935);
        mpfr_init(r7936);
        mpfr_init(r7937);
        mpfr_init(r7938);
        mpfr_init_set_str(r7939, "2", 10, MPFR_RNDN);
        mpfr_init(r7940);
        mpfr_init(r7941);
        mpfr_init(r7942);
        mpfr_init(r7943);
        mpfr_init(r7944);
        mpfr_init(r7945);
        mpfr_init(r7946);
}

double f_fm(double a, double b) {
        ;
        mpfr_set_d(r7934, a, MPFR_RNDN);
        mpfr_div(r7935, r7933, r7934, MPFR_RNDN);
        mpfr_set_d(r7936, b, MPFR_RNDN);
        mpfr_div(r7937, r7933, r7936, MPFR_RNDN);
        mpfr_sub(r7938, r7935, r7937, MPFR_RNDN);
        ;
        mpfr_add(r7940, r7934, r7936, MPFR_RNDN);
        mpfr_mul(r7941, r7939, r7940, MPFR_RNDN);
        mpfr_div(r7942, r7938, r7941, MPFR_RNDN);
        mpfr_sub(r7943, r7936, r7934, MPFR_RNDN);
        mpfr_const_pi(r7944, MPFR_RNDN);
        mpfr_div(r7945, r7943, r7944, MPFR_RNDN);
        mpfr_div(r7946, r7942, r7945, MPFR_RNDN);
        return mpfr_get_d(r7946, MPFR_RNDN);
}

static mpfr_t r7947, r7948, r7949, r7950, r7951, r7952, r7953, r7954, r7955, r7956, r7957, r7958, r7959, r7960;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r7947, "1", 10, MPFR_RNDN);
        mpfr_init(r7948);
        mpfr_init(r7949);
        mpfr_init(r7950);
        mpfr_init(r7951);
        mpfr_init(r7952);
        mpfr_init_set_str(r7953, "2", 10, MPFR_RNDN);
        mpfr_init(r7954);
        mpfr_init(r7955);
        mpfr_init(r7956);
        mpfr_init(r7957);
        mpfr_init(r7958);
        mpfr_init(r7959);
        mpfr_init(r7960);
}

double f_dm(double a, double b) {
        ;
        mpfr_set_d(r7948, a, MPFR_RNDN);
        mpfr_div(r7949, r7947, r7948, MPFR_RNDN);
        mpfr_set_d(r7950, b, MPFR_RNDN);
        mpfr_div(r7951, r7947, r7950, MPFR_RNDN);
        mpfr_sub(r7952, r7949, r7951, MPFR_RNDN);
        ;
        mpfr_add(r7954, r7948, r7950, MPFR_RNDN);
        mpfr_mul(r7955, r7953, r7954, MPFR_RNDN);
        mpfr_div(r7956, r7952, r7955, MPFR_RNDN);
        mpfr_sub(r7957, r7950, r7948, MPFR_RNDN);
        mpfr_const_pi(r7958, MPFR_RNDN);
        mpfr_div(r7959, r7957, r7958, MPFR_RNDN);
        mpfr_div(r7960, r7956, r7959, MPFR_RNDN);
        return mpfr_get_d(r7960, MPFR_RNDN);
}

