...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
#include <boost/math/special_functions/heuman_lambda.hpp>
namespace boost { namespace math { template <class T1, class T2> calculatedresulttype heuman_lambda(T1 k, T2 phi); template <class T1, class T2, class Policy> calculatedresulttype heuman_lambda(T1 k, T2 phi, const Policy&); }} // namespaces
This function evaluates the Heuman Lambda Function Λ_{0}(φ, k)
The return type of this function is computed using the __arg_pomotion_rules when the arguments are of different types: when they are the same type then the result is the same type as the arguments.
Requires 1 <= k <= 1, otherwise returns the result of domain_error (outside this range the result would be complex).
The final Policy argument is optional and can be used to control the behaviour of the function: how it handles errors, what level of precision to use etc. Refer to the policy documentation for more details.
Note that there is no complete analogue of this function (where φ = π / 2) as this takes the value 1 for all k.
These functions are trivially computed in terms of other elliptic integrals and generally have very low error rates (a few epsilon) unless parameter φ is very large, in which case the usual trigonometric function argumentreduction issues apply.
Table 6.69. Error rates for heuman_lambda
GNU C++ version 7.1.0 
GNU C++ version 7.1.0 
Sun compiler version 0x5150 
Microsoft Visual C++ version 14.1 


Elliptic Integral Jacobi Zeta: Mathworld Data 
Max = 0ε (Mean = 0ε) 
Max = 1.89ε (Mean = 0.887ε) 
Max = 1.89ε (Mean = 0.887ε) 
Max = 1.08ε (Mean = 0.734ε) 
Elliptic Integral Heuman Lambda: Random Data 
Max = 0ε (Mean = 0ε) 
Max = 3.82ε (Mean = 0.609ε) 
Max = 3.82ε (Mean = 0.608ε) 
Max = 2.12ε (Mean = 0.588ε) 
The tests use a mixture of spot test values calculated using values calculated at wolframalpha.com, and random test data generated using MPFR at 1000bit precision and a deliberately naive implementation in terms of the Legendre integrals.
The function is then implemented in terms of Carlson's integrals R_{J} and R_{F} using the relation:
This relation fails for φ >= π/2 in which case the definition in terms of the Jacobi Zeta is used.