drand( &tr );
tr = WIDTHA * ( tr - 1.0 ) + LOWA; /*a /= 50.0;*/ #if EXPSC2
tr = exp(tr);
drand( &ti );
tr -= 1.0e-13 * tr * ti; #endif #if TWOINT || THREEINT
k = a + 0.25;
a = k; #endif
v = tr;
a = a + I * v;
qy4 = qy4 + I * v; #endif
#if THREEARG || FOURARG
drand( &tr ); #if PROB /* b=b-1.0; b=a*b;
*/ #if1 /* This makes b <= a, for bdtr. */
a = (a - LOWA) * ( b - 1.0 ) + LOWA; if( b > 1.0 && a > 1.0 )
b -= 1.0; else
{
a += 1.0;
k = a;
a = k;
v = a;
qy4 = v;
} #else/* not 1 */
tr = WIDTHA * ( tr - 1.0 ) + LOWA;
v = tr;
b = v #endif/* not 1 */
/* Half-integer a and b */ /* a=0.5*floor(2.0*a+1.0); b=0.5*floor(2.0*b+1.0);
*/
v = a;
qy4 = v; /*x = (a / (a+b));*/
#else/* not PROB */
tr = WIDTHA * ( tr - 1.0 ) + LOWA; #endif/* not PROB */ #if THREEINT
j = b + 0.25;
b = j; #endif
v = tr;
b = v;
qb = v;
ti = WIDTHA * ( ti - 1.0 ) + LOWA;
v = ti;
b = b + I * v;
qb = qb + I * v; #endif
#if FOURARG
drand( &tr );
tr = WIDTHA * ( tr - 1.0 ) + LOWA; /* for hyp2f1 to ensure c-a-b > -1 */ /* z=c-a-b; if(z<-1.0) c-=1.6*z;
*/
v = tr;
c = v;
qc = v;
drand( &ti );
ti = WIDTHA * ( ti - 1.0 ) + LOWA;
v = ti;
c = c + I * v;
qc = qc + I * v;
#endif
#if VECARG for( j=0; j<3; j++)
{
drand( &x );
x = WIDTH * ( x - 1.0 ) + LOW;
v = x;
dp[j] = v;
q1 = v; /* double number to q type */
lp[j] = q1;
drand( &x );
x = WIDTH * ( x - 1.0 ) + LOW;
v = x;
dq[j] = v;
q1 = v; /* double number to q type */
lq[j] = q1;
} #endif/* VECARG */
/*printf("%.16E %.16E\n", a, x);*/ /* Compute function under test
with math coprocessor set to double precision. */ #if SETFPU
dprec(); #endif
#if TWOARG #if TWOINT
z = FUNC( k, x ); /*z = FUNC( x, k );*/ /*z = FUNC( a, x );*/ #else #if FOURANS
FUNC( a, x, &z, &y2, &y3, &y4 ); #else
z = FUNC( a, x ); #endif #endif #endif
#if THREEARG #if THREEINT
z = FUNC( j, k, x ); #else
z = FUNC( a, b, x ); #endif #endif
#if FOURARG
z = FUNC( a, b, c, x ); #endif
#if VECARG
z = FUNC( dp, dq ); #endif
yr = creal(z);
yi = cimag(z);
q2 = yr + I * yi;
/* handle detected overflow */ if (cabs(z) == MAXNUM)
{
printf("detected overflow "); #if0 #if FOURARG
printf("%.4E %.4E %.4E %.4E %.4E %6ld \n",
a, b, c, x, y, n); #else
printf("%.16E %.4E %.4E %6ld \n", x, a, z, n); #endif #endif
e = 0.0;
m -= 1; goto endlup;
} /* Skip high precision if underflow. */ if( merror == UNDERFLOW ) goto underf;
/* Compute high precision function
with math coprocessor set to long double precision. */ #if SETFPU
ldprec(); #endif
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.