1919// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
2020// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2121// SOFTWARE.
22+ //
23+ // Type definitions added for Observable Plot
2224
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 ;
2931 if ( p <= 0 ) return 0 ;
3032 if ( p >= 1 ) return 1 ;
3133 if ( a >= 1 && b >= 1 ) {
@@ -46,10 +48,10 @@ export function ibetainv(p, a, b) {
4648 if ( p < t / w ) x = Math . pow ( a * w * p , 1 / a ) ;
4749 else x = 1 - Math . pow ( b * w * ( 1 - p ) , 1 / b ) ;
4850 }
49- afac = - gammaln ( a ) - gammaln ( b ) + gammaln ( a + b ) ;
51+ const afac = - gammaln ( a ) - gammaln ( b ) + gammaln ( a + b ) ;
5052 for ( ; j < 10 ; j ++ ) {
5153 if ( x === 0 || x === 1 ) return x ;
52- err = ibeta ( x , a , b ) - p ;
54+ err = ( ibeta ( x , a , b ) as number ) - p ;
5355 t = Math . exp ( a1 * Math . log ( x ) + b1 * Math . log ( 1 - x ) + afac ) ;
5456 u = err / t ;
5557 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) {
6062 return x ;
6163}
6264
63- export function ibeta ( x , a , b ) {
65+ export function ibeta ( x : number , a : number , b : number ) {
6466 // Factors in front of the continued fraction.
65- var bt =
67+ const bt =
6668 x === 0 || x === 1 ? 0 : Math . exp ( gammaln ( a + b ) - gammaln ( a ) - gammaln ( b ) + a * Math . log ( x ) + b * Math . log ( 1 - x ) ) ;
6769 if ( x < 0 || x > 1 ) return false ;
6870 if ( x < ( a + 1 ) / ( a + b + 2 ) )
@@ -72,15 +74,15 @@ export function ibeta(x, a, b) {
7274 return 1 - ( bt * betacf ( 1 - x , b , a ) ) / b ;
7375}
7476
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 ;
8486
8587 // These q's will be used in factors that occur in the coefficients
8688 if ( Math . abs ( d ) < fpmin ) d = fpmin ;
@@ -112,22 +114,22 @@ export function betacf(x, a, b) {
112114 return h ;
113115}
114116
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 = [
118120 76.18009172947146 , - 86.5053203294167 , 24.01409824083091 , - 1.231739572450155 , 0.1208650973866179e-2 ,
119121 - 0.5395239384953e-5
120122 ] ;
121- var ser = 1.000000000190015 ;
122- var xx , y , tmp ;
123+ let ser = 1.000000000190015 ;
124+ let xx , y , tmp ;
123125 tmp = ( y = xx = x ) + 5.5 ;
124126 tmp -= ( xx + 0.5 ) * Math . log ( tmp ) ;
125127 for ( ; j < 6 ; j ++ ) ser += cof [ j ] / ++ y ;
126128 return Math . log ( ( 2.506628274631 * ser ) / xx ) - tmp ;
127129}
128130
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 ) ;
131133 x = Math . sqrt ( ( dof * ( 1 - x ) ) / x ) ;
132134 return p > 0.5 ? x : - x ;
133135}
0 commit comments