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

char *name = "(- b (+ (pow (cotan b) a) (asin b)))";

double f_if(float a, float b) {
        float r15143 = b;
        float r15144 = 1.0 / tan(r15143);
        float r15145 = a;
        float r15146 = pow(r15144, r15145);
        float r15147 = asin(r15143);
        float r15148 = r15146 + r15147;
        float r15149 = r15143 - r15148;
        return r15149;
}

double f_id(double a, double b) {
        double r15150 = b;
        double r15151 = 1.0 / tan(r15150);
        double r15152 = a;
        double r15153 = pow(r15151, r15152);
        double r15154 = asin(r15150);
        double r15155 = r15153 + r15154;
        double r15156 = r15150 - r15155;
        return r15156;
}


double f_of(float a, float b) {
        float r15157 = b;
        float r15158 = -2.7011359951894642e-20f;
        bool r15159 = r15157 <= r15158;
        float r15160 = 1.0 / tan(r15157);
        float r15161 = a;
        float r15162 = pow(r15160, r15161);
        float r15163 = asin(r15157);
        float r15164 = r15162 + r15163;
        float r15165 = r15157 - r15164;
        float r15166 = 0.3333333432674408f;
        float r15167 = pow(r15165, r15166);
        float r15168 = r15167 * (r15167 * r15167);
        float r15169 = 3.6672669891553886e-23f;
        bool r15170 = r15157 <= r15169;
        float r15171 = r15157 * r15157;
        float r15172 = r15164 * r15164;
        float r15173 = r15171 - r15172;
        float r15174 = cbrt(r15173);
        float r15175 = r15174 * (r15174 * r15174);
        float r15176 = r15163 + r15157;
        float r15177 = r15162 + r15176;
        float r15178 = r15175 / r15177;
        float r15179 = r15157 * (r15157 * r15157);
        float r15180 = r15163 + r15162;
        float r15181 = r15180 * (r15180 * r15180);
        float r15182 = r15179 - r15181;
        float r15183 = cbrt(r15182);
        float r15184 = r15180 * r15180;
        float r15185 = r15157 + r15163;
        float r15186 = r15162 + r15185;
        float r15187 = r15157 * r15186;
        float r15188 = r15184 + r15187;
        float r15189 = cbrt(r15188);
        float r15190 = r15183 / r15189;
        float r15191 = r15190 * (r15190 * r15190);
        float r15192 = r15170 ? r15178 : r15191;
        float r15193 = r15159 ? r15168 : r15192;
        return r15193;
}

double f_od(double a, double b) {
        double r15194 = b;
        double r15195 = -2.7011359951894642e-20;
        bool r15196 = r15194 <= r15195;
        double r15197 = 1.0 / tan(r15194);
        double r15198 = a;
        double r15199 = pow(r15197, r15198);
        double r15200 = asin(r15194);
        double r15201 = r15199 + r15200;
        double r15202 = r15194 - r15201;
        double r15203 = 0.3333333432674408;
        double r15204 = pow(r15202, r15203);
        double r15205 = r15204 * (r15204 * r15204);
        double r15206 = 3.6672669891553886e-23;
        bool r15207 = r15194 <= r15206;
        double r15208 = r15194 * r15194;
        double r15209 = r15201 * r15201;
        double r15210 = r15208 - r15209;
        double r15211 = cbrt(r15210);
        double r15212 = r15211 * (r15211 * r15211);
        double r15213 = r15200 + r15194;
        double r15214 = r15199 + r15213;
        double r15215 = r15212 / r15214;
        double r15216 = r15194 * (r15194 * r15194);
        double r15217 = r15200 + r15199;
        double r15218 = r15217 * (r15217 * r15217);
        double r15219 = r15216 - r15218;
        double r15220 = cbrt(r15219);
        double r15221 = r15217 * r15217;
        double r15222 = r15194 + r15200;
        double r15223 = r15199 + r15222;
        double r15224 = r15194 * r15223;
        double r15225 = r15221 + r15224;
        double r15226 = cbrt(r15225);
        double r15227 = r15220 / r15226;
        double r15228 = r15227 * (r15227 * r15227);
        double r15229 = r15207 ? r15215 : r15228;
        double r15230 = r15196 ? r15205 : r15229;
        return r15230;
}

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 r15231, r15232, r15233, r15234, r15235, r15236, r15237;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(144);
        mpfr_init(r15231);
        mpfr_init(r15232);
        mpfr_init(r15233);
        mpfr_init(r15234);
        mpfr_init(r15235);
        mpfr_init(r15236);
        mpfr_init(r15237);
}

double f_im(double a, double b) {
        mpfr_set_d(r15231, b, MPFR_RNDN);
        mpfr_cot(r15232, r15231, MPFR_RNDN);
        mpfr_set_d(r15233, a, MPFR_RNDN);
        mpfr_pow(r15234, r15232, r15233, MPFR_RNDN);
        mpfr_asin(r15235, r15231, MPFR_RNDN);
        mpfr_add(r15236, r15234, r15235, MPFR_RNDN);
        mpfr_sub(r15237, r15231, r15236, MPFR_RNDN);
        return mpfr_get_d(r15237, MPFR_RNDN);
}

static mpfr_t r15238, r15239, r15240, r15241, r15242, r15243, r15244, r15245, r15246, r15247, r15248, r15249, r15250, r15251, r15252, r15253, r15254, r15255, r15256, r15257, r15258, r15259, r15260, r15261, r15262, r15263, r15264, r15265, r15266, r15267, r15268, r15269, r15270, r15271, r15272, r15273, r15274;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15238);
        mpfr_init_set_str(r15239, "-2.701136f-20", 10, MPFR_RNDN);
        mpfr_init(r15240);
        mpfr_init(r15241);
        mpfr_init(r15242);
        mpfr_init(r15243);
        mpfr_init(r15244);
        mpfr_init(r15245);
        mpfr_init(r15246);
        mpfr_init_set_str(r15247, "1/3", 10, MPFR_RNDN);
        mpfr_init(r15248);
        mpfr_init(r15249);
        mpfr_init_set_str(r15250, "3.667267f-23", 10, MPFR_RNDN);
        mpfr_init(r15251);
        mpfr_init(r15252);
        mpfr_init(r15253);
        mpfr_init(r15254);
        mpfr_init(r15255);
        mpfr_init(r15256);
        mpfr_init(r15257);
        mpfr_init(r15258);
        mpfr_init(r15259);
        mpfr_init(r15260);
        mpfr_init(r15261);
        mpfr_init(r15262);
        mpfr_init(r15263);
        mpfr_init(r15264);
        mpfr_init(r15265);
        mpfr_init(r15266);
        mpfr_init(r15267);
        mpfr_init(r15268);
        mpfr_init(r15269);
        mpfr_init(r15270);
        mpfr_init(r15271);
        mpfr_init(r15272);
        mpfr_init(r15273);
        mpfr_init(r15274);
}

double f_fm(double a, double b) {
        mpfr_set_d(r15238, b, MPFR_RNDN);
        ;
        mpfr_set_si(r15240, mpfr_cmp(r15238, r15239) <= 0, MPFR_RNDN);
        mpfr_cot(r15241, r15238, MPFR_RNDN);
        mpfr_set_d(r15242, a, MPFR_RNDN);
        mpfr_pow(r15243, r15241, r15242, MPFR_RNDN);
        mpfr_asin(r15244, r15238, MPFR_RNDN);
        mpfr_add(r15245, r15243, r15244, MPFR_RNDN);
        mpfr_sub(r15246, r15238, r15245, MPFR_RNDN);
        ;
        mpfr_pow(r15248, r15246, r15247, MPFR_RNDN);
        mpfr_mul(r15249, r15248, r15248, MPFR_RNDN); mpfr_mul(r15249, r15249, r15248, MPFR_RNDN);
        ;
        mpfr_set_si(r15251, mpfr_cmp(r15238, r15250) <= 0, MPFR_RNDN);
        mpfr_sqr(r15252, r15238, MPFR_RNDN);
        mpfr_sqr(r15253, r15245, MPFR_RNDN);
        mpfr_sub(r15254, r15252, r15253, MPFR_RNDN);
        mpfr_cbrt(r15255, r15254, MPFR_RNDN);
        mpfr_mul(r15256, r15255, r15255, MPFR_RNDN); mpfr_mul(r15256, r15256, r15255, MPFR_RNDN);
        mpfr_add(r15257, r15244, r15238, MPFR_RNDN);
        mpfr_add(r15258, r15243, r15257, MPFR_RNDN);
        mpfr_div(r15259, r15256, r15258, MPFR_RNDN);
        mpfr_mul(r15260, r15238, r15238, MPFR_RNDN); mpfr_mul(r15260, r15260, r15238, MPFR_RNDN);
        mpfr_add(r15261, r15244, r15243, MPFR_RNDN);
        mpfr_mul(r15262, r15261, r15261, MPFR_RNDN); mpfr_mul(r15262, r15262, r15261, MPFR_RNDN);
        mpfr_sub(r15263, r15260, r15262, MPFR_RNDN);
        mpfr_cbrt(r15264, r15263, MPFR_RNDN);
        mpfr_sqr(r15265, r15261, MPFR_RNDN);
        mpfr_add(r15266, r15238, r15244, MPFR_RNDN);
        mpfr_add(r15267, r15243, r15266, MPFR_RNDN);
        mpfr_mul(r15268, r15238, r15267, MPFR_RNDN);
        mpfr_add(r15269, r15265, r15268, MPFR_RNDN);
        mpfr_cbrt(r15270, r15269, MPFR_RNDN);
        mpfr_div(r15271, r15264, r15270, MPFR_RNDN);
        mpfr_mul(r15272, r15271, r15271, MPFR_RNDN); mpfr_mul(r15272, r15272, r15271, MPFR_RNDN);
        if (mpfr_get_si(r15251, MPFR_RNDN)) { mpfr_set(r15273, r15259, MPFR_RNDN); } else { mpfr_set(r15273, r15272, MPFR_RNDN); };
        if (mpfr_get_si(r15240, MPFR_RNDN)) { mpfr_set(r15274, r15249, MPFR_RNDN); } else { mpfr_set(r15274, r15273, MPFR_RNDN); };
        return mpfr_get_d(r15274, MPFR_RNDN);
}

static mpfr_t r15275, r15276, r15277, r15278, r15279, r15280, r15281, r15282, r15283, r15284, r15285, r15286, r15287, r15288, r15289, r15290, r15291, r15292, r15293, r15294, r15295, r15296, r15297, r15298, r15299, r15300, r15301, r15302, r15303, r15304, r15305, r15306, r15307, r15308, r15309, r15310, r15311;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(144);
        mpfr_init(r15275);
        mpfr_init_set_str(r15276, "-2.701136f-20", 10, MPFR_RNDN);
        mpfr_init(r15277);
        mpfr_init(r15278);
        mpfr_init(r15279);
        mpfr_init(r15280);
        mpfr_init(r15281);
        mpfr_init(r15282);
        mpfr_init(r15283);
        mpfr_init_set_str(r15284, "1/3", 10, MPFR_RNDN);
        mpfr_init(r15285);
        mpfr_init(r15286);
        mpfr_init_set_str(r15287, "3.667267f-23", 10, MPFR_RNDN);
        mpfr_init(r15288);
        mpfr_init(r15289);
        mpfr_init(r15290);
        mpfr_init(r15291);
        mpfr_init(r15292);
        mpfr_init(r15293);
        mpfr_init(r15294);
        mpfr_init(r15295);
        mpfr_init(r15296);
        mpfr_init(r15297);
        mpfr_init(r15298);
        mpfr_init(r15299);
        mpfr_init(r15300);
        mpfr_init(r15301);
        mpfr_init(r15302);
        mpfr_init(r15303);
        mpfr_init(r15304);
        mpfr_init(r15305);
        mpfr_init(r15306);
        mpfr_init(r15307);
        mpfr_init(r15308);
        mpfr_init(r15309);
        mpfr_init(r15310);
        mpfr_init(r15311);
}

double f_dm(double a, double b) {
        mpfr_set_d(r15275, b, MPFR_RNDN);
        ;
        mpfr_set_si(r15277, mpfr_cmp(r15275, r15276) <= 0, MPFR_RNDN);
        mpfr_cot(r15278, r15275, MPFR_RNDN);
        mpfr_set_d(r15279, a, MPFR_RNDN);
        mpfr_pow(r15280, r15278, r15279, MPFR_RNDN);
        mpfr_asin(r15281, r15275, MPFR_RNDN);
        mpfr_add(r15282, r15280, r15281, MPFR_RNDN);
        mpfr_sub(r15283, r15275, r15282, MPFR_RNDN);
        ;
        mpfr_pow(r15285, r15283, r15284, MPFR_RNDN);
        mpfr_mul(r15286, r15285, r15285, MPFR_RNDN); mpfr_mul(r15286, r15286, r15285, MPFR_RNDN);
        ;
        mpfr_set_si(r15288, mpfr_cmp(r15275, r15287) <= 0, MPFR_RNDN);
        mpfr_sqr(r15289, r15275, MPFR_RNDN);
        mpfr_sqr(r15290, r15282, MPFR_RNDN);
        mpfr_sub(r15291, r15289, r15290, MPFR_RNDN);
        mpfr_cbrt(r15292, r15291, MPFR_RNDN);
        mpfr_mul(r15293, r15292, r15292, MPFR_RNDN); mpfr_mul(r15293, r15293, r15292, MPFR_RNDN);
        mpfr_add(r15294, r15281, r15275, MPFR_RNDN);
        mpfr_add(r15295, r15280, r15294, MPFR_RNDN);
        mpfr_div(r15296, r15293, r15295, MPFR_RNDN);
        mpfr_mul(r15297, r15275, r15275, MPFR_RNDN); mpfr_mul(r15297, r15297, r15275, MPFR_RNDN);
        mpfr_add(r15298, r15281, r15280, MPFR_RNDN);
        mpfr_mul(r15299, r15298, r15298, MPFR_RNDN); mpfr_mul(r15299, r15299, r15298, MPFR_RNDN);
        mpfr_sub(r15300, r15297, r15299, MPFR_RNDN);
        mpfr_cbrt(r15301, r15300, MPFR_RNDN);
        mpfr_sqr(r15302, r15298, MPFR_RNDN);
        mpfr_add(r15303, r15275, r15281, MPFR_RNDN);
        mpfr_add(r15304, r15280, r15303, MPFR_RNDN);
        mpfr_mul(r15305, r15275, r15304, MPFR_RNDN);
        mpfr_add(r15306, r15302, r15305, MPFR_RNDN);
        mpfr_cbrt(r15307, r15306, MPFR_RNDN);
        mpfr_div(r15308, r15301, r15307, MPFR_RNDN);
        mpfr_mul(r15309, r15308, r15308, MPFR_RNDN); mpfr_mul(r15309, r15309, r15308, MPFR_RNDN);
        if (mpfr_get_si(r15288, MPFR_RNDN)) { mpfr_set(r15310, r15296, MPFR_RNDN); } else { mpfr_set(r15310, r15309, MPFR_RNDN); };
        if (mpfr_get_si(r15277, MPFR_RNDN)) { mpfr_set(r15311, r15286, MPFR_RNDN); } else { mpfr_set(r15311, r15310, MPFR_RNDN); };
        return mpfr_get_d(r15311, MPFR_RNDN);
}

