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

char *name = "2sin (example 3.3)";

double f_if(float x, float eps) {
        float r6239078 = x;
        float r6239079 = eps;
        float r6239080 = r6239078 + r6239079;
        float r6239081 = sin(r6239080);
        float r6239082 = sin(r6239078);
        float r6239083 = r6239081 - r6239082;
        return r6239083;
}

double f_id(double x, double eps) {
        double r6239084 = x;
        double r6239085 = eps;
        double r6239086 = r6239084 + r6239085;
        double r6239087 = sin(r6239086);
        double r6239088 = sin(r6239084);
        double r6239089 = r6239087 - r6239088;
        return r6239089;
}


double f_of(float x, float eps) {
        float r6239090 = eps;
        float r6239091 = -1.4403236540735996e-08;
        bool r6239092 = r6239090 <= r6239091;
        float r6239093 = x;
        float r6239094 = sin(r6239093);
        float r6239095 = cos(r6239090);
        float r6239096 = r6239094 * r6239095;
        float r6239097 = cos(r6239093);
        float r6239098 = sin(r6239090);
        float r6239099 = r6239097 * r6239098;
        float r6239100 = r6239099 - r6239094;
        float r6239101 = r6239096 + r6239100;
        float r6239102 = 8.344757970106002e-09;
        bool r6239103 = r6239090 <= r6239102;
        float r6239104 = 2;
        float r6239105 = r6239090 / r6239104;
        float r6239106 = sin(r6239105);
        float r6239107 = r6239093 + r6239093;
        float r6239108 = r6239090 + r6239107;
        float r6239109 = r6239108 / r6239104;
        float r6239110 = cos(r6239109);
        float r6239111 = r6239106 * r6239110;
        float r6239112 = r6239104 * r6239111;
        float r6239113 = r6239096 + r6239099;
        float r6239114 = r6239113 - r6239094;
        float r6239115 = r6239103 ? r6239112 : r6239114;
        float r6239116 = r6239092 ? r6239101 : r6239115;
        return r6239116;
}

double f_od(double x, double eps) {
        double r6239117 = eps;
        double r6239118 = -1.4403236540735996e-08;
        bool r6239119 = r6239117 <= r6239118;
        double r6239120 = x;
        double r6239121 = sin(r6239120);
        double r6239122 = cos(r6239117);
        double r6239123 = r6239121 * r6239122;
        double r6239124 = cos(r6239120);
        double r6239125 = sin(r6239117);
        double r6239126 = r6239124 * r6239125;
        double r6239127 = r6239126 - r6239121;
        double r6239128 = r6239123 + r6239127;
        double r6239129 = 8.344757970106002e-09;
        bool r6239130 = r6239117 <= r6239129;
        double r6239131 = 2;
        double r6239132 = r6239117 / r6239131;
        double r6239133 = sin(r6239132);
        double r6239134 = r6239120 + r6239120;
        double r6239135 = r6239117 + r6239134;
        double r6239136 = r6239135 / r6239131;
        double r6239137 = cos(r6239136);
        double r6239138 = r6239133 * r6239137;
        double r6239139 = r6239131 * r6239138;
        double r6239140 = r6239123 + r6239126;
        double r6239141 = r6239140 - r6239121;
        double r6239142 = r6239130 ? r6239139 : r6239141;
        double r6239143 = r6239119 ? r6239128 : r6239142;
        return r6239143;
}

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 r6239144, r6239145, r6239146, r6239147, r6239148, r6239149;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6239144);
        mpfr_init(r6239145);
        mpfr_init(r6239146);
        mpfr_init(r6239147);
        mpfr_init(r6239148);
        mpfr_init(r6239149);
}

double f_im(double x, double eps) {
        mpfr_set_d(r6239144, x, MPFR_RNDN);
        mpfr_set_d(r6239145, eps, MPFR_RNDN);
        mpfr_add(r6239146, r6239144, r6239145, MPFR_RNDN);
        mpfr_sin(r6239147, r6239146, MPFR_RNDN);
        mpfr_sin(r6239148, r6239144, MPFR_RNDN);
        mpfr_sub(r6239149, r6239147, r6239148, MPFR_RNDN);
        return mpfr_get_d(r6239149, MPFR_RNDN);
}

static mpfr_t r6239150, r6239151, r6239152, r6239153, r6239154, r6239155, r6239156, r6239157, r6239158, r6239159, r6239160, r6239161, r6239162, r6239163, r6239164, r6239165, r6239166, r6239167, r6239168, r6239169, r6239170, r6239171, r6239172, r6239173, r6239174, r6239175, r6239176;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6239150);
        mpfr_init_set_str(r6239151, "-1.4403236540735996e-08", 10, MPFR_RNDN);
        mpfr_init(r6239152);
        mpfr_init(r6239153);
        mpfr_init(r6239154);
        mpfr_init(r6239155);
        mpfr_init(r6239156);
        mpfr_init(r6239157);
        mpfr_init(r6239158);
        mpfr_init(r6239159);
        mpfr_init(r6239160);
        mpfr_init(r6239161);
        mpfr_init_set_str(r6239162, "8.344757970106002e-09", 10, MPFR_RNDN);
        mpfr_init(r6239163);
        mpfr_init_set_str(r6239164, "2", 10, MPFR_RNDN);
        mpfr_init(r6239165);
        mpfr_init(r6239166);
        mpfr_init(r6239167);
        mpfr_init(r6239168);
        mpfr_init(r6239169);
        mpfr_init(r6239170);
        mpfr_init(r6239171);
        mpfr_init(r6239172);
        mpfr_init(r6239173);
        mpfr_init(r6239174);
        mpfr_init(r6239175);
        mpfr_init(r6239176);
}

double f_fm(double x, double eps) {
        mpfr_set_d(r6239150, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6239152, mpfr_cmp(r6239150, r6239151) <= 0, MPFR_RNDN);
        mpfr_set_d(r6239153, x, MPFR_RNDN);
        mpfr_sin(r6239154, r6239153, MPFR_RNDN);
        mpfr_cos(r6239155, r6239150, MPFR_RNDN);
        mpfr_mul(r6239156, r6239154, r6239155, MPFR_RNDN);
        mpfr_cos(r6239157, r6239153, MPFR_RNDN);
        mpfr_sin(r6239158, r6239150, MPFR_RNDN);
        mpfr_mul(r6239159, r6239157, r6239158, MPFR_RNDN);
        mpfr_sub(r6239160, r6239159, r6239154, MPFR_RNDN);
        mpfr_add(r6239161, r6239156, r6239160, MPFR_RNDN);
        ;
        mpfr_set_si(r6239163, mpfr_cmp(r6239150, r6239162) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r6239165, r6239150, r6239164, MPFR_RNDN);
        mpfr_sin(r6239166, r6239165, MPFR_RNDN);
        mpfr_add(r6239167, r6239153, r6239153, MPFR_RNDN);
        mpfr_add(r6239168, r6239150, r6239167, MPFR_RNDN);
        mpfr_div(r6239169, r6239168, r6239164, MPFR_RNDN);
        mpfr_cos(r6239170, r6239169, MPFR_RNDN);
        mpfr_mul(r6239171, r6239166, r6239170, MPFR_RNDN);
        mpfr_mul(r6239172, r6239164, r6239171, MPFR_RNDN);
        mpfr_add(r6239173, r6239156, r6239159, MPFR_RNDN);
        mpfr_sub(r6239174, r6239173, r6239154, MPFR_RNDN);
        if (mpfr_get_si(r6239163, MPFR_RNDN)) { mpfr_set(r6239175, r6239172, MPFR_RNDN); } else { mpfr_set(r6239175, r6239174, MPFR_RNDN); };
        if (mpfr_get_si(r6239152, MPFR_RNDN)) { mpfr_set(r6239176, r6239161, MPFR_RNDN); } else { mpfr_set(r6239176, r6239175, MPFR_RNDN); };
        return mpfr_get_d(r6239176, MPFR_RNDN);
}

static mpfr_t r6239177, r6239178, r6239179, r6239180, r6239181, r6239182, r6239183, r6239184, r6239185, r6239186, r6239187, r6239188, r6239189, r6239190, r6239191, r6239192, r6239193, r6239194, r6239195, r6239196, r6239197, r6239198, r6239199, r6239200, r6239201, r6239202, r6239203;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(2448);
        mpfr_init(r6239177);
        mpfr_init_set_str(r6239178, "-1.4403236540735996e-08", 10, MPFR_RNDN);
        mpfr_init(r6239179);
        mpfr_init(r6239180);
        mpfr_init(r6239181);
        mpfr_init(r6239182);
        mpfr_init(r6239183);
        mpfr_init(r6239184);
        mpfr_init(r6239185);
        mpfr_init(r6239186);
        mpfr_init(r6239187);
        mpfr_init(r6239188);
        mpfr_init_set_str(r6239189, "8.344757970106002e-09", 10, MPFR_RNDN);
        mpfr_init(r6239190);
        mpfr_init_set_str(r6239191, "2", 10, MPFR_RNDN);
        mpfr_init(r6239192);
        mpfr_init(r6239193);
        mpfr_init(r6239194);
        mpfr_init(r6239195);
        mpfr_init(r6239196);
        mpfr_init(r6239197);
        mpfr_init(r6239198);
        mpfr_init(r6239199);
        mpfr_init(r6239200);
        mpfr_init(r6239201);
        mpfr_init(r6239202);
        mpfr_init(r6239203);
}

double f_dm(double x, double eps) {
        mpfr_set_d(r6239177, eps, MPFR_RNDN);
        ;
        mpfr_set_si(r6239179, mpfr_cmp(r6239177, r6239178) <= 0, MPFR_RNDN);
        mpfr_set_d(r6239180, x, MPFR_RNDN);
        mpfr_sin(r6239181, r6239180, MPFR_RNDN);
        mpfr_cos(r6239182, r6239177, MPFR_RNDN);
        mpfr_mul(r6239183, r6239181, r6239182, MPFR_RNDN);
        mpfr_cos(r6239184, r6239180, MPFR_RNDN);
        mpfr_sin(r6239185, r6239177, MPFR_RNDN);
        mpfr_mul(r6239186, r6239184, r6239185, MPFR_RNDN);
        mpfr_sub(r6239187, r6239186, r6239181, MPFR_RNDN);
        mpfr_add(r6239188, r6239183, r6239187, MPFR_RNDN);
        ;
        mpfr_set_si(r6239190, mpfr_cmp(r6239177, r6239189) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r6239192, r6239177, r6239191, MPFR_RNDN);
        mpfr_sin(r6239193, r6239192, MPFR_RNDN);
        mpfr_add(r6239194, r6239180, r6239180, MPFR_RNDN);
        mpfr_add(r6239195, r6239177, r6239194, MPFR_RNDN);
        mpfr_div(r6239196, r6239195, r6239191, MPFR_RNDN);
        mpfr_cos(r6239197, r6239196, MPFR_RNDN);
        mpfr_mul(r6239198, r6239193, r6239197, MPFR_RNDN);
        mpfr_mul(r6239199, r6239191, r6239198, MPFR_RNDN);
        mpfr_add(r6239200, r6239183, r6239186, MPFR_RNDN);
        mpfr_sub(r6239201, r6239200, r6239181, MPFR_RNDN);
        if (mpfr_get_si(r6239190, MPFR_RNDN)) { mpfr_set(r6239202, r6239199, MPFR_RNDN); } else { mpfr_set(r6239202, r6239201, MPFR_RNDN); };
        if (mpfr_get_si(r6239179, MPFR_RNDN)) { mpfr_set(r6239203, r6239188, MPFR_RNDN); } else { mpfr_set(r6239203, r6239202, MPFR_RNDN); };
        return mpfr_get_d(r6239203, MPFR_RNDN);
}

