//#include <iostream>\r
#include <math.h>\r
//#include <cassert>\r
-//#include <limits>\r
+#include <limits>\r
//#include <cstdlib>\r
\r
#include <mex.h>\r
double inline min(double x, double y) {\r
return x > y ? y : x;\r
}\r
-\r
+/*\r
+ * kleinere Seiten nach vorn und dadurch kleinerer Durchmesser nach vorn\r
+ */\r
void inline switch_site(double& b, double& d, double& t, double& v, double& d1,\r
double& d2) {\r
double tmp = 0;\r
\r
void inline switch_dim(double& b, double& d, double& t, double& v, double& d1,\r
double& d2) {\r
+ //\r
if (b * b + t * t > d * d + v * v) {\r
double tmp = 0;\r
\r
}\r
}\r
\r
+/*\r
+ * gibt den Abstand zum Quadrat zurueck\r
+ */\r
double inline dist2(double b, double d, double t, double v, double d1,\r
double d2, double d3) {\r
double dis1 = 0, dis2 = 0;\r
\r
return dis1 * dis1 + dis2 * dis2 + d3 * d3;\r
}\r
+/*\r
+ * gibt den Abstand zurueck\r
+ */\r
double inline dist(double b, double d, double t, double v, double d1, double d2,\r
double d3) {\r
return sqrt(dist2(b, d, t, v, d1, d2, d3));\r
}\r
\r
+/*\r
+ * gibt den Abstand in einer Richtung zum Quadrat zurueck\r
+ */\r
double inline dist_s2(double b, double t, double d1) {\r
double dis1 = 0;\r
if (d1 < 0)\r
\r
return dis1 * dis1;\r
}\r
+/*\r
+ * gibt den Abstand in einer Richtung zurueck\r
+ */\r
double inline dist_s(double b, double t, double d1) {\r
return sqrt(dist_s2(b, t, d1));\r
}\r
//sol -= (x2 - y2) * g_AY(-0.5,x2,y2, sqrt((x1 - y1) * (x1 - y1) + d3 * d3));\r
sol += (x2 - y2) * log(sqrt(hlp) - (x2 - y2));\r
\r
- if (sol != sol /*|| fabs(sol) == numeric_limits<double>::infinity()*/) {\r
+ if (sol != sol/* || fabs(sol) == std::numeric_limits<double>::infinity()*/) {\r
// cout << "G_AY2X2: " << sol << " isn't a Number. (" << y1 << "," << y2\r
// << ")(" << x1 << "," << x2 << ")(" << d3 << ")" << endl;\r
// cout << (x2 - y2) << "__" << sqrt(hlp) << endl;\r
// cout << (x1 - y1) * (x1 - y1) << " " << hlp << endl;\r
+ // mexPrintf("G_AY2X2X: nan");\r
}\r
return sol;\r
}\r
b * GAUSS_NODES[quad][i].n, 0, d3) * t * b\r
* GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
\r
- if (sol\r
- != sol /*|| fabs(sol) == numeric_limits<double>::infinity()*/) {\r
+ if (sol!= sol /*|| fabs(sol) == numeric_limits<double>::infinity()*/) {\r
+ //mexPrintf("(%f,%f),(%f,%f),(%f,%f,%f)",b,d,t,v,d1,d2,d3);\r
/* cout << "->(" << i << "," << j << ")" << endl;\r
cout << "-|("\r
<< G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, v + d2,\r
* GAUSS_NODES[quad][j].w << ")" << endl;\r
\r
cout << endl;*/\r
- return sol;\r
+ //mexPrintf("%f\n",sol);\r
}\r
-\r
+ return sol;\r
}\r
}\r
\r
//kurze Seite nach vorn\r
switch_site(b, d, t, v, d1, d2);\r
\r
- if ((t * t + v * v) <= zeta[0] * dist2(b, d, t, v, d1, d2, d3))\r
+ //kurze Achse nach vorn\r
+// switch_dim(b, d, t, v, d1, d2);\r
+\r
+ if (zeta[0]*zeta[0] *(t * t + v * v) < dist2(b, d, t, v, d1, d2, d3))\r
return calcParIntQ(b, d, t, v, d1, d2, d3);\r
\r
return calcParIntA(b, d, t, v, d1, d2, d3);\r
switch_site(b, d, t, v, d1, d2);\r
\r
//kurze Achse nach vorn\r
- switch_dim(b, d, t, v, d1, d2);\r
+// switch_dim(b, d, t, v, d1, d2);\r
\r
- if ((b * b + d * d) <= zeta[1] * dist2(b, d, t, v, d1, d2, d3))\r
- if ((max(b, t) <= zeta[2] * min(d, v))\r
- && (min(dist_s2(b, t, d1), dist_s2(d, v, d2)) > 0))\r
+ if (zeta[1]*zeta[1] *(b * b + d * d) < dist2(b, d, t, v, d1, d2, d3))\r
+// if ((max(b, t) <= zeta[2] * min(d, v))\r
+// && (min(dist_s2(b, t, d1), dist_s2(d, v, d2)) > 0))\r
// mexPrintf("Qx1x2");\r
- return calcParIntQY1X1(b, d, t, v, d1, d2, d3);\r
+ return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
\r
- if ((t * t + v * v) <= zeta[0] * dist2(b, d, t, v, d1, d2, d3))\r
+ if (zeta[0]*zeta[0] *(t * t + v * v) < dist2(b, d, t, v, d1, d2, d3))\r
return calcParIntQ(b, d, t, v, d1, d2, d3);\r
\r
return calcParIntA(b, d, t, v, d1, d2, d3);\r