1 // $Id: EvtDiLog.cc,v 1.1 2009/02/18 21:21:33 ryd Exp $
5 #include "EvtGenBase/EvtDiLog.hh"
9 //-----------------------------------------------------------------------------
10 // Implementation file for class : EvtDiLog
12 // 2007-01-23 : Patrick Robbe
13 //-----------------------------------------------------------------------------
15 double EvtDiLog::DiLog( double x ) {
17 double h , t , y , s , a , alfa , b0, b1, b2 ;
18 if ( x == 1. ) h = PI6 ;
19 else if ( x == -1. ) h = -PI12 ;
25 a = -PI3 + HF * ( std::pow( log(-t) , 2 ) -
26 std::pow( log( 1. + 1./t ) , 2 ) ) ;
27 } else if ( t < -1. ) {
31 a = -PI6 + a * ( a + log( 1. + 1./t ) ) ;
32 } else if ( t <= -HF ) {
36 a = -PI6 + a * ( -HF * a + log( 1. + t ) ) ;
40 a = HF * std::pow( log( 1. + t ) , 2 ) ;
41 } else if ( t <= 1. ) {
48 a = PI6 + HF * std::pow( log( t ) , 2 ) ;
55 for ( int i = 19 ; i >= 0 ; --i ) {
56 b0 = C[ i ] + alfa * b1 - b2 ;
61 h = -(s * ( b0 -h * b2 ) + a ) ;