17.10.2013 - Adjusted for QNX, PIPeer release for Windows, Remote console
This commit is contained in:
58
pimath.cpp
58
pimath.cpp
@@ -20,8 +20,8 @@
|
||||
#include "pimath.h"
|
||||
|
||||
|
||||
double piJ0(const double & v) {
|
||||
#ifndef PIP_MATH_J0
|
||||
double j0(const double & v) {
|
||||
double x = v;
|
||||
double xsq;
|
||||
double nn;
|
||||
@@ -92,12 +92,14 @@ double j0(const double & v) {
|
||||
q1 = 5428918384092285160.200195092 + xsq * q1;
|
||||
q1 = 493378725179413356211.3278438 + xsq * q1;
|
||||
return p1 / q1;
|
||||
}
|
||||
#else
|
||||
return j0(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double piJ1(const double & v) {
|
||||
#ifndef PIP_MATH_J1
|
||||
double j1(const double & v) {
|
||||
double x = v;
|
||||
double s;
|
||||
double xsq;
|
||||
@@ -172,12 +174,14 @@ double j1(const double & v) {
|
||||
q1 = 1162398708003212287858.529400 + xsq * q1;
|
||||
result = s * x * p1 / q1;
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
return j1(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double piJn(int n, const double & v) {
|
||||
#ifndef PIP_MATH_JN
|
||||
double jn(const int & n, const double & v) {
|
||||
double x = v;
|
||||
double pkm2;
|
||||
double pkm1;
|
||||
@@ -202,18 +206,18 @@ double jn(const int & n, const double & v) {
|
||||
x = -x;
|
||||
}
|
||||
if (n == 0) {
|
||||
result = sg * j0(x);
|
||||
result = sg * piJ0(x);
|
||||
return result;
|
||||
}
|
||||
if (n == 1) {
|
||||
result = sg * j1(x);
|
||||
result = sg * piJ1(x);
|
||||
return result;
|
||||
}
|
||||
if (n == 2) {
|
||||
if (x == 0)
|
||||
result = 0;
|
||||
else
|
||||
result = sg * (2.0 * j1(x) / x - j0(x));
|
||||
result = sg * (2.0 * piJ1(x) / x - piJ0(x));
|
||||
return result;
|
||||
}
|
||||
if (x < 1E-16) {
|
||||
@@ -242,17 +246,19 @@ double jn(const int & n, const double & v) {
|
||||
k = k - 1;
|
||||
} while (k != 0);
|
||||
if (fabs(pk) > fabs(pkm1))
|
||||
ans = j1(x) / pk;
|
||||
ans = piJ1(x) / pk;
|
||||
else
|
||||
ans = j0(x) / pkm1;
|
||||
ans = piJ0(x) / pkm1;
|
||||
result = sg * ans;
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
return jn(n, v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double piY0(const double & v) {
|
||||
#ifndef PIP_MATH_Y0
|
||||
double y0(const double & v) {
|
||||
double x = v;
|
||||
double nn;
|
||||
double xsq;
|
||||
@@ -321,14 +327,16 @@ double y0(const double & v) {
|
||||
q4 = 23928830434997818.57439356652 + xsq * q4;
|
||||
q4 = 4192417043410839973.904769661 + xsq * q4;
|
||||
q4 = 372645883898616588198.9980 + xsq * q4;
|
||||
result = p4 / q4 + 2 / M_PI * j0(x) * log(x);
|
||||
result = p4 / q4 + 2 / M_PI * piJ0(x) * log(x);
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
return y0(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double piY1(const double & v) {
|
||||
#ifndef PIP_MATH_Y1
|
||||
double y1(const double & v) {
|
||||
double x = v;
|
||||
double nn;
|
||||
double xsq;
|
||||
@@ -396,14 +404,16 @@ double y1(const double & v) {
|
||||
q4 = 29549879358971486742.90758119 + xsq * q4;
|
||||
q4 = 5435310377188854170800.653097 + xsq * q4;
|
||||
q4 = 508206736694124324531442.4152 + xsq * q4;
|
||||
result = x * p4 / q4 + 2 / M_PI * (j1(x) * log(x) - 1 / x);
|
||||
result = x * p4 / q4 + 2 / M_PI * (piJ1(x) * log(x) - 1 / x);
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
return y1(v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double piYn(int n, const double & v) {
|
||||
#ifndef PIP_MATH_YN
|
||||
double yn(const int & n, const double & v) {
|
||||
int i;
|
||||
double x = v;
|
||||
double a;
|
||||
@@ -418,15 +428,15 @@ double yn(const int & n, const double & v) {
|
||||
s = -1;
|
||||
}
|
||||
if (n == 0) {
|
||||
result = y0(x);
|
||||
result = piY0(x);
|
||||
return result;
|
||||
}
|
||||
if (n == 1) {
|
||||
result = s * y1(x);
|
||||
result = s * piY1(x);
|
||||
return result;
|
||||
}
|
||||
a = y0(x);
|
||||
b = y1(x);
|
||||
a = piY0(x);
|
||||
b = piY1(x);
|
||||
for (i = 1; i <= n - 1; i++) {
|
||||
tmp = b;
|
||||
b = 2 * i / x * b - a;
|
||||
@@ -434,8 +444,10 @@ double yn(const int & n, const double & v) {
|
||||
}
|
||||
result = s * b;
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
return yn(n, v);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
double randomn(double dv, double sv) {
|
||||
|
||||
Reference in New Issue
Block a user