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

char *name = "Octave 3.8, jcobi/2";

double f_if(float alpha, float beta, float i) {
        float r56507352 = alpha;
        float r56507353 = beta;
        float r56507354 = r56507352 + r56507353;
        float r56507355 = r56507353 - r56507352;
        float r56507356 = r56507354 * r56507355;
        float r56507357 = 2;
        float r56507358 = i;
        float r56507359 = r56507357 * r56507358;
        float r56507360 = r56507354 + r56507359;
        float r56507361 = r56507356 / r56507360;
        float r56507362 = 2.0;
        float r56507363 = r56507360 + r56507362;
        float r56507364 = r56507361 / r56507363;
        float r56507365 = 1.0;
        float r56507366 = r56507364 + r56507365;
        float r56507367 = r56507366 / r56507362;
        return r56507367;
}

double f_id(double alpha, double beta, double i) {
        double r56507368 = alpha;
        double r56507369 = beta;
        double r56507370 = r56507368 + r56507369;
        double r56507371 = r56507369 - r56507368;
        double r56507372 = r56507370 * r56507371;
        double r56507373 = 2;
        double r56507374 = i;
        double r56507375 = r56507373 * r56507374;
        double r56507376 = r56507370 + r56507375;
        double r56507377 = r56507372 / r56507376;
        double r56507378 = 2.0;
        double r56507379 = r56507376 + r56507378;
        double r56507380 = r56507377 / r56507379;
        double r56507381 = 1.0;
        double r56507382 = r56507380 + r56507381;
        double r56507383 = r56507382 / r56507378;
        return r56507383;
}


double f_of(float alpha, float beta, float i) {
        float r56507384 = beta;
        float r56507385 = alpha;
        float r56507386 = r56507384 + r56507385;
        float r56507387 = 2.0;
        float r56507388 = i;
        float r56507389 = r56507387 + r56507388;
        float r56507390 = r56507389 + r56507385;
        float r56507391 = r56507388 + r56507384;
        float r56507392 = r56507390 + r56507391;
        float r56507393 = sqrt(r56507392);
        float r56507394 = r56507386 / r56507393;
        float r56507395 = r56507384 - r56507385;
        float r56507396 = r56507385 + r56507384;
        float r56507397 = 2;
        float r56507398 = r56507397 * r56507388;
        float r56507399 = r56507396 + r56507398;
        float r56507400 = r56507395 / r56507399;
        float r56507401 = r56507399 + r56507387;
        float r56507402 = sqrt(r56507401);
        float r56507403 = r56507400 / r56507402;
        float r56507404 = r56507394 * r56507403;
        float r56507405 = 1.0;
        float r56507406 = r56507404 + r56507405;
        float r56507407 = r56507406 / r56507387;
        float r56507408 = 2.2171153801764376e-13;
        bool r56507409 = r56507407 <= r56507408;
        float r56507410 = 8.0;
        float r56507411 = r56507410 / r56507385;
        float r56507412 = r56507385 * r56507385;
        float r56507413 = r56507411 / r56507412;
        float r56507414 = 4.0;
        float r56507415 = r56507414 / r56507412;
        float r56507416 = r56507387 / r56507385;
        float r56507417 = r56507415 - r56507416;
        float r56507418 = r56507413 - r56507417;
        float r56507419 = r56507418 / r56507387;
        float r56507420 = r56507399 / r56507395;
        float r56507421 = r56507396 / r56507420;
        float r56507422 = r56507421 / r56507401;
        float r56507423 = r56507422 + r56507405;
        float r56507424 = exp(r56507423);
        float r56507425 = log(r56507424);
        float r56507426 = r56507425 / r56507387;
        float r56507427 = r56507409 ? r56507419 : r56507426;
        return r56507427;
}

double f_od(double alpha, double beta, double i) {
        double r56507428 = beta;
        double r56507429 = alpha;
        double r56507430 = r56507428 + r56507429;
        double r56507431 = 2.0;
        double r56507432 = i;
        double r56507433 = r56507431 + r56507432;
        double r56507434 = r56507433 + r56507429;
        double r56507435 = r56507432 + r56507428;
        double r56507436 = r56507434 + r56507435;
        double r56507437 = sqrt(r56507436);
        double r56507438 = r56507430 / r56507437;
        double r56507439 = r56507428 - r56507429;
        double r56507440 = r56507429 + r56507428;
        double r56507441 = 2;
        double r56507442 = r56507441 * r56507432;
        double r56507443 = r56507440 + r56507442;
        double r56507444 = r56507439 / r56507443;
        double r56507445 = r56507443 + r56507431;
        double r56507446 = sqrt(r56507445);
        double r56507447 = r56507444 / r56507446;
        double r56507448 = r56507438 * r56507447;
        double r56507449 = 1.0;
        double r56507450 = r56507448 + r56507449;
        double r56507451 = r56507450 / r56507431;
        double r56507452 = 2.2171153801764376e-13;
        bool r56507453 = r56507451 <= r56507452;
        double r56507454 = 8.0;
        double r56507455 = r56507454 / r56507429;
        double r56507456 = r56507429 * r56507429;
        double r56507457 = r56507455 / r56507456;
        double r56507458 = 4.0;
        double r56507459 = r56507458 / r56507456;
        double r56507460 = r56507431 / r56507429;
        double r56507461 = r56507459 - r56507460;
        double r56507462 = r56507457 - r56507461;
        double r56507463 = r56507462 / r56507431;
        double r56507464 = r56507443 / r56507439;
        double r56507465 = r56507440 / r56507464;
        double r56507466 = r56507465 / r56507445;
        double r56507467 = r56507466 + r56507449;
        double r56507468 = exp(r56507467);
        double r56507469 = log(r56507468);
        double r56507470 = r56507469 / r56507431;
        double r56507471 = r56507453 ? r56507463 : r56507470;
        return r56507471;
}

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 r56507472, r56507473, r56507474, r56507475, r56507476, r56507477, r56507478, r56507479, r56507480, r56507481, r56507482, r56507483, r56507484, r56507485, r56507486, r56507487;

void setup_mpfr_f_im() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507472);
        mpfr_init(r56507473);
        mpfr_init(r56507474);
        mpfr_init(r56507475);
        mpfr_init(r56507476);
        mpfr_init_set_str(r56507477, "2", 10, MPFR_RNDN);
        mpfr_init(r56507478);
        mpfr_init(r56507479);
        mpfr_init(r56507480);
        mpfr_init(r56507481);
        mpfr_init_set_str(r56507482, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507483);
        mpfr_init(r56507484);
        mpfr_init_set_str(r56507485, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507486);
        mpfr_init(r56507487);
}

double f_im(double alpha, double beta, double i) {
        mpfr_set_d(r56507472, alpha, MPFR_RNDN);
        mpfr_set_d(r56507473, beta, MPFR_RNDN);
        mpfr_add(r56507474, r56507472, r56507473, MPFR_RNDN);
        mpfr_sub(r56507475, r56507473, r56507472, MPFR_RNDN);
        mpfr_mul(r56507476, r56507474, r56507475, MPFR_RNDN);
        ;
        mpfr_set_d(r56507478, i, MPFR_RNDN);
        mpfr_mul(r56507479, r56507477, r56507478, MPFR_RNDN);
        mpfr_add(r56507480, r56507474, r56507479, MPFR_RNDN);
        mpfr_div(r56507481, r56507476, r56507480, MPFR_RNDN);
        ;
        mpfr_add(r56507483, r56507480, r56507482, MPFR_RNDN);
        mpfr_div(r56507484, r56507481, r56507483, MPFR_RNDN);
        ;
        mpfr_add(r56507486, r56507484, r56507485, MPFR_RNDN);
        mpfr_div(r56507487, r56507486, r56507482, MPFR_RNDN);
        return mpfr_get_d(r56507487, MPFR_RNDN);
}

static mpfr_t r56507488, r56507489, r56507490, r56507491, r56507492, r56507493, r56507494, r56507495, r56507496, r56507497, r56507498, r56507499, r56507500, r56507501, r56507502, r56507503, r56507504, r56507505, r56507506, r56507507, r56507508, r56507509, r56507510, r56507511, r56507512, r56507513, r56507514, r56507515, r56507516, r56507517, r56507518, r56507519, r56507520, r56507521, r56507522, r56507523, r56507524, r56507525, r56507526, r56507527, r56507528, r56507529, r56507530, r56507531;

void setup_mpfr_f_fm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507488);
        mpfr_init(r56507489);
        mpfr_init(r56507490);
        mpfr_init_set_str(r56507491, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507492);
        mpfr_init(r56507493);
        mpfr_init(r56507494);
        mpfr_init(r56507495);
        mpfr_init(r56507496);
        mpfr_init(r56507497);
        mpfr_init(r56507498);
        mpfr_init(r56507499);
        mpfr_init(r56507500);
        mpfr_init_set_str(r56507501, "2", 10, MPFR_RNDN);
        mpfr_init(r56507502);
        mpfr_init(r56507503);
        mpfr_init(r56507504);
        mpfr_init(r56507505);
        mpfr_init(r56507506);
        mpfr_init(r56507507);
        mpfr_init(r56507508);
        mpfr_init_set_str(r56507509, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507510);
        mpfr_init(r56507511);
        mpfr_init_set_str(r56507512, "2.2171153801764376e-13", 10, MPFR_RNDN);
        mpfr_init(r56507513);
        mpfr_init_set_str(r56507514, "8.0", 10, MPFR_RNDN);
        mpfr_init(r56507515);
        mpfr_init(r56507516);
        mpfr_init(r56507517);
        mpfr_init_set_str(r56507518, "4.0", 10, MPFR_RNDN);
        mpfr_init(r56507519);
        mpfr_init(r56507520);
        mpfr_init(r56507521);
        mpfr_init(r56507522);
        mpfr_init(r56507523);
        mpfr_init(r56507524);
        mpfr_init(r56507525);
        mpfr_init(r56507526);
        mpfr_init(r56507527);
        mpfr_init(r56507528);
        mpfr_init(r56507529);
        mpfr_init(r56507530);
        mpfr_init(r56507531);
}

double f_fm(double alpha, double beta, double i) {
        mpfr_set_d(r56507488, beta, MPFR_RNDN);
        mpfr_set_d(r56507489, alpha, MPFR_RNDN);
        mpfr_add(r56507490, r56507488, r56507489, MPFR_RNDN);
        ;
        mpfr_set_d(r56507492, i, MPFR_RNDN);
        mpfr_add(r56507493, r56507491, r56507492, MPFR_RNDN);
        mpfr_add(r56507494, r56507493, r56507489, MPFR_RNDN);
        mpfr_add(r56507495, r56507492, r56507488, MPFR_RNDN);
        mpfr_add(r56507496, r56507494, r56507495, MPFR_RNDN);
        mpfr_sqrt(r56507497, r56507496, MPFR_RNDN);
        mpfr_div(r56507498, r56507490, r56507497, MPFR_RNDN);
        mpfr_sub(r56507499, r56507488, r56507489, MPFR_RNDN);
        mpfr_add(r56507500, r56507489, r56507488, MPFR_RNDN);
        ;
        mpfr_mul(r56507502, r56507501, r56507492, MPFR_RNDN);
        mpfr_add(r56507503, r56507500, r56507502, MPFR_RNDN);
        mpfr_div(r56507504, r56507499, r56507503, MPFR_RNDN);
        mpfr_add(r56507505, r56507503, r56507491, MPFR_RNDN);
        mpfr_sqrt(r56507506, r56507505, MPFR_RNDN);
        mpfr_div(r56507507, r56507504, r56507506, MPFR_RNDN);
        mpfr_mul(r56507508, r56507498, r56507507, MPFR_RNDN);
        ;
        mpfr_add(r56507510, r56507508, r56507509, MPFR_RNDN);
        mpfr_div(r56507511, r56507510, r56507491, MPFR_RNDN);
        ;
        mpfr_set_si(r56507513, mpfr_cmp(r56507511, r56507512) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r56507515, r56507514, r56507489, MPFR_RNDN);
        mpfr_mul(r56507516, r56507489, r56507489, MPFR_RNDN);
        mpfr_div(r56507517, r56507515, r56507516, MPFR_RNDN);
        ;
        mpfr_div(r56507519, r56507518, r56507516, MPFR_RNDN);
        mpfr_div(r56507520, r56507491, r56507489, MPFR_RNDN);
        mpfr_sub(r56507521, r56507519, r56507520, MPFR_RNDN);
        mpfr_sub(r56507522, r56507517, r56507521, MPFR_RNDN);
        mpfr_div(r56507523, r56507522, r56507491, MPFR_RNDN);
        mpfr_div(r56507524, r56507503, r56507499, MPFR_RNDN);
        mpfr_div(r56507525, r56507500, r56507524, MPFR_RNDN);
        mpfr_div(r56507526, r56507525, r56507505, MPFR_RNDN);
        mpfr_add(r56507527, r56507526, r56507509, MPFR_RNDN);
        mpfr_exp(r56507528, r56507527, MPFR_RNDN);
        mpfr_log(r56507529, r56507528, MPFR_RNDN);
        mpfr_div(r56507530, r56507529, r56507491, MPFR_RNDN);
        if (mpfr_get_si(r56507513, MPFR_RNDN)) { mpfr_set(r56507531, r56507523, MPFR_RNDN); } else { mpfr_set(r56507531, r56507530, MPFR_RNDN); };
        return mpfr_get_d(r56507531, MPFR_RNDN);
}

static mpfr_t r56507532, r56507533, r56507534, r56507535, r56507536, r56507537, r56507538, r56507539, r56507540, r56507541, r56507542, r56507543, r56507544, r56507545, r56507546, r56507547, r56507548, r56507549, r56507550, r56507551, r56507552, r56507553, r56507554, r56507555, r56507556, r56507557, r56507558, r56507559, r56507560, r56507561, r56507562, r56507563, r56507564, r56507565, r56507566, r56507567, r56507568, r56507569, r56507570, r56507571, r56507572, r56507573, r56507574, r56507575;

void setup_mpfr_f_dm() {
        mpfr_set_default_prec(1424);
        mpfr_init(r56507532);
        mpfr_init(r56507533);
        mpfr_init(r56507534);
        mpfr_init_set_str(r56507535, "2.0", 10, MPFR_RNDN);
        mpfr_init(r56507536);
        mpfr_init(r56507537);
        mpfr_init(r56507538);
        mpfr_init(r56507539);
        mpfr_init(r56507540);
        mpfr_init(r56507541);
        mpfr_init(r56507542);
        mpfr_init(r56507543);
        mpfr_init(r56507544);
        mpfr_init_set_str(r56507545, "2", 10, MPFR_RNDN);
        mpfr_init(r56507546);
        mpfr_init(r56507547);
        mpfr_init(r56507548);
        mpfr_init(r56507549);
        mpfr_init(r56507550);
        mpfr_init(r56507551);
        mpfr_init(r56507552);
        mpfr_init_set_str(r56507553, "1.0", 10, MPFR_RNDN);
        mpfr_init(r56507554);
        mpfr_init(r56507555);
        mpfr_init_set_str(r56507556, "2.2171153801764376e-13", 10, MPFR_RNDN);
        mpfr_init(r56507557);
        mpfr_init_set_str(r56507558, "8.0", 10, MPFR_RNDN);
        mpfr_init(r56507559);
        mpfr_init(r56507560);
        mpfr_init(r56507561);
        mpfr_init_set_str(r56507562, "4.0", 10, MPFR_RNDN);
        mpfr_init(r56507563);
        mpfr_init(r56507564);
        mpfr_init(r56507565);
        mpfr_init(r56507566);
        mpfr_init(r56507567);
        mpfr_init(r56507568);
        mpfr_init(r56507569);
        mpfr_init(r56507570);
        mpfr_init(r56507571);
        mpfr_init(r56507572);
        mpfr_init(r56507573);
        mpfr_init(r56507574);
        mpfr_init(r56507575);
}

double f_dm(double alpha, double beta, double i) {
        mpfr_set_d(r56507532, beta, MPFR_RNDN);
        mpfr_set_d(r56507533, alpha, MPFR_RNDN);
        mpfr_add(r56507534, r56507532, r56507533, MPFR_RNDN);
        ;
        mpfr_set_d(r56507536, i, MPFR_RNDN);
        mpfr_add(r56507537, r56507535, r56507536, MPFR_RNDN);
        mpfr_add(r56507538, r56507537, r56507533, MPFR_RNDN);
        mpfr_add(r56507539, r56507536, r56507532, MPFR_RNDN);
        mpfr_add(r56507540, r56507538, r56507539, MPFR_RNDN);
        mpfr_sqrt(r56507541, r56507540, MPFR_RNDN);
        mpfr_div(r56507542, r56507534, r56507541, MPFR_RNDN);
        mpfr_sub(r56507543, r56507532, r56507533, MPFR_RNDN);
        mpfr_add(r56507544, r56507533, r56507532, MPFR_RNDN);
        ;
        mpfr_mul(r56507546, r56507545, r56507536, MPFR_RNDN);
        mpfr_add(r56507547, r56507544, r56507546, MPFR_RNDN);
        mpfr_div(r56507548, r56507543, r56507547, MPFR_RNDN);
        mpfr_add(r56507549, r56507547, r56507535, MPFR_RNDN);
        mpfr_sqrt(r56507550, r56507549, MPFR_RNDN);
        mpfr_div(r56507551, r56507548, r56507550, MPFR_RNDN);
        mpfr_mul(r56507552, r56507542, r56507551, MPFR_RNDN);
        ;
        mpfr_add(r56507554, r56507552, r56507553, MPFR_RNDN);
        mpfr_div(r56507555, r56507554, r56507535, MPFR_RNDN);
        ;
        mpfr_set_si(r56507557, mpfr_cmp(r56507555, r56507556) <= 0, MPFR_RNDN);
        ;
        mpfr_div(r56507559, r56507558, r56507533, MPFR_RNDN);
        mpfr_mul(r56507560, r56507533, r56507533, MPFR_RNDN);
        mpfr_div(r56507561, r56507559, r56507560, MPFR_RNDN);
        ;
        mpfr_div(r56507563, r56507562, r56507560, MPFR_RNDN);
        mpfr_div(r56507564, r56507535, r56507533, MPFR_RNDN);
        mpfr_sub(r56507565, r56507563, r56507564, MPFR_RNDN);
        mpfr_sub(r56507566, r56507561, r56507565, MPFR_RNDN);
        mpfr_div(r56507567, r56507566, r56507535, MPFR_RNDN);
        mpfr_div(r56507568, r56507547, r56507543, MPFR_RNDN);
        mpfr_div(r56507569, r56507544, r56507568, MPFR_RNDN);
        mpfr_div(r56507570, r56507569, r56507549, MPFR_RNDN);
        mpfr_add(r56507571, r56507570, r56507553, MPFR_RNDN);
        mpfr_exp(r56507572, r56507571, MPFR_RNDN);
        mpfr_log(r56507573, r56507572, MPFR_RNDN);
        mpfr_div(r56507574, r56507573, r56507535, MPFR_RNDN);
        if (mpfr_get_si(r56507557, MPFR_RNDN)) { mpfr_set(r56507575, r56507567, MPFR_RNDN); } else { mpfr_set(r56507575, r56507574, MPFR_RNDN); };
        return mpfr_get_d(r56507575, MPFR_RNDN);
}

