@@ -47,7 +47,7 @@ namespace ql
47
47
vector<TScale> const & p)
48
48
{
49
49
if (!this ->checkCache (mu2,m,p))
50
- {
50
+ {
51
51
if (mu2 < 0 ) throw RangeError (" Bubble::integral" ," mu2 is negative!" );
52
52
53
53
// Normalization
@@ -65,18 +65,18 @@ namespace ql
65
65
cout << " s,m0,m1 = " << p0 << " , " << m0 << " , " << m1 << ql::def << endl;
66
66
this ->_val [0 ] = this ->_val [2 ] = this ->_czero ;
67
67
this ->_val [1 ] = this ->_cone ;
68
- }
68
+ }
69
69
else if (this ->iszero (m0/musq))
70
70
{
71
- if (this ->iszero (Abs ((m1-p0)/musq))) BB1 (this ->_val ,musq,m1); // I(s;0,s) s = m1, DD(4.13)
71
+ if (this ->iszero (Abs ((m1-p0)/musq))) BB1 (this ->_val ,musq,m1); // I(s;0,s) s = m1, DD(4.13)
72
72
else if (this ->iszero (Abs (p0/musq))) BB2 (this ->_val ,musq,m1); // I(0;0,m2)
73
73
else if (this ->iszero (Abs (m1/musq))) BB3 (this ->_val ,musq,m1-TMass (p0)); // I(s;0,0)
74
74
else BB4 (this ->_val ,musq,m1,p0); // I(s;0,m2)
75
75
}
76
76
else if (this ->iszero (Abs (p0/musq))) // deal with special case, s = 0
77
77
BB5 (this ->_val , musq, m0, m1);
78
78
else
79
- BB0 (this ->_val , musq, m0, m1, p0);
79
+ BB0 (this ->_val , musq, m0, m1, p0);
80
80
81
81
this ->storeCache (mu2,m,p);
82
82
}
@@ -111,7 +111,7 @@ namespace ql
111
111
const TMass sqm1 = Sqrt (m1);
112
112
const TOutput bb = TOutput (m0+m1-s);
113
113
const TOutput rtt= Sqrt (bb*bb - this ->_cfour *TOutput (m1*m0));
114
- const TOutput x1 = this ->_chalf *(bb+rtt)/(sqm0*sqm1);
114
+ const TOutput x1 = this ->_chalf *(bb+Sign (bb)* rtt)/(sqm0*sqm1);
115
115
const TOutput x2 = this ->_cone /x1;
116
116
res[0 ] = this ->_ctwo - Log (sqm0*sqm1/mu2) + (m0-m1)/s*Log (sqm1/sqm0) - sqm0*sqm1/s*(x2-x1)*this ->cLn (x1, Sign (Real (x1-x2)));
117
117
res[1 ] = this ->_cone ;
0 commit comments