icfp12/task/bin3.c

454 lines
16 KiB
C

#include "task.h"
#include <math.h>
typedef union { gdouble d; guint64 i; } double_int;
static gboolean ovm_status;
const guint ovm_outs = 6, ovm_ins = 4;
static double_int v0, v2, v3, v15, v17, v27, v28, v29, v34, v38, v39, v43, v57, v60, v76, v78, v89, v92, v95, v104, v105, v110, v115, v120, v146, v149, v175, v178, v181, v202, v207, v223, v280, v347, v352, v353, v354, v360, v372, v382, v389, v390, v391, v392, v393, v394, v395, v396, v397, v398, v399, v400, v401, v402, v403, v404, v405, v406, v407, v408, v409, v410;
void ovm_init() {
ovm_status = FALSE;
v0.i = G_GUINT64_CONSTANT(4607182418800017408); /* 1.000000 */
v2.i = G_GUINT64_CONSTANT(4629137466983448576); /* 30.000000 */
v3.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v15.i = G_GUINT64_CONSTANT(4611686018427387904); /* 2.000000 */
v17.i = G_GUINT64_CONSTANT(4652007308841189376); /* 1000.000000 */
v27.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v28.i = G_GUINT64_CONSTANT(4710731271397965824); /* 8357000.000000 */
v29.i = G_GUINT64_CONSTANT(4658824280933400576); /* 3004.000000 */
v34.i = G_GUINT64_CONSTANT(4658822081910145024); /* 3003.000000 */
v38.i = G_GUINT64_CONSTANT(13931955824604741632); /* -6357000.000000 */
v39.i = G_GUINT64_CONSTANT(4658819882886889472); /* 3002.000000 */
v43.i = G_GUINT64_CONSTANT(4658817683863633920); /* 3001.000000 */
v57.i = G_GUINT64_CONSTANT(4709657529573965824); /* 7357000.000000 */
v60.i = G_GUINT64_CONSTANT(4723801030825869312); /* 63570000.000000 */
v76.i = G_GUINT64_CONSTANT(4454720405870426065); /* 0.000000 */
v78.i = G_GUINT64_CONSTANT(4977561924064720455); /* 5999999999999999899336704.000000 */
v89.i = G_GUINT64_CONSTANT(13890276042591294842); /* -10328.933800 */
v92.i = G_GUINT64_CONSTANT(13880520861887188785); /* -2242.090867 */
v95.i = G_GUINT64_CONSTANT(13888466358595734467); /* -7614.568894 */
v104.i = G_GUINT64_CONSTANT(4708691161932365824); /* 6457000.000000 */
v105.i = G_GUINT64_CONSTANT(4656528500654604288); /* 2004.000000 */
v110.i = G_GUINT64_CONSTANT(4656524102608093184); /* 2003.000000 */
v115.i = G_GUINT64_CONSTANT(4656519704561582080); /* 2002.000000 */
v120.i = G_GUINT64_CONSTANT(4656515306515070976); /* 2001.000000 */
v146.i = G_GUINT64_CONSTANT(4708583787749965824); /* 6357000.000000 */
v149.i = G_GUINT64_CONSTANT(4708798536114765824); /* 6557000.000000 */
v175.i = G_GUINT64_CONSTANT(13887705239773928485); /* -6922.335359 */
v178.i = G_GUINT64_CONSTANT(13885282996472059492); /* -4719.317909 */
v181.i = G_GUINT64_CONSTANT(13888686660972151467); /* -7814.932739 */
v202.i = G_GUINT64_CONSTANT(4665094321740958659); /* 7614.568894 */
v207.i = G_GUINT64_CONSTANT(13865464709352921167); /* -224.209087 */
v223.i = G_GUINT64_CONSTANT(4665380905641176256); /* 7875.215433 */
v280.i = G_GUINT64_CONSTANT(4607182418800017408); /* 1.000000 */
v347.i = G_GUINT64_CONSTANT(4677104761256804352); /* 50000.000000 */
v352.i = G_GUINT64_CONSTANT(4616189618054758400); /* 4.000000 */
v353.i = G_GUINT64_CONSTANT(4627730092099895296); /* 25.000000 */
v354.i = G_GUINT64_CONSTANT(4631530004285489152); /* 45.000000 */
v360.i = G_GUINT64_CONSTANT(4651127699538968576); /* 900.000000 */
v372.i = G_GUINT64_CONSTANT(4708583787749965824); /* 6357000.000000 */
v382.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v389.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v390.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v391.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v392.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v393.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v394.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v395.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v396.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v397.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v398.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v399.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v400.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v401.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v402.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v403.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v404.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v405.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v406.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v407.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v408.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v409.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
v410.i = G_GUINT64_CONSTANT(0); /* 0.000000 */
}
void ovm_step(guint scenario, gdouble *__restrict__ in, gdouble *__restrict__ out) {
double_int v1, v4, v5, v7, v8, v9, v11, v12, v14, v16, v19, v20, v22, v24, v25, v26, v30, v31, v33, v35, v37, v40, v42, v44, v46, v48, v49, v51, v52, v53, v54, v56, v59, v62, v64, v66, v67, v69, v70, v71, v72, v73, v74, v75, v77, v80, v81, v82, v83, v84, v85, v86, v87, v88, v91, v94, v97, v99, v100, v101, v102, v103, v106, v107, v109, v111, v112, v114, v116, v117, v119, v121, v122, v124, v125, v127, v128, v130, v131, v133, v134, v136, v138, v139, v140, v141, v143, v145, v148, v151, v153, v155, v157, v159, v161, v162, v163, v164, v165, v166, v167, v168, v169, v170, v171, v172, v173, v174, v177, v180, v183, v185, v187, v189, v191, v193, v194, v195, v196, v197, v198, v199, v200, v201, v204, v206, v209, v211, v213, v214, v215, v216, v217, v218, v219, v220, v221, v222, v225, v227, v229, v231, v233, v235, v237, v239, v241, v242, v243, v244, v245, v246, v247, v248, v249, v250, v251, v252, v253, v254, v256, v257, v259, v260, v261, v262, v263, v264, v265, v266, v267, v268, v269, v270, v271, v272, v273, v274, v275, v276, v277, v278, v279, v282, v284, v286, v288, v290, v291, v292, v293, v294, v295, v296, v297, v298, v299, v300, v301, v302, v303, v304, v305, v306, v307, v308, v309, v310, v311, v312, v314, v316, v318, v320, v322, v324, v326, v328, v330, v331, v333, v334, v336, v337, v338, v339, v340, v341, v343, v345, v346, v349, v350, v351, v355, v356, v357, v358, v359, v361, v362, v364, v365, v366, v368, v369, v371, v373, v374, v375, v376, v377, v378, v379, v381;
v1.d = v410.d;
v4.d = v389.d;
v5.d = v4.d - v3.d;
ovm_status = (v5.d == 0);
v7.d = ovm_status ? v2.d : v1.d;
v8.d = v7.d - v0.d;
v9.d = v408.d;
ovm_status = (v5.d == 0);
v11.d = ovm_status ? v0.d : v9.d;
v12.d = v11.d - v0.d;
ovm_status = (v12.d == 0);
v14.d = ovm_status ? v8.d : v7.d;
v16.d = v409.d;
ovm_status = (v5.d == 0);
v19.d = ovm_status ? v17.d : v16.d;
v20.d = v19.d * v15.d;
ovm_status = (v12.d == 0);
v22.d = ovm_status ? v20.d : v19.d;
ovm_status = (v12.d == 0);
v24.d = ovm_status ? v19.d : v12.d;
v25.d = v406.d;
v26.d = v401.d;
v30.d = scenario;
v31.d = v30.d - v29.d;
ovm_status = (v31.d == 0);
v33.d = ovm_status ? v28.d : v3.d;
v35.d = v30.d - v34.d;
ovm_status = (v35.d == 0);
v37.d = ovm_status ? v27.d : v33.d;
v40.d = v30.d - v39.d;
ovm_status = (v40.d == 0);
v42.d = ovm_status ? v38.d : v37.d;
v44.d = v30.d - v43.d;
ovm_status = (v44.d == 0);
v46.d = ovm_status ? v27.d : v42.d;
ovm_status = (v5.d == 0);
v48.d = ovm_status ? v46.d : v26.d;
v49.d = v391.d;
ovm_status = (v5.d == 0);
v51.d = ovm_status ? v3.d : v49.d;
v52.d = v51.d - v48.d;
v53.d = v52.d * v52.d;
v54.d = v400.d;
ovm_status = (v31.d == 0);
v56.d = ovm_status ? v27.d : v3.d;
ovm_status = (v35.d == 0);
v59.d = ovm_status ? v57.d : v56.d;
ovm_status = (v40.d == 0);
v62.d = ovm_status ? v60.d : v59.d;
ovm_status = (v44.d == 0);
v64.d = ovm_status ? v28.d : v62.d;
ovm_status = (v5.d == 0);
v66.d = ovm_status ? v64.d : v54.d;
v67.d = v390.d;
ovm_status = (v5.d == 0);
v69.d = ovm_status ? v3.d : v67.d;
v70.d = v69.d - v66.d;
v71.d = v70.d * v70.d;
v72.d = v71.d + v53.d;
v73.d = sqrt(v72.d);
v74.d = v73.d * v73.d;
v75.d = v74.d * v73.d;
v77.d = v392.d;
ovm_status = (v5.d == 0);
v80.d = ovm_status ? v78.d : v77.d;
v81.d = v76.d * v80.d;
v82.d = (v75.d == 0) ? 0.0 : v81.d / v75.d;
v83.d = v52.d * v82.d;
v84.d = (v0.d == 0) ? 0.0 : v0.d / v0.d;
v85.d = v84.d * v84.d;
v86.d = (v15.d == 0) ? 0.0 : v85.d / v15.d;
v87.d = v83.d * v86.d;
v88.d = v404.d;
ovm_status = (v35.d == 0);
v91.d = ovm_status ? v89.d : v56.d;
ovm_status = (v40.d == 0);
v94.d = ovm_status ? v92.d : v91.d;
ovm_status = (v44.d == 0);
v97.d = ovm_status ? v95.d : v94.d;
ovm_status = (v5.d == 0);
v99.d = ovm_status ? v97.d : v88.d;
v100.d = v99.d * v84.d;
v101.d = v48.d + v100.d;
v102.d = v101.d + v87.d;
v103.d = v396.d;
v106.d = v105.d + v17.d;
v107.d = v30.d - v106.d;
ovm_status = (v107.d == 0);
v109.d = ovm_status ? v104.d : v3.d;
v111.d = v110.d + v17.d;
v112.d = v30.d - v111.d;
ovm_status = (v112.d == 0);
v114.d = ovm_status ? v27.d : v109.d;
v116.d = v115.d + v17.d;
v117.d = v30.d - v116.d;
ovm_status = (v117.d == 0);
v119.d = ovm_status ? v38.d : v114.d;
v121.d = v120.d + v17.d;
v122.d = v30.d - v121.d;
ovm_status = (v122.d == 0);
v124.d = ovm_status ? v27.d : v119.d;
v125.d = v30.d - v105.d;
ovm_status = (v125.d == 0);
v127.d = ovm_status ? v104.d : v124.d;
v128.d = v30.d - v110.d;
ovm_status = (v128.d == 0);
v130.d = ovm_status ? v27.d : v127.d;
v131.d = v30.d - v115.d;
ovm_status = (v131.d == 0);
v133.d = ovm_status ? v38.d : v130.d;
v134.d = v30.d - v120.d;
ovm_status = (v134.d == 0);
v136.d = ovm_status ? v27.d : v133.d;
ovm_status = (v5.d == 0);
v138.d = ovm_status ? v136.d : v103.d;
v139.d = v51.d - v138.d;
v140.d = v139.d * v139.d;
v141.d = v395.d;
ovm_status = (v107.d == 0);
v143.d = ovm_status ? v27.d : v3.d;
ovm_status = (v112.d == 0);
v145.d = ovm_status ? v28.d : v143.d;
ovm_status = (v117.d == 0);
v148.d = ovm_status ? v146.d : v145.d;
ovm_status = (v122.d == 0);
v151.d = ovm_status ? v149.d : v148.d;
ovm_status = (v125.d == 0);
v153.d = ovm_status ? v27.d : v151.d;
ovm_status = (v128.d == 0);
v155.d = ovm_status ? v28.d : v153.d;
ovm_status = (v131.d == 0);
v157.d = ovm_status ? v146.d : v155.d;
ovm_status = (v134.d == 0);
v159.d = ovm_status ? v149.d : v157.d;
ovm_status = (v5.d == 0);
v161.d = ovm_status ? v159.d : v141.d;
v162.d = v69.d - v161.d;
v163.d = v162.d * v162.d;
v164.d = v163.d + v140.d;
v165.d = sqrt(v164.d);
v166.d = v165.d * v165.d;
v167.d = v166.d * v165.d;
v168.d = (v167.d == 0) ? 0.0 : v81.d / v167.d;
v169.d = v139.d * v168.d;
v170.d = in[3];
v171.d = (v84.d == 0) ? 0.0 : v170.d / v84.d;
v172.d = v171.d + v169.d;
v173.d = v172.d * v86.d;
v174.d = v399.d;
ovm_status = (v112.d == 0);
v177.d = ovm_status ? v175.d : v143.d;
ovm_status = (v117.d == 0);
v180.d = ovm_status ? v178.d : v177.d;
ovm_status = (v122.d == 0);
v183.d = ovm_status ? v181.d : v180.d;
ovm_status = (v125.d == 0);
v185.d = ovm_status ? v27.d : v183.d;
ovm_status = (v128.d == 0);
v187.d = ovm_status ? v175.d : v185.d;
ovm_status = (v131.d == 0);
v189.d = ovm_status ? v178.d : v187.d;
ovm_status = (v134.d == 0);
v191.d = ovm_status ? v181.d : v189.d;
ovm_status = (v5.d == 0);
v193.d = ovm_status ? v191.d : v174.d;
v194.d = v193.d * v84.d;
v195.d = v138.d + v194.d;
v196.d = v195.d + v173.d;
v197.d = v196.d - v102.d;
v198.d = v197.d * v197.d;
v199.d = v70.d * v82.d;
v200.d = v199.d * v86.d;
v201.d = v403.d;
ovm_status = (v31.d == 0);
v204.d = ovm_status ? v202.d : v3.d;
ovm_status = (v35.d == 0);
v206.d = ovm_status ? v27.d : v204.d;
ovm_status = (v40.d == 0);
v209.d = ovm_status ? v207.d : v206.d;
ovm_status = (v44.d == 0);
v211.d = ovm_status ? v27.d : v209.d;
ovm_status = (v5.d == 0);
v213.d = ovm_status ? v211.d : v201.d;
v214.d = v213.d * v84.d;
v215.d = v66.d + v214.d;
v216.d = v215.d + v200.d;
v217.d = v162.d * v168.d;
v218.d = in[2];
v219.d = (v84.d == 0) ? 0.0 : v218.d / v84.d;
v220.d = v219.d + v217.d;
v221.d = v220.d * v86.d;
v222.d = v398.d;
ovm_status = (v107.d == 0);
v225.d = ovm_status ? v223.d : v3.d;
ovm_status = (v112.d == 0);
v227.d = ovm_status ? v27.d : v225.d;
ovm_status = (v117.d == 0);
v229.d = ovm_status ? v178.d : v227.d;
ovm_status = (v122.d == 0);
v231.d = ovm_status ? v27.d : v229.d;
ovm_status = (v125.d == 0);
v233.d = ovm_status ? v223.d : v231.d;
ovm_status = (v128.d == 0);
v235.d = ovm_status ? v27.d : v233.d;
ovm_status = (v131.d == 0);
v237.d = ovm_status ? v178.d : v235.d;
ovm_status = (v134.d == 0);
v239.d = ovm_status ? v27.d : v237.d;
ovm_status = (v5.d == 0);
v241.d = ovm_status ? v239.d : v222.d;
v242.d = v241.d * v84.d;
v243.d = v161.d + v242.d;
v244.d = v243.d + v221.d;
v245.d = v244.d - v216.d;
v246.d = v245.d * v245.d;
v247.d = v246.d + v198.d;
v248.d = sqrt(v247.d);
v249.d = v25.d + v248.d;
v250.d = v171.d * v171.d;
v251.d = v219.d * v219.d;
v252.d = v251.d + v250.d;
v253.d = sqrt(v252.d);
v254.d = v253.d - v3.d;
ovm_status = (v254.d == 0);
v256.d = ovm_status ? v249.d : v3.d;
v257.d = v248.d - v17.d;
ovm_status = (v257.d < 0);
v259.d = ovm_status ? v256.d : v3.d;
v260.d = v51.d - v102.d;
v261.d = v260.d * v260.d;
v262.d = v69.d - v216.d;
v263.d = v262.d * v262.d;
v264.d = v263.d + v261.d;
v265.d = sqrt(v264.d);
v266.d = v265.d * v265.d;
v267.d = v266.d * v265.d;
v268.d = (v267.d == 0) ? 0.0 : v81.d / v267.d;
v269.d = v260.d * v268.d;
v270.d = v269.d + v83.d;
v271.d = (v15.d == 0) ? 0.0 : v270.d / v15.d;
v272.d = v271.d * v84.d;
v273.d = v99.d + v272.d;
v274.d = v262.d * v268.d;
v275.d = v274.d + v199.d;
v276.d = (v15.d == 0) ? 0.0 : v275.d / v15.d;
v277.d = v276.d * v84.d;
v278.d = v213.d + v277.d;
v279.d = v402.d;
ovm_status = (v31.d == 0);
v282.d = ovm_status ? v280.d : v3.d;
ovm_status = (v35.d == 0);
v284.d = ovm_status ? v280.d : v282.d;
ovm_status = (v40.d == 0);
v286.d = ovm_status ? v280.d : v284.d;
ovm_status = (v44.d == 0);
v288.d = ovm_status ? v280.d : v286.d;
ovm_status = (v5.d == 0);
v290.d = ovm_status ? v288.d : v279.d;
v291.d = v51.d - v196.d;
v292.d = v291.d * v291.d;
v293.d = v69.d - v244.d;
v294.d = v293.d * v293.d;
v295.d = v294.d + v292.d;
v296.d = sqrt(v295.d);
v297.d = v296.d * v296.d;
v298.d = v297.d * v296.d;
v299.d = (v298.d == 0) ? 0.0 : v81.d / v298.d;
v300.d = v291.d * v299.d;
v301.d = v300.d + v169.d;
v302.d = (v15.d == 0) ? 0.0 : v301.d / v15.d;
v303.d = v171.d + v302.d;
v304.d = v303.d * v84.d;
v305.d = v193.d + v304.d;
v306.d = v293.d * v299.d;
v307.d = v306.d + v217.d;
v308.d = (v15.d == 0) ? 0.0 : v307.d / v15.d;
v309.d = v219.d + v308.d;
v310.d = v309.d * v84.d;
v311.d = v241.d + v310.d;
v312.d = v397.d;
ovm_status = (v107.d == 0);
v314.d = ovm_status ? v280.d : v3.d;
ovm_status = (v112.d == 0);
v316.d = ovm_status ? v280.d : v314.d;
ovm_status = (v117.d == 0);
v318.d = ovm_status ? v280.d : v316.d;
ovm_status = (v122.d == 0);
v320.d = ovm_status ? v280.d : v318.d;
ovm_status = (v125.d == 0);
v322.d = ovm_status ? v280.d : v320.d;
ovm_status = (v128.d == 0);
v324.d = ovm_status ? v280.d : v322.d;
ovm_status = (v131.d == 0);
v326.d = ovm_status ? v280.d : v324.d;
ovm_status = (v134.d == 0);
v328.d = ovm_status ? v280.d : v326.d;
ovm_status = (v5.d == 0);
v330.d = ovm_status ? v328.d : v312.d;
v331.d = v394.d;
ovm_status = (v5.d == 0);
v333.d = ovm_status ? v3.d : v331.d;
v334.d = v393.d;
ovm_status = (v5.d == 0);
v336.d = ovm_status ? v3.d : v334.d;
v337.d = v4.d + v0.d;
v338.d = v102.d - v196.d;
v339.d = v216.d - v244.d;
v340.d = v405.d;
v341.d = v340.d + v0.d;
ovm_status = (v254.d == 0);
v343.d = ovm_status ? v341.d : v3.d;
ovm_status = (v257.d < 0);
v345.d = ovm_status ? v343.d : v3.d;
v346.d = v407.d;
ovm_status = (v5.d == 0);
v349.d = ovm_status ? v347.d : v346.d;
v350.d = v253.d * v84.d;
v351.d = v349.d - v350.d;
v355.d = (v347.d == 0) ? 0.0 : v351.d / v347.d;
v356.d = v355.d * v354.d;
v357.d = v7.d + v356.d;
v358.d = v357.d + v353.d;
v359.d = v358.d * v352.d;
v361.d = (v84.d == 0) ? 0.0 : v360.d / v84.d;
v362.d = v361.d - v345.d;
ovm_status = (v362.d < 0);
v364.d = ovm_status ? v359.d : v3.d;
v365.d = v351.d - v3.d;
v366.d = v382.d - v0.d;
ovm_status = (v365.d < 0);
v368.d = ovm_status ? v366.d : v364.d;
v369.d = v347.d - v350.d;
ovm_status = (v369.d < 0);
v371.d = ovm_status ? v366.d : v368.d;
v373.d = v196.d - v51.d;
v374.d = v373.d * v373.d;
v375.d = v244.d - v69.d;
v376.d = v375.d * v375.d;
v377.d = v376.d + v374.d;
v378.d = sqrt(v377.d);
v379.d = v378.d - v372.d;
ovm_status = (v379.d < 0);
v381.d = ovm_status ? v366.d : v371.d;
out[0] = v381.d;
out[1] = v351.d;
out[2] = v293.d;
out[3] = v291.d;
out[4] = v339.d;
out[5] = v338.d;
v389.d = v337.d;
v390.d = v69.d;
v391.d = v51.d;
v392.d = v80.d;
v393.d = v336.d;
v394.d = v333.d;
v395.d = v244.d;
v396.d = v196.d;
v397.d = v330.d;
v398.d = v311.d;
v399.d = v305.d;
v400.d = v216.d;
v401.d = v102.d;
v402.d = v290.d;
v403.d = v278.d;
v404.d = v273.d;
v405.d = v345.d;
v406.d = v259.d;
v407.d = v351.d;
v408.d = v24.d;
v409.d = v22.d;
v410.d = v14.d;
}