19
19
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
// SOFTWARE.
22
+ //
23
+ // Type definitions added for Observable Plot
22
24
23
- export function ibetainv ( p , a , b ) {
24
- var EPS = 1e-8 ;
25
- var a1 = a - 1 ;
26
- var b1 = b - 1 ;
27
- var j = 0 ;
28
- var lna , lnb , pp , t , u , err , x , al , h , w , afac ;
25
+ export function ibetainv ( p : number , a : number , b : number ) {
26
+ const EPS = 1e-8 ;
27
+ const a1 = a - 1 ;
28
+ const b1 = b - 1 ;
29
+ let j = 0 ;
30
+ let lna , lnb , pp , t , u , err , x , al , h , w ;
29
31
if ( p <= 0 ) return 0 ;
30
32
if ( p >= 1 ) return 1 ;
31
33
if ( a >= 1 && b >= 1 ) {
@@ -46,10 +48,10 @@ export function ibetainv(p, a, b) {
46
48
if ( p < t / w ) x = Math . pow ( a * w * p , 1 / a ) ;
47
49
else x = 1 - Math . pow ( b * w * ( 1 - p ) , 1 / b ) ;
48
50
}
49
- afac = - gammaln ( a ) - gammaln ( b ) + gammaln ( a + b ) ;
51
+ const afac = - gammaln ( a ) - gammaln ( b ) + gammaln ( a + b ) ;
50
52
for ( ; j < 10 ; j ++ ) {
51
53
if ( x === 0 || x === 1 ) return x ;
52
- err = ibeta ( x , a , b ) - p ;
54
+ err = ( ibeta ( x , a , b ) as number ) - p ;
53
55
t = Math . exp ( a1 * Math . log ( x ) + b1 * Math . log ( 1 - x ) + afac ) ;
54
56
u = err / t ;
55
57
x -= t = u / ( 1 - 0.5 * Math . min ( 1 , u * ( a1 / x - b1 / ( 1 - x ) ) ) ) ;
@@ -60,9 +62,9 @@ export function ibetainv(p, a, b) {
60
62
return x ;
61
63
}
62
64
63
- export function ibeta ( x , a , b ) {
65
+ export function ibeta ( x : number , a : number , b : number ) {
64
66
// Factors in front of the continued fraction.
65
- var bt =
67
+ const bt =
66
68
x === 0 || x === 1 ? 0 : Math . exp ( gammaln ( a + b ) - gammaln ( a ) - gammaln ( b ) + a * Math . log ( x ) + b * Math . log ( 1 - x ) ) ;
67
69
if ( x < 0 || x > 1 ) return false ;
68
70
if ( x < ( a + 1 ) / ( a + b + 2 ) )
@@ -72,15 +74,15 @@ export function ibeta(x, a, b) {
72
74
return 1 - ( bt * betacf ( 1 - x , b , a ) ) / b ;
73
75
}
74
76
75
- export function betacf ( x , a , b ) {
76
- var fpmin = 1e-30 ;
77
- var m = 1 ;
78
- var qab = a + b ;
79
- var qap = a + 1 ;
80
- var qam = a - 1 ;
81
- var c = 1 ;
82
- var d = 1 - ( qab * x ) / qap ;
83
- var m2 , aa , del , h ;
77
+ export function betacf ( x : number , a : number , b : number ) {
78
+ const fpmin = 1e-30 ;
79
+ let m = 1 ;
80
+ const qab = a + b ;
81
+ const qap = a + 1 ;
82
+ const qam = a - 1 ;
83
+ let c = 1 ;
84
+ let d = 1 - ( qab * x ) / qap ;
85
+ let m2 , aa , del , h ;
84
86
85
87
// These q's will be used in factors that occur in the coefficients
86
88
if ( Math . abs ( d ) < fpmin ) d = fpmin ;
@@ -112,22 +114,22 @@ export function betacf(x, a, b) {
112
114
return h ;
113
115
}
114
116
115
- export function gammaln ( x ) {
116
- var j = 0 ;
117
- var cof = [
117
+ export function gammaln ( x : number ) {
118
+ let j = 0 ;
119
+ const cof = [
118
120
76.18009172947146 , - 86.5053203294167 , 24.01409824083091 , - 1.231739572450155 , 0.1208650973866179e-2 ,
119
121
- 0.5395239384953e-5
120
122
] ;
121
- var ser = 1.000000000190015 ;
122
- var xx , y , tmp ;
123
+ let ser = 1.000000000190015 ;
124
+ let xx , y , tmp ;
123
125
tmp = ( y = xx = x ) + 5.5 ;
124
126
tmp -= ( xx + 0.5 ) * Math . log ( tmp ) ;
125
127
for ( ; j < 6 ; j ++ ) ser += cof [ j ] / ++ y ;
126
128
return Math . log ( ( 2.506628274631 * ser ) / xx ) - tmp ;
127
129
}
128
130
129
- export function qt ( p , dof ) {
130
- var x = ibetainv ( 2 * Math . min ( p , 1 - p ) , 0.5 * dof , 0.5 ) ;
131
+ export function qt ( p : number , dof : number ) {
132
+ let x = ibetainv ( 2 * Math . min ( p , 1 - p ) , 0.5 * dof , 0.5 ) ;
131
133
x = Math . sqrt ( ( dof * ( 1 - x ) ) / x ) ;
132
134
return p > 0.5 ? x : - x ;
133
135
}
0 commit comments