@@ -1481,14 +1481,14 @@ BOOST_MATH_GPU_ENABLED T gamma_incomplete_imp_final(T a, T x, bool normalised, b
1481
1481
#ifdef BOOST_MATH_HAS_NVRTC
1482
1482
if (boost::math::is_same_v<T, float >)
1483
1483
{
1484
- init_value = (normalised ? 1 : ::tgammaf (a));
1484
+ init_value = (normalised ? T ( 1 ) : ::tgammaf (a));
1485
1485
}
1486
1486
else
1487
1487
{
1488
- init_value = (normalised ? 1 : ::tgamma (a));
1488
+ init_value = (normalised ? T ( 1 ) : ::tgamma (a));
1489
1489
}
1490
1490
#else
1491
- init_value = (normalised ? 1 : boost::math::tgamma (a, pol));
1491
+ init_value = (normalised ? T ( 1 ) : boost::math::tgamma (a, pol));
1492
1492
#endif
1493
1493
1494
1494
if (normalised || (result >= 1 ) || (tools::max_value<T>() * result > init_value))
@@ -1620,29 +1620,29 @@ BOOST_MATH_GPU_ENABLED T gamma_incomplete_imp_final(T a, T x, bool normalised, b
1620
1620
T gam;
1621
1621
if (boost::math::is_same_v<T, float >)
1622
1622
{
1623
- gam = normalised ? 1 : ::tgammaf (a);
1623
+ gam = normalised ? T ( 1 ) : ::tgammaf (a);
1624
1624
}
1625
1625
else
1626
1626
{
1627
- gam = normalised ? 1 : ::tgamma (a);
1627
+ gam = normalised ? T ( 1 ) : ::tgamma (a);
1628
1628
}
1629
1629
#else
1630
- T gam = normalised ? 1 : boost::math::tgamma (a, pol);
1630
+ T gam = normalised ? T ( 1 ) : boost::math::tgamma (a, pol);
1631
1631
#endif
1632
1632
result = gam - result;
1633
1633
}
1634
- if (p_derivative && x > 0 )
1634
+ if (p_derivative)
1635
1635
{
1636
1636
//
1637
1637
// Need to convert prefix term to derivative:
1638
1638
//
1639
- if (( x < 1 ) && (tools::max_value<T>() * x < *p_derivative))
1639
+ if (x == 0 || (( x < 1 ) && (tools::max_value<T>() * x < *p_derivative) ))
1640
1640
{
1641
1641
// overflow, just return an arbitrarily large value:
1642
1642
*p_derivative = tools::max_value<T>() / 2 ;
1643
1643
}
1644
-
1645
- *p_derivative /= x;
1644
+ else
1645
+ *p_derivative /= x;
1646
1646
}
1647
1647
1648
1648
return result;
@@ -2110,8 +2110,8 @@ BOOST_MATH_GPU_ENABLED T gamma_p_derivative_imp(T a, T x, const Policy& pol)
2110
2110
//
2111
2111
if (x == 0 )
2112
2112
{
2113
- return (a > 1 ) ? 0 :
2114
- (a == 1 ) ? 1 : policies::raise_overflow_error<T>(" boost::math::gamma_p_derivative<%1%>(%1%, %1%)" , nullptr , pol);
2113
+ return (a > 1 ) ? T ( 0 ) :
2114
+ (a == 1 ) ? T ( 1 ) : policies::raise_overflow_error<T>(" boost::math::gamma_p_derivative<%1%>(%1%, %1%)" , nullptr , pol);
2115
2115
}
2116
2116
//
2117
2117
// Normal case:
0 commit comments