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

char *name = "Falkner and Boettcher, Equation (20:1,3)";

double f_if(float v, float t) {
        float r11022 = 1;
        float r11023 = 5;
        float r11024 = v;
        float r11025 = r11024 * r11024;
        float r11026 = r11023 * r11025;
        float r11027 = r11022 - r11026;
        float r11028 = atan2(1.0, 0.0);
        float r11029 = t;
        float r11030 = r11028 * r11029;
        float r11031 = 2;
        float r11032 = 3;
        float r11033 = r11032 * r11025;
        float r11034 = r11022 - r11033;
        float r11035 = r11031 * r11034;
        float r11036 = sqrt(r11035);
        float r11037 = r11030 * r11036;
        float r11038 = r11022 - r11025;
        float r11039 = r11037 * r11038;
        float r11040 = r11027 / r11039;
        return r11040;
}

double f_id(double v, double t) {
        double r11041 = 1;
        double r11042 = 5;
        double r11043 = v;
        double r11044 = r11043 * r11043;
        double r11045 = r11042 * r11044;
        double r11046 = r11041 - r11045;
        double r11047 = atan2(1.0, 0.0);
        double r11048 = t;
        double r11049 = r11047 * r11048;
        double r11050 = 2;
        double r11051 = 3;
        double r11052 = r11051 * r11044;
        double r11053 = r11041 - r11052;
        double r11054 = r11050 * r11053;
        double r11055 = sqrt(r11054);
        double r11056 = r11049 * r11055;
        double r11057 = r11041 - r11044;
        double r11058 = r11056 * r11057;
        double r11059 = r11046 / r11058;
        return r11059;
}


double f_of(float v, float t) {
        float r11060 = 1;
        float r11061 = v;
        float r11062 = 5;
        float r11063 = r11061 * r11062;
        float r11064 = r11061 * r11063;
        float r11065 = r11060 - r11064;
        float r11066 = 3;
        float r11067 = pow(r11061, r11066);
        float r11068 = r11067 * r11067;
        float r11069 = r11060 - r11068;
        float r11070 = atan2(1.0, 0.0);
        float r11071 = r11069 * r11070;
        float r11072 = r11065 / r11071;
        float r11073 = t;
        float r11074 = 2;
        float r11075 = r11066 * r11061;
        float r11076 = r11061 * r11075;
        float r11077 = r11076 * r11076;
        float r11078 = r11060 - r11077;
        float r11079 = r11074 * r11078;
        float r11080 = sqrt(r11079);
        float r11081 = r11073 * r11080;
        float r11082 = r11072 / r11081;
        float r11083 = r11061 * r11061;
        float r11084 = r11066 * r11083;
        float r11085 = r11060 + r11084;
        float r11086 = sqrt(r11085);
        float r11087 = r11060 * r11060;
        float r11088 = r11083 * r11083;
        float r11089 = r11060 * r11083;
        float r11090 = r11088 + r11089;
        float r11091 = r11087 + r11090;
        float r11092 = r11086 * r11091;
        float r11093 = r11082 * r11092;
        return r11093;
}

double f_od(double v, double t) {
        double r11094 = 1;
        double r11095 = v;
        double r11096 = 5;
        double r11097 = r11095 * r11096;
        double r11098 = r11095 * r11097;
        double r11099 = r11094 - r11098;
        double r11100 = 3;
        double r11101 = pow(r11095, r11100);
        double r11102 = r11101 * r11101;
        double r11103 = r11094 - r11102;
        double r11104 = atan2(1.0, 0.0);
        double r11105 = r11103 * r11104;
        double r11106 = r11099 / r11105;
        double r11107 = t;
        double r11108 = 2;
        double r11109 = r11100 * r11095;
        double r11110 = r11095 * r11109;
        double r11111 = r11110 * r11110;
        double r11112 = r11094 - r11111;
        double r11113 = r11108 * r11112;
        double r11114 = sqrt(r11113);
        double r11115 = r11107 * r11114;
        double r11116 = r11106 / r11115;
        double r11117 = r11095 * r11095;
        double r11118 = r11100 * r11117;
        double r11119 = r11094 + r11118;
        double r11120 = sqrt(r11119);
        double r11121 = r11094 * r11094;
        double r11122 = r11117 * r11117;
        double r11123 = r11094 * r11117;
        double r11124 = r11122 + r11123;
        double r11125 = r11121 + r11124;
        double r11126 = r11120 * r11125;
        double r11127 = r11116 * r11126;
        return r11127;
}

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 r11128, r11129, r11130, r11131, r11132, r11133, r11134, r11135, r11136, r11137, r11138, r11139, r11140, r11141, r11142, r11143, r11144, r11145, r11146;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11128, "1", 10, MPFR_RNDN);
        mpfr_init_set_str(r11129, "5", 10, MPFR_RNDN);
        mpfr_init(r11130);
        mpfr_init(r11131);
        mpfr_init(r11132);
        mpfr_init(r11133);
        mpfr_init(r11134);
        mpfr_init(r11135);
        mpfr_init(r11136);
        mpfr_init_set_str(r11137, "2", 10, MPFR_RNDN);
        mpfr_init_set_str(r11138, "3", 10, MPFR_RNDN);
        mpfr_init(r11139);
        mpfr_init(r11140);
        mpfr_init(r11141);
        mpfr_init(r11142);
        mpfr_init(r11143);
        mpfr_init(r11144);
        mpfr_init(r11145);
        mpfr_init(r11146);
}

double f_im(double v, double t) {
        ;
        ;
        mpfr_set_d(r11130, v, MPFR_RNDN);
        mpfr_mul(r11131, r11130, r11130, MPFR_RNDN);
        mpfr_mul(r11132, r11129, r11131, MPFR_RNDN);
        mpfr_sub(r11133, r11128, r11132, MPFR_RNDN);
        mpfr_const_pi(r11134, MPFR_RNDN);
        mpfr_set_d(r11135, t, MPFR_RNDN);
        mpfr_mul(r11136, r11134, r11135, MPFR_RNDN);
        ;
        ;
        mpfr_mul(r11139, r11138, r11131, MPFR_RNDN);
        mpfr_sub(r11140, r11128, r11139, MPFR_RNDN);
        mpfr_mul(r11141, r11137, r11140, MPFR_RNDN);
        mpfr_sqrt(r11142, r11141, MPFR_RNDN);
        mpfr_mul(r11143, r11136, r11142, MPFR_RNDN);
        mpfr_sub(r11144, r11128, r11131, MPFR_RNDN);
        mpfr_mul(r11145, r11143, r11144, MPFR_RNDN);
        mpfr_div(r11146, r11133, r11145, MPFR_RNDN);
        return mpfr_get_d(r11146, MPFR_RNDN);
}

static mpfr_t r11147, r11148, r11149, r11150, r11151, r11152, r11153, r11154, r11155, r11156, r11157, r11158, r11159, r11160, r11161, r11162, r11163, r11164, r11165, r11166, r11167, r11168, r11169, r11170, r11171, r11172, r11173, r11174, r11175, r11176, r11177, r11178, r11179, r11180;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11147, "1", 10, MPFR_RNDN);
        mpfr_init(r11148);
        mpfr_init_set_str(r11149, "5", 10, MPFR_RNDN);
        mpfr_init(r11150);
        mpfr_init(r11151);
        mpfr_init(r11152);
        mpfr_init_set_str(r11153, "3", 10, MPFR_RNDN);
        mpfr_init(r11154);
        mpfr_init(r11155);
        mpfr_init(r11156);
        mpfr_init(r11157);
        mpfr_init(r11158);
        mpfr_init(r11159);
        mpfr_init(r11160);
        mpfr_init_set_str(r11161, "2", 10, MPFR_RNDN);
        mpfr_init(r11162);
        mpfr_init(r11163);
        mpfr_init(r11164);
        mpfr_init(r11165);
        mpfr_init(r11166);
        mpfr_init(r11167);
        mpfr_init(r11168);
        mpfr_init(r11169);
        mpfr_init(r11170);
        mpfr_init(r11171);
        mpfr_init(r11172);
        mpfr_init(r11173);
        mpfr_init(r11174);
        mpfr_init(r11175);
        mpfr_init(r11176);
        mpfr_init(r11177);
        mpfr_init(r11178);
        mpfr_init(r11179);
        mpfr_init(r11180);
}

double f_fm(double v, double t) {
        ;
        mpfr_set_d(r11148, v, MPFR_RNDN);
        ;
        mpfr_mul(r11150, r11148, r11149, MPFR_RNDN);
        mpfr_mul(r11151, r11148, r11150, MPFR_RNDN);
        mpfr_sub(r11152, r11147, r11151, MPFR_RNDN);
        ;
        mpfr_pow(r11154, r11148, r11153, MPFR_RNDN);
        mpfr_mul(r11155, r11154, r11154, MPFR_RNDN);
        mpfr_sub(r11156, r11147, r11155, MPFR_RNDN);
        mpfr_const_pi(r11157, MPFR_RNDN);
        mpfr_mul(r11158, r11156, r11157, MPFR_RNDN);
        mpfr_div(r11159, r11152, r11158, MPFR_RNDN);
        mpfr_set_d(r11160, t, MPFR_RNDN);
        ;
        mpfr_mul(r11162, r11153, r11148, MPFR_RNDN);
        mpfr_mul(r11163, r11148, r11162, MPFR_RNDN);
        mpfr_mul(r11164, r11163, r11163, MPFR_RNDN);
        mpfr_sub(r11165, r11147, r11164, MPFR_RNDN);
        mpfr_mul(r11166, r11161, r11165, MPFR_RNDN);
        mpfr_sqrt(r11167, r11166, MPFR_RNDN);
        mpfr_mul(r11168, r11160, r11167, MPFR_RNDN);
        mpfr_div(r11169, r11159, r11168, MPFR_RNDN);
        mpfr_mul(r11170, r11148, r11148, MPFR_RNDN);
        mpfr_mul(r11171, r11153, r11170, MPFR_RNDN);
        mpfr_add(r11172, r11147, r11171, MPFR_RNDN);
        mpfr_sqrt(r11173, r11172, MPFR_RNDN);
        mpfr_mul(r11174, r11147, r11147, MPFR_RNDN);
        mpfr_mul(r11175, r11170, r11170, MPFR_RNDN);
        mpfr_mul(r11176, r11147, r11170, MPFR_RNDN);
        mpfr_add(r11177, r11175, r11176, MPFR_RNDN);
        mpfr_add(r11178, r11174, r11177, MPFR_RNDN);
        mpfr_mul(r11179, r11173, r11178, MPFR_RNDN);
        mpfr_mul(r11180, r11169, r11179, MPFR_RNDN);
        return mpfr_get_d(r11180, MPFR_RNDN);
}

static mpfr_t r11181, r11182, r11183, r11184, r11185, r11186, r11187, r11188, r11189, r11190, r11191, r11192, r11193, r11194, r11195, r11196, r11197, r11198, r11199, r11200, r11201, r11202, r11203, r11204, r11205, r11206, r11207, r11208, r11209, r11210, r11211, r11212, r11213, r11214;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(592);
        mpfr_init_set_str(r11181, "1", 10, MPFR_RNDN);
        mpfr_init(r11182);
        mpfr_init_set_str(r11183, "5", 10, MPFR_RNDN);
        mpfr_init(r11184);
        mpfr_init(r11185);
        mpfr_init(r11186);
        mpfr_init_set_str(r11187, "3", 10, MPFR_RNDN);
        mpfr_init(r11188);
        mpfr_init(r11189);
        mpfr_init(r11190);
        mpfr_init(r11191);
        mpfr_init(r11192);
        mpfr_init(r11193);
        mpfr_init(r11194);
        mpfr_init_set_str(r11195, "2", 10, MPFR_RNDN);
        mpfr_init(r11196);
        mpfr_init(r11197);
        mpfr_init(r11198);
        mpfr_init(r11199);
        mpfr_init(r11200);
        mpfr_init(r11201);
        mpfr_init(r11202);
        mpfr_init(r11203);
        mpfr_init(r11204);
        mpfr_init(r11205);
        mpfr_init(r11206);
        mpfr_init(r11207);
        mpfr_init(r11208);
        mpfr_init(r11209);
        mpfr_init(r11210);
        mpfr_init(r11211);
        mpfr_init(r11212);
        mpfr_init(r11213);
        mpfr_init(r11214);
}

double f_dm(double v, double t) {
        ;
        mpfr_set_d(r11182, v, MPFR_RNDN);
        ;
        mpfr_mul(r11184, r11182, r11183, MPFR_RNDN);
        mpfr_mul(r11185, r11182, r11184, MPFR_RNDN);
        mpfr_sub(r11186, r11181, r11185, MPFR_RNDN);
        ;
        mpfr_pow(r11188, r11182, r11187, MPFR_RNDN);
        mpfr_mul(r11189, r11188, r11188, MPFR_RNDN);
        mpfr_sub(r11190, r11181, r11189, MPFR_RNDN);
        mpfr_const_pi(r11191, MPFR_RNDN);
        mpfr_mul(r11192, r11190, r11191, MPFR_RNDN);
        mpfr_div(r11193, r11186, r11192, MPFR_RNDN);
        mpfr_set_d(r11194, t, MPFR_RNDN);
        ;
        mpfr_mul(r11196, r11187, r11182, MPFR_RNDN);
        mpfr_mul(r11197, r11182, r11196, MPFR_RNDN);
        mpfr_mul(r11198, r11197, r11197, MPFR_RNDN);
        mpfr_sub(r11199, r11181, r11198, MPFR_RNDN);
        mpfr_mul(r11200, r11195, r11199, MPFR_RNDN);
        mpfr_sqrt(r11201, r11200, MPFR_RNDN);
        mpfr_mul(r11202, r11194, r11201, MPFR_RNDN);
        mpfr_div(r11203, r11193, r11202, MPFR_RNDN);
        mpfr_mul(r11204, r11182, r11182, MPFR_RNDN);
        mpfr_mul(r11205, r11187, r11204, MPFR_RNDN);
        mpfr_add(r11206, r11181, r11205, MPFR_RNDN);
        mpfr_sqrt(r11207, r11206, MPFR_RNDN);
        mpfr_mul(r11208, r11181, r11181, MPFR_RNDN);
        mpfr_mul(r11209, r11204, r11204, MPFR_RNDN);
        mpfr_mul(r11210, r11181, r11204, MPFR_RNDN);
        mpfr_add(r11211, r11209, r11210, MPFR_RNDN);
        mpfr_add(r11212, r11208, r11211, MPFR_RNDN);
        mpfr_mul(r11213, r11207, r11212, MPFR_RNDN);
        mpfr_mul(r11214, r11203, r11213, MPFR_RNDN);
        return mpfr_get_d(r11214, MPFR_RNDN);
}

