public double getTreeValue(int[] f, int[][] links, int node) { double r1, r2, r3, r4; double res; r1 = 0; r2 = 0; r3 = 0; r4 = 0; switch (f[node]) { case 7: r4 = getTreeValue(f, links, links[node][3]); case 3: case 5: r3 = getTreeValue(f, links, links[node][2]); case 2: case 4: case 6: r2 = getTreeValue(f, links, links[node][1]); case 0: case 1: r1 = getTreeValue(f, links, links[node][0]); break; default: r1 = 0; r2 = 0; r3 = 0; r4 = 0; break; } switch (f[node]) { case 0: res = 1 / (1 + Math.exp(-r1)); break; case 1: res = -r1; break; case 2: res = r1 + r2; break; case 3: res = r1 + r2 + r3; break; case 4: res = r1 * r2; break; case 5: res = r1 * r2 * r3; break; case 6: res = (r1 > r2) ? r2 : r1; break; case 7: res = (r1 > r2) ? r3 : r4; break; case 8: res = env.x; break; case 9: res = env.y; break; case 10: res = env.dr; break; case 11: res = env.tr; break; case 12: res = env.w; break; case 13: res = env.dh; break; case 14: res = env.GH; break; case 15: res = env.h; break; case 16: res = env.d; break; case 17: res = env.e; break; case 18: res = env.E; break; case 19: res = 0; break; case 20: res = 0.5; break; case 21: res = 1; break; case 22: res = 2; break; case 23: res = 5; break; case 24: res = 10; break; default: res = 0; break; } return res; }