]> git.leopard-lacewing.eu Git - bacc.git/commitdiff
[src] Quad und Stammfunktion mit Templates durchgezogen (wirkt schneller)
authorPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 20 Mar 2013 19:46:16 +0000 (20:46 +0100)
committerPeter Schaefer <peter.schaefer@tuwien.ac.at>
Wed, 20 Mar 2013 19:46:16 +0000 (20:46 +0100)
src/slpRectangle.cpp
src/slpRectangle.hpp

index 20c206c1e790ce18047d6a554fcbca99086a5bd8..cd8df8f38b8657360c7e1e9d92b3aa119f05b37e 100644 (file)
@@ -145,8 +145,20 @@ double inline dist_s(double b, double t, double d1) {
        return sqrt(dist_s2(b, t, d1));\r
 }\r
 \r
-double inline f_A(double x1, double x2, double y1, double y2, double l) {\r
-       return 1. / sqrt((x1 - y1) * (x1 - y1) + (x2 - y2) * (x2 - y2) + l * l);\r
+double inline f_par(double x1, double x2, double y1, double y2, double d1,\r
+               double d2, double d3) {\r
+       return 1.\r
+                       / sqrt(\r
+                                       (x1 - y1 - d1) * (x1 - y1 - d1)\r
+                                                       + (x2 - y2 - d2) * (x2 - y2 - d2) + d3 * d3);\r
+}\r
+\r
+double inline f_ort(double x1, double x2, double y2, double y3, double d1,\r
+               double d2, double d3) {\r
+       return 1.\r
+                       / sqrt(\r
+                                       (x1 - d1) * (x1 - d1) + (x2 - y2 - d2) * (x2 - y2 - d2)\r
+                                                       + (y3 + d3) * (y3 + d3));\r
 }\r
 \r
 double inline g_QY(double p, double y, double x, double l) {\r
@@ -154,11 +166,11 @@ double inline g_QY(double p, double y, double x, double l) {
        double sol = 0;\r
 \r
        for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
-sol    += pow(\r
-                       (x - GAUSS_NODES[quad][i].n * y)\r
-                       * (x - GAUSS_NODES[quad][i].n * y) + l * l, p)\r
-       * GAUSS_NODES[quad][i].w * y;\r
-}\r
+               sol += pow(\r
+                               (x - GAUSS_NODES[quad][i].n * y)\r
+                                               * (x - GAUSS_NODES[quad][i].n * y) + l * l, p)\r
+                               * GAUSS_NODES[quad][i].w * y;\r
+       }\r
 \r
        return sol;\r
 }\r
@@ -201,15 +213,15 @@ double inline G_QY1Y2(double p, double y1, double y2, double x1, double x2,
        double sol = 0;\r
        for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
                for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-sol            += pow(\r
-                               (x1 - y1 * GAUSS_NODES[quad][i].n)\r
-                               * (x1 - y1 * GAUSS_NODES[quad][i].n)\r
-                               + (x2 - y2 * GAUSS_NODES[quad][j].n)\r
-                               * (x2 - y2 * GAUSS_NODES[quad][j].n)\r
-                               + l * l, p) * y1 * GAUSS_NODES[quad][i].w * y2\r
-               * GAUSS_NODES[quad][j].w;\r
+                       sol += pow(\r
+                                       (x1 - y1 * GAUSS_NODES[quad][i].n)\r
+                                                       * (x1 - y1 * GAUSS_NODES[quad][i].n)\r
+                                                       + (x2 - y2 * GAUSS_NODES[quad][j].n)\r
+                                                                       * (x2 - y2 * GAUSS_NODES[quad][j].n)\r
+                                                       + l * l, p) * y1 * GAUSS_NODES[quad][i].w * y2\r
+                                       * GAUSS_NODES[quad][j].w;\r
+               }\r
        }\r
-}\r
        return sol;\r
 }\r
 \r
@@ -225,7 +237,8 @@ double inline G_AY2X2(double y1, double y2, double x1, double x2, double d3) {
                //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) == std::numeric_limits<double>::infinity()*/) {\r
+       if (sol\r
+                       != 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
@@ -279,45 +292,6 @@ double inline Gs_AX2Y1Y2(double p, double y1, double y2, double x1, double x2,
        return sol;\r
 }\r
 \r
-template<double (f)(double, double)>\r
-double Q2(double a, double b) {\r
-       double sol = 0;\r
-\r
-       for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
-               for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-                       sol += f(a * GAUSS_NODES[quad][i].n, b * GAUSS_NODES[quad][j].n) * a\r
-                                       * b * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               }\r
-       }\r
-\r
-       return sol;\r
-}\r
-\r
-template<double (f)(double, double, double, double)>\r
-double Q4(double a, double b, double c, double d) {\r
-       //Fall 0\r
-\r
-       double sol = 0;\r
-       int i, j, k, l;\r
-\r
-       for (i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
-               for (j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-                       for (k = 0; k < GAUSS_SIZE[quad]; ++k) {\r
-                               for (l = 0; l < GAUSS_SIZE[quad]; ++l) {\r
-                                       sol += f(a * GAUSS_NODES[quad][i].n,\r
-                                                       b * GAUSS_NODES[quad][j].n,\r
-                                                       c * GAUSS_NODES[quad][k].n,\r
-                                                       d * GAUSS_NODES[quad][l].n) * a * b * c * d\r
-                                                       * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w\r
-                                                       * GAUSS_NODES[quad][k].w * GAUSS_NODES[quad][l].w;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-\r
-       return sol;\r
-}\r
-\r
 double inline F_par(double x1, double x2, double y1, double y2, double d1,\r
                double d2, double d3) {\r
 \r
@@ -374,160 +348,53 @@ double inline F_ort(double x1, double x2, double y2, double y3, double d1,
        return sol / 2.;\r
 }\r
 \r
-/*double applyInt4(\r
- double(*f)(double, double, double, double, double, double, double),\r
- double a, double b, double c, double d, double r, double t, double u,\r
- double v, double d1, double d2, double d3) {\r
-\r
- return f(b, d, t, v, d1, d2, d3) - f(b, d, t, u, d1, d2, d3) - f(b, d, r,\r
- v, d1, d2, d3) + f(b, d, r, u, d1, d2, d3) - f(b, c, t, v, d1, d2,\r
- d3) + f(b, c, t, u, d1, d2, d3) + f(b, c, r, v, d1, d2, d3) - f(b,\r
- c, r, u, d1, d2, d3) - f(a, d, t, v, d1, d2, d3) + f(a, d, t, u,\r
- d1, d2, d3) + f(a, d, r, v, d1, d2, d3) - f(a, d, r, u, d1, d2, d3)\r
- + f(a, c, t, v, d1, d2, d3) - f(a, c, t, u, d1, d2, d3) - f(a, c,\r
- r, v, d1, d2, d3) + f(a, c, r, u, d1, d2, d3);\r
-\r
- }*/\r
-\r
-template <double (f)(double, double, double, double, double, double, double)>\r
-double inline apply0Int4(\r
-               double b, double d, double t, double v, double d1, double d2,\r
-               double d3) {\r
-\r
-       return f(b, d, t, v, d1, d2, d3) - f(b, d, t, 0, d1, d2, d3)\r
-                       - f(b, d, 0, v, d1, d2, d3) + f(b, d, 0, 0, d1, d2, d3)\r
-                       - f(b, 0, t, v, d1, d2, d3) + f(b, 0, t, 0, d1, d2, d3)\r
-                       + f(b, 0, 0, v, d1, d2, d3) - f(b, 0, 0, 0, d1, d2, d3)\r
-                       - f(0, d, t, v, d1, d2, d3) + f(0, d, t, 0, d1, d2, d3)\r
-                       + f(0, d, 0, v, d1, d2, d3) - f(0, d, 0, 0, d1, d2, d3)\r
-                       + f(0, 0, t, v, d1, d2, d3) - f(0, 0, t, 0, d1, d2, d3)\r
-                       - f(0, 0, 0, v, d1, d2, d3) + f(0, 0, 0, 0, d1, d2, d3);\r
 \r
-}\r
-template <double (f)(double, double, double, double, double, double, double)>\r
-double inline apply0Int2(\r
-               double b, double d, double t, double v, double d1, double d2,\r
+double inline FY1Y2_par(double x1, double x2, double y1, double y2, double d1, double d2,\r
                double d3) {\r
-\r
-       return f(b, d, t, v, d1, d2, d3) - f(b, 0, t, v, d1, d2, d3)\r
-                       - f(0, d, t, v, d1, d2, d3) + f(0, 0, t, v, d1, d2, d3);\r
-\r
+       return G_AY1Y2(-0.5, y1 + d1, y2 + d2, x1, x2, d3);\r
 }\r
 \r
-// Berechnet das eigentliche Integral fuer parallele Elemente voll Analytisch\r
-double calcParIntA(double b, double d, double t, double v, double d1, double d2,\r
+double inline FY2X2_par(double y1, double x1, double y2, double x2, double d1, double d2,\r
                double d3) {\r
-       return apply0Int4<F_par>(b, d, t, v, d1, d2, d3);\r
-\r
+       return G_AY2X2(y1 + d1, y2 + d2, x1, x2, d3);\r
 }\r
 \r
-double calcParIntQX1X2(double b, double d, double t, double v, double d1,\r
-               double d2, double d3) {\r
-       //Fall 2\r
-       double sol = 0;\r
 \r
-       for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
-               for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-sol            += G_AY1Y2(-0.5, t + d1, v + d2, b * GAUSS_NODES[quad][i].n,\r
-                               d * GAUSS_NODES[quad][j].n, d3) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol -= G_AY1Y2(-0.5, d1, v + d2, b * GAUSS_NODES[quad][i].n,\r
-                               d * GAUSS_NODES[quad][j].n, d3) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol -= G_AY1Y2(-0.5, t + d1, d2, b * GAUSS_NODES[quad][i].n,\r
-                               d * GAUSS_NODES[quad][j].n, d3) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol += G_AY1Y2(-0.5, d1, d2, b * GAUSS_NODES[quad][i].n,\r
-                               d * GAUSS_NODES[quad][j].n, d3) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-       }\r
-}\r
-\r
-       return sol;\r
-//     return Q2<>(b,d);\r
-\r
-}\r
 \r
-double calcParIntQY1X1(double b, double d, double t, double v, double d1,\r
-               double d2, double d3) {\r
-       //Fall 3\r
+/*\r
+ * Quadratur über zwei Integrale und Grenzen in Stammfunktion über zwei Integrale\r
+ * b,d - Grenzen für Quadratur\r
+ * t,v - Grenzen in Stammfunktion\r
+ */\r
+template<double (F)(double, double, double, double, double, double, double)>\r
+double intQ2A2(double b, double d, double t, double v, double d1, double d2,\r
+               double d3) {\r
        double sol = 0;\r
 \r
        for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
                for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-\r
-                       sol += G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, v + d2,\r
-                                       b * GAUSS_NODES[quad][i].n, d, d3) * t * b\r
-                       * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-                       sol -= G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, v + d2,\r
-                                       b * GAUSS_NODES[quad][i].n, 0, d3) * t * b\r
-                       * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-                       sol -= G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, d2,\r
-                                       b * GAUSS_NODES[quad][i].n, d, d3) * t * b\r
-                       * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-                       sol += G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, d2,\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!= 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
-                                b * GAUSS_NODES[quad][i].n, d, d3) * t * b\r
-                                * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w << ","\r
-                                << G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, v + d2,\r
-                                b * GAUSS_NODES[quad][i].n, 0, d3) * t * b\r
-                                * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w << ","\r
-                                << G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, d2,\r
-                                b * GAUSS_NODES[quad][i].n, d, d3) * t * b\r
-                                * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w << ","\r
-                                << G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, d2,\r
-                                b * GAUSS_NODES[quad][i].n, 0, d3) * t * b\r
-                                * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w << ")" << endl;\r
-                                cout << "||"\r
-                                << t * b * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w\r
-                                << "||-----------------" << endl;\r
-\r
-                                cout << "? ("\r
-                                << G_AY2X2(t * GAUSS_NODES[quad][j].n + d1, d2,\r
-                                b * GAUSS_NODES[quad][i].n, 0, d3) << ","\r
-                                << t * b * GAUSS_NODES[quad][i].w\r
-                                * GAUSS_NODES[quad][j].w << ")" << endl;\r
-\r
-                                cout << endl;*/\r
-                               //mexPrintf("%f\n",sol);\r
-                       }\r
-                       return sol;\r
+                       sol += (F(b * GAUSS_NODES[quad][i].n, d * GAUSS_NODES[quad][j].n, t,\r
+                                       v, d1, d2, d3)\r
+                                       - F(b * GAUSS_NODES[quad][i].n, d * GAUSS_NODES[quad][j].n,\r
+                                                       0, v, d1, d2, d3)\r
+                                       - F(b * GAUSS_NODES[quad][i].n, d * GAUSS_NODES[quad][j].n,\r
+                                                       t, 0, d1, d2, d3)\r
+                                       + F(b * GAUSS_NODES[quad][i].n, d * GAUSS_NODES[quad][j].n,\r
+                                                       0, 0, d1, d2, d3)) * GAUSS_NODES[quad][i].w\r
+                                       * GAUSS_NODES[quad][j].w * b * d;\r
                }\r
        }\r
 \r
-       //if (sol != sol /*|| sol == numeric_limits<double>::infinity()*/)\r
-       //      cout << "calcParIntQY1X1: " << sol << " isn't a Number. (" << b << ","\r
-       //                      << d << ")(" << t << "," << v << ")(" << d1 << "," << d2 << ","\r
-       //                      << d3 << ")" << endl;\r
-\r
        return sol;\r
 }\r
 \r
-double calcParIntQY1(double b, double d, double t, double v, double d1,\r
-               double d2, double d3) {\r
-       //Fall 4\r
-\r
-       double sol = 0;\r
-       mexPrintf("warning: calcParIntQY1 nicht implementiert!");\r
-       return 0; ///ACHTUNG noch Falsch\r
-\r
-}\r
-\r
-double calcParIntQ(double b, double d, double t, double v, double d1, double d2,\r
+/*\r
+ * Quadratur über vier Integrale\r
+ * b,d,t,v - Grenzen für Quadratur\r
+ */\r
+template<double (F)(double, double, double, double, double, double, double)>\r
+double intQ4(double b, double d, double t, double v, double d1, double d2,\r
                double d3) {\r
-       //Fall 0\r
 \r
        double sol = 0;\r
        int i, j, k, l;\r
@@ -536,62 +403,48 @@ double calcParIntQ(double b, double d, double t, double v, double d1, double d2,
                for (j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
                        for (k = 0; k < GAUSS_SIZE[quad]; ++k) {\r
                                for (l = 0; l < GAUSS_SIZE[quad]; ++l) {\r
-sol                            += f_A(b * GAUSS_NODES[quad][i].n,\r
-                                               d * GAUSS_NODES[quad][j].n,\r
-                                               (t) * GAUSS_NODES[quad][k].n + d1,\r
-                                               (v) * GAUSS_NODES[quad][l].n + d2, d3) * b\r
-                               * GAUSS_NODES[quad][i].w * d\r
-                               * GAUSS_NODES[quad][j].w * t\r
-                               * GAUSS_NODES[quad][k].w * v\r
-                               * GAUSS_NODES[quad][l].w;\r
+                                       sol += F(b * GAUSS_NODES[quad][i].n,\r
+                                                       d * GAUSS_NODES[quad][j].n,\r
+                                                       t * GAUSS_NODES[quad][k].n,\r
+                                                       v * GAUSS_NODES[quad][l].n, d1, d2, d3) * b * d * t\r
+                                                       * v * GAUSS_NODES[quad][i].w\r
+                                                       * GAUSS_NODES[quad][j].w * GAUSS_NODES[quad][k].w\r
+                                                       * GAUSS_NODES[quad][l].w;\r
+                               }\r
                        }\r
                }\r
        }\r
-}\r
 \r
        return sol;\r
 }\r
 \r
-double calcOrtIntA(double b, double d, double t, double v, double d1, double d2,\r
-               double d3) {\r
-       return apply0Int4<F_ort>(b, d, t, v, d1, d2, d3);\r
-\r
-}\r
-\r
-double calcOrtIntQX1X2(double b, double d, double t, double v, double d1,\r
+/*\r
+ * Grenzen in Stammfunktion über vier Integrale\r
+ * b,d,t,v - Grenzen für Stammfunktion\r
+ */\r
+template<double (F)(double, double, double, double, double, double, double)>\r
+double inline intA4(double b, double d, double t, double v, double d1,\r
                double d2, double d3) {\r
-       //Fall 2\r
-       double sol = 0;\r
-\r
-       for (int i = 0; i < GAUSS_SIZE[quad]; ++i) {\r
-               for (int j = 0; j < GAUSS_SIZE[quad]; ++j) {\r
-sol            += G_AY1Y2(-0.5, t + d2, v + d3, d * GAUSS_NODES[quad][j].n, 0,\r
-                               b * GAUSS_NODES[quad][i].n - d1) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol -= G_AY1Y2(-0.5, d2, v + d3, d * GAUSS_NODES[quad][j].n, 0,\r
-                               b * GAUSS_NODES[quad][i].n - d1) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol -= G_AY1Y2(-0.5, t + d2, d3, d * GAUSS_NODES[quad][j].n, 0,\r
-                               b * GAUSS_NODES[quad][i].n - d1) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-               sol += G_AY1Y2(-0.5, d2, d3, d * GAUSS_NODES[quad][j].n, 0,\r
-                               b * GAUSS_NODES[quad][i].n - d1) * b * d\r
-               * GAUSS_NODES[quad][i].w * GAUSS_NODES[quad][j].w;\r
-       }\r
-}\r
 \r
-       return sol;\r
+       return F(b, d, t, v, d1, d2, d3) - F(b, d, t, 0, d1, d2, d3)\r
+                       - F(b, d, 0, v, d1, d2, d3) + F(b, d, 0, 0, d1, d2, d3)\r
+                       - F(b, 0, t, v, d1, d2, d3) + F(b, 0, t, 0, d1, d2, d3)\r
+                       + F(b, 0, 0, v, d1, d2, d3) - F(b, 0, 0, 0, d1, d2, d3)\r
+                       - F(0, d, t, v, d1, d2, d3) + F(0, d, t, 0, d1, d2, d3)\r
+                       + F(0, d, 0, v, d1, d2, d3) - F(0, d, 0, 0, d1, d2, d3)\r
+                       + F(0, 0, t, v, d1, d2, d3) - F(0, 0, t, 0, d1, d2, d3)\r
+                       - F(0, 0, 0, v, d1, d2, d3) + F(0, 0, 0, 0, d1, d2, d3);\r
 \r
 }\r
 \r
 double cParO1(double b, double d, double t, double v, double d1, double d2,\r
                double d3, double* zeta) {\r
-       return calcParIntA(b, d, t, v, d1, d2, d3);\r
+       return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
 double cOrtO1(double b, double d, double t, double v, double d1, double d2,\r
                double d3, double* zeta) {\r
-       return calcOrtIntA(b, d, t, v, d1, d2, d3);\r
+       return intA4<F_ort>(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
 double cParO2(double b, double d, double t, double v, double d1, double d2,\r
@@ -604,10 +457,10 @@ double cParO2(double b, double d, double t, double v, double d1, double d2,
        //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
+       if (zeta[0] * zeta[0] * (t * t + v * v) < dist2(b, d, t, v, d1, d2, d3))\r
+               return intQ4<f_par>(b, d, t, v, d1, d2, d3);\r
 \r
-       return calcParIntA(b, d, t, v, d1, d2, d3);\r
+       return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
 double cParO3(double b, double d, double t, double v, double d1, double d2,\r
@@ -619,16 +472,13 @@ double cParO3(double b, double d, double t, double v, double d1, double d2,
        //kurze Achse nach vorn\r
 //     switch_dim(b, d, t, v, d1, d2);\r
 \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 calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
+       if (zeta[1] * zeta[1] * (b * b + d * d) < dist2(b, d, t, v, d1, d2, d3))\r
+               return intQ2A2<FY1Y2_par>(b, d, t, v, d1, d2, d3);\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
+       if (zeta[0] * zeta[0] * (t * t + v * v) < dist2(b, d, t, v, d1, d2, d3))\r
+               return intQ4<f_par>(b, d, t, v, d1, d2, d3);\r
 \r
-       return calcParIntA(b, d, t, v, d1, d2, d3);\r
+       return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
 }\r
 \r
 double cParO4(double b, double d, double t, double v, double d1, double d2,\r
@@ -643,10 +493,10 @@ double cParO4(double b, double d, double t, double v, double d1, double d2,
        switch_dim(b, d, t, v, d1, d2);\r
 \r
        if ((t * t + v * v) < zeta[0] * dist2(b, d, t, v, d1, d2, d3))\r
-               return calcParIntQ(b, d, t, v, d1, d2, d3);\r
+               return intQ4<f_par>(b, d, t, v, d1, d2, d3);\r
 \r
-       if ((b * b + d * d) < zeta[0] * dist2(b, d, t, v, d1, d2, d3))\r
-               return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
+//     if ((b * b + d * d) < zeta[0] * dist2(b, d, t, v, d1, d2, d3))\r
+//             return calcParIntQX1X2(b, d, t, v, d1, d2, d3);\r
 \r
-       return calcParIntA(b, d, t, v, d1, d2, d3);\r
+       return intA4<F_par>(b, d, t, v, d1, d2, d3);\r
 }\r
index 45f22f377e5adf2933009387a0a97bc4e1050d12..2559533c0f03bd15fd2941438714a68fbd7d53ef 100644 (file)
 //double, double, double, double, double, double, double);
 
 // sol = calcParInt.(b,d,t,v,d1,d2,d3);
-double calcParIntA(double, double, double, double, double, double, double);
-double calcParIntQX1X2(double, double, double, double, double, double, double);
-double calcParIntQY1X1(double, double, double, double, double, double, double);
-double calcParIntQY1(double, double, double, double, double, double, double);
-double calcParIntQ(double, double, double, double, double, double, double);
+//double calcParIntA(double, double, double, double, double, double, double);
+//double calcParIntQX1X2(double, double, double, double, double, double, double);
+//double calcParIntQY1X1(double, double, double, double, double, double, double);
+//double calcParIntQY1(double, double, double, double, double, double, double);
+//double calcParIntQ(double, double, double, double, double, double, double);
 
 // sol = calcOrtInt.(b,d,t,v,d1,d2,d3);
-double calcOrtIntA(double, double, double, double, double, double, double);
-double calcOrtIntQX1X2(double, double, double, double, double, double, double);
+//double calcOrtIntA(double, double, double, double, double, double, double);
+//double calcOrtIntQX1X2(double, double, double, double, double, double, double);
 
 //Voll Analytisch
 double cParO1(double, double, double, double, double, double, double, double*);