@@ -471,3 +471,58 @@ module GammaCoverageTests =
471471 let ``Q : digamma ( 100.0 ) for large positive x`` () =
472472 let result = eval <@ Gamma.digamma 100.0 @> :?> float
473473 floatClose Accuracy.medium result 4.600161852 " Expected ψ(100)"
474+
475+ // ========================================
476+ // Additional coverage tests for uncovered lines
477+ // ========================================
478+
479+ [<Fact>]
480+ let ``Q : upperIncompleteRegularized uses gammpapprox for large a ( line 332 ) `` () =
481+ // Line 332: 'T.One - Gamma.gammpapprox a x true when a >= 100.0
482+ let result = eval <@ Gamma.upperIncompleteRegularized 150.0 160.0 @> :?> float
483+ isTrue ( result >= 0.0 && result <= 1.0 ) " Expected valid Q value via gammpapprox"
484+
485+ [<Fact>]
486+ let ``Q : upperIncompleteRegularized uses gcf path for x >= a + 1 ( line 336 ) `` () =
487+ // Line 336: Gamma.gcf a x when x >= a + 1 and a < 100.0
488+ let result = eval <@ Gamma.upperIncompleteRegularized 2.0 5.0 @> :?> float
489+ floatClose Accuracy.medium result 0.0404276 " Expected Q value via gcf"
490+
491+ [<Fact>]
492+ let ``Q : upperIncompleteRegularized with a = 50 , x= 60 uses gammpapprox ( line 332 ) `` () =
493+ // Additional test for line 332 with different values
494+ let result = eval <@ Gamma.upperIncompleteRegularized 120.0 100.0 @> :?> float
495+ isTrue ( result >= 0.0 && result <= 1.0 ) " Expected valid Q for large a"
496+
497+ [<Fact>]
498+ let ``Q : upperIncompleteRegularized with a = 10 , x= 15 uses gcf ( line 336 ) `` () =
499+ // Additional test for line 336
500+ let result = eval <@ Gamma.upperIncompleteRegularized 10.0 15.0 @> :?> float
501+ floatClose Accuracy.medium result 0.0698536607 " Expected Q value"
502+
503+ [<Fact>]
504+ let ``Q : digammaPositive with x = 1e17 uses large x asymptotic path ( line 417 ) `` () =
505+ // Line 417: ln s - half / s - w when s >= limit (1e17)
506+ let result = eval <@ Gamma.digammaPositive 1.0e17 @> :?> float
507+ let expected = log 1.0e17 - 0.5 / 1.0e17
508+ floatClose Accuracy.low result expected " Expected asymptotic digamma for very large x"
509+
510+ [<Fact>]
511+ let ``Q : digamma with x = 1e17 uses large x asymptotic path ( line 469 ) `` () =
512+ // Line 469: log<'T> s - half / s - w when s >= limit (1e17)
513+ let result = eval <@ Gamma.digamma 1.0e17 @> :?> float
514+ let expected = log 1.0e17 - 0.5 / 1.0e17
515+ floatClose Accuracy.low result expected " Expected asymptotic digamma for very large x"
516+
517+ [<Fact>]
518+ let ``Q : digamma with x = 5e17 uses asymptotic expansion`` () =
519+ // Additional test for large x path
520+ let result = eval <@ Gamma.digamma 5.0e17 @> :?> float
521+ isTrue ( result > 39.0 ) " Expected large digamma value for very large x"
522+
523+ [<Fact>]
524+ let ``Q : digammaPositive with x = 1e18 uses extreme asymptotic path`` () =
525+ // Test with even larger value
526+ let result = eval <@ Gamma.digammaPositive 1.0e18 @> :?> float
527+ let expected = log 1.0e18
528+ floatClose Accuracy.low result expected " Expected asymptotic behavior"
0 commit comments