mirror of
https://github.com/storytold/gridcraft.git
synced 2026-10-31 07:38:32 +00:00
G711: preserve small density term at huge degrees
This commit is contained in:
1 parent
0435ff50f9
commit
4e5c86d842
2 files changed
+3
-2
No files matched your search
@@ -26,7 +26,7 @@ fn t_pdf(t: f64, v: f64) -> f64 {
|
||||
} else {
|
||||
ln_gamma(z + 0.5) - ln_gamma(z)
|
||||
};
|
||||
(log_gamma_ratio - 0.5 * (v * std::f64::consts::PI).ln() - (v + 1.0) / 2.0 * (1.0 + t * t / v).ln()).exp()
|
||||
(log_gamma_ratio - 0.5 * (v * std::f64::consts::PI).ln() - (v + 1.0) / 2.0 * (t * t / v).ln_1p()).exp()
|
||||
}
|
||||
|
||||
/// t ≥ 0 with P(T > t) = q, q in (0, 0.5].
|
||||
|
||||
@@ -366,7 +366,7 @@ fn t_chi_f() {
|
||||
close_tol(ev("T.DIST.RT", vec![n(1.959999998), n(60.0)]), 0.027322465, D7);
|
||||
close_tol(ev("TDIST", vec![n(1.959999998), n(60.0), n(2.0)]), 0.054644930, D7);
|
||||
is_err(ev("TDIST", vec![n(-1.0), n(60.0), n(2.0)]), CellError::Num);
|
||||
is_err(ev("T.DIST", vec![n(1.0), n(0.0), b(true)]), CellError::Num);
|
||||
is_err(ev("T.DIST", vec![n(1.0), n(0.0), b(true)]), CellError::Div0);
|
||||
close_tol(ev("T.INV", vec![n(0.75), n(2.0)]), 0.8164966, D7);
|
||||
close_tol(ev("T.INV", vec![n(0.25), n(2.0)]), -0.8164966, D7);
|
||||
close_tol(ev("T.INV.2T", vec![n(0.546449), n(60.0)]), 0.606533, D7);
|
||||
@@ -408,6 +408,7 @@ fn t_chi_f() {
|
||||
fn t_density_is_stable_for_large_degrees() {
|
||||
close_tol(ev("T.DIST", vec![n(0.0), n(100_000_000.0), b(false)]), 0.398942279404077, 1e-12);
|
||||
close_tol(ev("T.DIST", vec![n(0.0), n(10_000_000_000.0), b(false)]), 0.3989422803914591, 1e-12);
|
||||
close_tol(ev("T.DIST", vec![n(1.0), n(10_000_000_000_000_000.0), b(false)]), 0.24197072451914337, 1e-12);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in new issue
Block a user