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

char *name = "Kahan's exp quotient";

double f_if(float x) {
        float r16281136 = x;
        float r16281137 = exp(r16281136);
        float r16281138 = 1;
        float r16281139 = r16281137 - r16281138;
        float r16281140 = r16281139 / r16281136;
        return r16281140;
}

double f_id(double x) {
        double r16281141 = x;
        double r16281142 = exp(r16281141);
        double r16281143 = 1;
        double r16281144 = r16281142 - r16281143;
        double r16281145 = r16281144 / r16281141;
        return r16281145;
}


double f_of(float x) {
        float r16281146 = 1/6;
        float r16281147 = x;
        float r16281148 = r16281146 * r16281147;
        float r16281149 = 1/2;
        float r16281150 = r16281148 + r16281149;
        float r16281151 = r16281147 * r16281147;
        float r16281152 = r16281150 * r16281151;
        float r16281153 = r16281152 + r16281147;
        float r16281154 = r16281153 / r16281147;
        float r16281155 = 1.0000000000056495;
        bool r16281156 = r16281154 <= r16281155;
        float r16281157 = exp(r16281147);
        float r16281158 = sqrt(r16281157);
        float r16281159 = 1;
        float r16281160 = r16281158 + r16281159;
        float r16281161 = r16281158 - r16281159;
        float r16281162 = r16281160 * r16281161;
        float r16281163 = r16281162 / r16281147;
        float r16281164 = r16281156 ? r16281154 : r16281163;
        return r16281164;
}

double f_od(double x) {
        double r16281165 = 1/6;
        double r16281166 = x;
        double r16281167 = r16281165 * r16281166;
        double r16281168 = 1/2;
        double r16281169 = r16281167 + r16281168;
        double r16281170 = r16281166 * r16281166;
        double r16281171 = r16281169 * r16281170;
        double r16281172 = r16281171 + r16281166;
        double r16281173 = r16281172 / r16281166;
        double r16281174 = 1.0000000000056495;
        bool r16281175 = r16281173 <= r16281174;
        double r16281176 = exp(r16281166);
        double r16281177 = sqrt(r16281176);
        double r16281178 = 1;
        double r16281179 = r16281177 + r16281178;
        double r16281180 = r16281177 - r16281178;
        double r16281181 = r16281179 * r16281180;
        double r16281182 = r16281181 / r16281166;
        double r16281183 = r16281175 ? r16281173 : r16281182;
        return r16281183;
}

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 r16281184, r16281185, r16281186, r16281187, r16281188;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r16281184);
        mpfr_init(r16281185);
        mpfr_init_set_str(r16281186, "1", 10, MPFR_RNDN);
        mpfr_init(r16281187);
        mpfr_init(r16281188);
}

double f_im(double x) {
        mpfr_set_d(r16281184, x, MPFR_RNDN);
        mpfr_exp(r16281185, r16281184, MPFR_RNDN);
        ;
        mpfr_sub(r16281187, r16281185, r16281186, MPFR_RNDN);
        mpfr_div(r16281188, r16281187, r16281184, MPFR_RNDN);
        return mpfr_get_d(r16281188, MPFR_RNDN);
}

static mpfr_t r16281189, r16281190, r16281191, r16281192, r16281193, r16281194, r16281195, r16281196, r16281197, r16281198, r16281199, r16281200, r16281201, r16281202, r16281203, r16281204, r16281205, r16281206, r16281207;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r16281189, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16281190);
        mpfr_init(r16281191);
        mpfr_init_set_str(r16281192, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16281193);
        mpfr_init(r16281194);
        mpfr_init(r16281195);
        mpfr_init(r16281196);
        mpfr_init(r16281197);
        mpfr_init_set_str(r16281198, "1.0000000000056495", 10, MPFR_RNDN);
        mpfr_init(r16281199);
        mpfr_init(r16281200);
        mpfr_init(r16281201);
        mpfr_init_set_str(r16281202, "1", 10, MPFR_RNDN);
        mpfr_init(r16281203);
        mpfr_init(r16281204);
        mpfr_init(r16281205);
        mpfr_init(r16281206);
        mpfr_init(r16281207);
}

double f_fm(double x) {
        ;
        mpfr_set_d(r16281190, x, MPFR_RNDN);
        mpfr_mul(r16281191, r16281189, r16281190, MPFR_RNDN);
        ;
        mpfr_add(r16281193, r16281191, r16281192, MPFR_RNDN);
        mpfr_mul(r16281194, r16281190, r16281190, MPFR_RNDN);
        mpfr_mul(r16281195, r16281193, r16281194, MPFR_RNDN);
        mpfr_add(r16281196, r16281195, r16281190, MPFR_RNDN);
        mpfr_div(r16281197, r16281196, r16281190, MPFR_RNDN);
        ;
        mpfr_set_si(r16281199, mpfr_cmp(r16281197, r16281198) <= 0, MPFR_RNDN);
        mpfr_exp(r16281200, r16281190, MPFR_RNDN);
        mpfr_sqrt(r16281201, r16281200, MPFR_RNDN);
        ;
        mpfr_add(r16281203, r16281201, r16281202, MPFR_RNDN);
        mpfr_sub(r16281204, r16281201, r16281202, MPFR_RNDN);
        mpfr_mul(r16281205, r16281203, r16281204, MPFR_RNDN);
        mpfr_div(r16281206, r16281205, r16281190, MPFR_RNDN);
        if (mpfr_get_si(r16281199, MPFR_RNDN)) { mpfr_set(r16281207, r16281197, MPFR_RNDN); } else { mpfr_set(r16281207, r16281206, MPFR_RNDN); };
        return mpfr_get_d(r16281207, MPFR_RNDN);
}

static mpfr_t r16281208, r16281209, r16281210, r16281211, r16281212, r16281213, r16281214, r16281215, r16281216, r16281217, r16281218, r16281219, r16281220, r16281221, r16281222, r16281223, r16281224, r16281225, r16281226;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init_set_str(r16281208, "1/6", 10, MPFR_RNDN);
        mpfr_init(r16281209);
        mpfr_init(r16281210);
        mpfr_init_set_str(r16281211, "1/2", 10, MPFR_RNDN);
        mpfr_init(r16281212);
        mpfr_init(r16281213);
        mpfr_init(r16281214);
        mpfr_init(r16281215);
        mpfr_init(r16281216);
        mpfr_init_set_str(r16281217, "1.0000000000056495", 10, MPFR_RNDN);
        mpfr_init(r16281218);
        mpfr_init(r16281219);
        mpfr_init(r16281220);
        mpfr_init_set_str(r16281221, "1", 10, MPFR_RNDN);
        mpfr_init(r16281222);
        mpfr_init(r16281223);
        mpfr_init(r16281224);
        mpfr_init(r16281225);
        mpfr_init(r16281226);
}

double f_dm(double x) {
        ;
        mpfr_set_d(r16281209, x, MPFR_RNDN);
        mpfr_mul(r16281210, r16281208, r16281209, MPFR_RNDN);
        ;
        mpfr_add(r16281212, r16281210, r16281211, MPFR_RNDN);
        mpfr_mul(r16281213, r16281209, r16281209, MPFR_RNDN);
        mpfr_mul(r16281214, r16281212, r16281213, MPFR_RNDN);
        mpfr_add(r16281215, r16281214, r16281209, MPFR_RNDN);
        mpfr_div(r16281216, r16281215, r16281209, MPFR_RNDN);
        ;
        mpfr_set_si(r16281218, mpfr_cmp(r16281216, r16281217) <= 0, MPFR_RNDN);
        mpfr_exp(r16281219, r16281209, MPFR_RNDN);
        mpfr_sqrt(r16281220, r16281219, MPFR_RNDN);
        ;
        mpfr_add(r16281222, r16281220, r16281221, MPFR_RNDN);
        mpfr_sub(r16281223, r16281220, r16281221, MPFR_RNDN);
        mpfr_mul(r16281224, r16281222, r16281223, MPFR_RNDN);
        mpfr_div(r16281225, r16281224, r16281209, MPFR_RNDN);
        if (mpfr_get_si(r16281218, MPFR_RNDN)) { mpfr_set(r16281226, r16281216, MPFR_RNDN); } else { mpfr_set(r16281226, r16281225, MPFR_RNDN); };
        return mpfr_get_d(r16281226, MPFR_RNDN);
}

