if( z[1] < 3 ) /* x = 0 is special case */
{ if( n[1] == 0 )
qmov( qone, y ); else
qclear( y ); return(0);
}
z[1] -= 2;
if( n[1] < 3 )
qmov( qone, u ); else
{
qmov( n, ans );
qadd( qone, ans, ans );
qgamma( ans, u );
qdiv( u, qone, u ); /*u = 1.0/gamma(n+1);*/
}
qmov( u, ans ); /*ans = u;*/
qmov( qone, k ); /*k = 1.0;*/
while( ((int) ans[1] - (int) u[1]) < NBITS/2 ) /* 70 */
{
qadd( n, k, t );
qmul( t, k, t ); /*u *= z / (k * (n+k));*/
qdiv( t, z, t );
qmul( t, u, u ); if( (int) u[1] <= 0 )
mtherr( "qin", OVERFLOW );
qadd( u, ans, ans ); /*ans += u;*/
qadd( qone, k, k ); /*k += 1.0;*/
}
/* ans *= exp( n * log( x/2.0 ) );*/
if( n[1] < 3 )
{
qmov( ans, y ); goto done;
}
qmov( x, t );
t[1] -= 1;
qlog( t, u );
qmul( u, n, u );
qexp( u, t );
qmul( ans, t, y );
done: /* exponentially scale */
qexp( x, t );
qdiv( t, y, y );
qsqrt( x, t );
qmul( t, y, y );
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.