U
    KvfY                  g  @   s  d Z ddlmZ ddlZddlZddlZddlm	Z	 ej
Z
dZdddd	d
gdddddgdddddgdddddgdddddgdd d!d"d#gd$d%d&d'd(gd)d*d+d,d-gd.d/d0d1d2gd3d4d5d6d7gd8d9d:d;d<gd=d>d?d@dAgdBdCdDdEdFgdGdHdIdJdKgdLdMdNdOdPgdQdRdSdTdUgdVdWdXdYdZgd[d\d]d^d_gd`dadbdcddgdedfdgdhdigdjdkdldmdngdodpdqdrdsgdtdudvdwdxgdydzd{d|d}gd~e
fddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgde
fddddgd ddddgddddd	gd
ddddgdddddgdddddgdddddgddd d!d"gd#d$d%d&d'gd(d)d*d+d,gd-d.d/d0d1gd2d3d4d5d6gd7d8d9d:d;gd<d=d>d?d@gdAdBdCdDdEgdFdGdHdIdJgdKdLdMdNdOgdPdQdRdSdTgdUdVdWdXdYgdZd[d\d]d^gd_d`dadbdcgdddedfdgdhgdidjdkdldmgdndodpdqdrgdsdtdudvdwgdxe
fdydzd{d|gd}d~dddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdÐdĐdŐdƐdgdȐdɐdʐdːdgd͐dΐdϐdАdgdҐdӐdԐdՐdgdאdؐdِdڐdgdܐdݐdސdߐdgdddddgdddddgdddddgdddddgde
fddddgdddddgdd dddgdddddgd	d
dddgdddddgdddddgdddddgdddd d!gd"d#d$d%d&gd'd(d)d*d+gd,d-d.d/d0gd1d2d3d4d5gd6d7d8d9d:gd;d<d=d>d?gd@dAdBdCdDgdEdFdGdHdIgdJdKdLdMdNgdOdPdQdRdSgdTdUdVdWdXgdYdZd[d\d]gd^d_d`dadbgdcdddedfdggdhdidjdkdlgdmdndodpdqgdre
fdsdtdudvgdwdxdydzd{gd|d}d~ddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgddÐdĐdŐdgdǐdȐdɐdʐdgd̐d͐dΐdϐdgdѐdҐdӐdԐdgd֐dאdؐdِdgdېdܐdݐdސdgdddddgdddddgdddddgde
fddddgdddddgdddddgddd ddgdddddgdd	d
ddgdddddgdddddgdddddgddddd gd!d"d#d$d%gd&d'd(d)d*gd+d,d-d.d/gd0d1d2d3d4gd5d6d7d8d9gd:d;d<d=d>gd?d@dAdBdCgdDdEdFdGdHgdIdJdKdLdMgdNdOdPdQdRgdSdTdUdVdWgdXdYdZd[d\gd]d^d_d`dagdbdcdddedfgdgdhdidjdkgdldmdndodpgdqe
fdrdsdtdugdvdwdxdydzgd{d|d}d~dgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddÐdĐdgdƐdǐdȐdɐdgdːd̐d͐dΐdgdАdѐdҐdӐdgdՐd֐dאdؐdgdڐdېdܐdݐdgdߐddddgdddddgdddddgdddddgde
fddddgdddddgdddd dgdddddgddd	d
dgdddddgdddddgdddddgdddddgd d!d"d#d$gd%d&d'd(d)gd*d+d,d-d.gd/d0d1d2d3gd4d5d6d7d8gd9d:d;d<d=gd>d?d@dAdBgdCdDdEdFdGgdHdIdJdKdLgdMdNdOdPdQgdRdSdTdUdVgdWdXdYdZd[gd\d]d^d_d`gdadbdcdddegdfdgdhdidjgdkdldmdndogdpdqdrdsdtgdue
fdvdwdxdygdzd{d|d}d~gdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgddddÐdgdŐdƐdǐdȐdgdʐdːd̐d͐dgdϐdАdѐdҐdgdԐdՐd֐dאdgdِdڐdېdܐdgdސdߐdddgdddddgdddddgdddddgdddddgde
fddddgddddd gdddddgdddd	d
gdddddgdddddgdddddgdddddgdd d!d"d#gd$d%d&d'd(gd)d*d+d,d-gd.d/d0d1d2gd3d4d5d6d7gd8d9d:d;d<gd=d>d?d@dAgdBdCdDdEdFgdGdHdIdJdKgdLdMdNdOdPgdQdRdSdTdUgdVdWdXdYdZgd[d\d]d^d_gd`dadbdcddgdedfdgdhdigdjdkdldmdngdodpdqdrdsgdtdudvdwdxgdye
fdzd{d|d}gd~ddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdddddgdĐdŐdƐdǐdgdɐdʐdːd̐dgdΐdϐdАdѐdgdӐdԐdՐd֐dgdؐdِdڐdېdgdݐdސdߐddgdddddgdddddgdddddgdddddgdddddgde
fddddgi2ad~ddxddrddqdduddydgaed dddddde
g add Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZeeZde_ dd Zdd Zdd ZeeZd e_ d!d" ZdS (#  a#  
Implementation of Gleason's (1999) non-iterative upper quantile
studentized range approximation.

According to Gleason this method should be more accurate than the
AS190 FORTRAN algorithm of Lund and Lund (1983) and works from .5
<= p <= .999 (The AS190 only works from .9 <= p <= .99).

It is more efficient then the Copenhaver & Holland (1988) algorithm
(used by the _qtukey_ R function) although it requires storing the A
table in memory. (q distribution) approximations in Python.

see:
  Gleason, J. R. (1999). An accurate, non-iterative approximation
    for studentized range quantiles. Computational Statistics &
    Data Analysis, (31), 147-158.

  Gleason, J. R. (1998). A table of quantile points of the
    Studentized range distribution.
    http://www.stata.com/stb/stb46/dm64/sturng.pdf
    )lrangeN)	fminboundz0.2.3)皙?       @gw	g8g"qH?g$/)r         @gfOg2Vvg,/F?g{=گ)r         @g9oYgW' g8.I?g;y	)r         @gs4<)g襹N gޡf*X?g<W )r         @gnX g9f`gՇަm?g)ÉQ߰)r         @g* gm3wvgW?gfH 9,)r          @g'A M gogk9Kj?gLa)r         "@g,\Ȗg]'` g,d{9yi?gj))r         $@gj̸g4T7g {)?gzycԦ)r         &@g6?gVQegvm?g)5g)r         (@g)gL}^gA&4?g0ե)r         *@gQӰ1g[g.?2?g,w)r         ,@gg#g2b g&$?g ck)r         .@gBgZ{v g.`?gF)r         0@g^sog=i	gZ=	!?gL)r         1@gg:og.Jԏ?g}G)r         2@gZ!g-G gd[?go)r         3@g@C3Ug	 g%,p?g())r         4@g1Hig*TYgE)%?g.٦)r         8@geA	-gLp3 gwb?gsÄ])r         >@gүM=g!&g[{zp?g'tT)r         D@gtNga/t g棝?g)r         N@gX0ÈgU=Yg&7?grMld)r         ^@geb.g7gF]Z\?g@)r   g%Tg%#!ҎgV>9`?g]cI)      ?r   gu3AgtTgR5?g hg)r   r   g^?gOW,Ag 5?gfOio3f)r   r   g&SEgSA%\gG^?g[Aze)r   r   g'tgrc渿gB?g/:e)r   r	   g7{yg%"g}?gUVe)r   r
   g(|H^ggݸgSu*?gFcXe)r   r   gVogЈg<X8\f?gm ,e)r   r   gccg*kg1^L?gM>we)r   r   gg(rfg?gid)r   r   g9<g`񻉸gBggaq?gm0$Xe)r   r   gg#i-g?j;?glke)r   r   g|H(Mgs|ZDgB QK?g$$e)r   r   g^"FgMFghqJ?g|d)r   r   gRMkgjg:j5?g#e)r   r   g3`{g40Ngɋ1?g*e)r   r   gmg)2Wηg7ؠ?g#̓d)r   r   gj;gO#V\巿gW)F%#?g)Td)r   r   gwyg|ݯNٷgXV?gYkdd)r   r   g-g<goC?g8YĤd)r   r   g'4*gXhWd.̷g#?g[ed)r   r   gzg	Dجѷgsk+?gΎe)r   r   gB"!gr_ߋg'm?g	F7 e)r   r   ggh%gJqigE
?g:1Xe)r   r   g6gAy-N귿g@~?gqi=er   gdn
%g:I>ȷgvH?gSr(e)皙?r   g80gY0xڸgqqϣũ?g&/a)r   r   g1,g 	X۴g`b2?gkcu\)r   r   g")g8Hgla=?gZ%IX)r   r   g^0ŵgrg8Qf?geS4VV)r   r	   glvgPjg|[Y?g.@XIU)r   r
   gu^g̬gD+
k?g=n>ST)r   r   glgqGQg?G[ސ?g齥S)r   r   ggKgVa?gn`Ѫ(S)r   r   gZg,	&g͵;?g R)r   r   gbASg%Ug_P/g?g7dQR)r   r   gPbcgLg?p?gP\R)r   r   gz(g[6g`Hŏ?g<nB:R)r   r   gL!g?tdgo	YHA?g"R)r   r   g{-مg:a'gw?g+";?R)r   r   gpg8xwǥg& b̍?gS<R)r   r   gdV#gRktg
ޢ?g2R)r   r   g63ig	+gI#?g_MR)r   r   g#迂gLy餿gJӝc?g3R)r   r   gJY$gg)KWL?gKHR)r   r   g݁g<?[g3U)?gIR)r   r   g3}gOSgVPi?glWTR)r   r   gMqJzg:gki!??gR)r   r   g=wgf#7g;ԨB?g/0!S)r   r   gֿ>rg4#̡gq:?g~woSr   ga,mg+Nug8>uE?g5`BT)      ?r   g8C=kgjgw۸4?g2=ȱZ`)r   r   g9gK>.g'oʕ?ga˓Y)r   r   g8(.gD챎gİ?gʑ*9T)r   r   gVDg
D}#gm(n?g˟R)r   r	   g:g#NG4g֨?gcǴQDtP)r   r
   g6Wg~sg;?gvq,ۡN)r   r   go*69gCIJ2gi?glM)r   r   ghgT~ǥg	d?g-\K)r   r   g>g͋\ğgtR̀?g&kK)r   r   gYIܙg,^gV
%͇?g	o_tJ)r   r   gfg"eܢgן??g %J)r   r   gRڏgف-g%͆?g[ I)r   r   g%gNg\Cg)q?g'<~I)r   r   gkS!gDyZgv;&?gSXI)r   r   gARͅgZ9gۼ{?gX~?I)r   r   gQ>gMSDg+3k?gRġa1I)r   r   gg.0-ڟg"-?gFKX+I)r   r   gIkb~gll ?g}^{k?g$A-+I)r   r   gc}glv`xNghO?gs6/I)r   r   g7wgIN߶g	g?gۆ_I)r   r   gpg[ךzgEbn?g0	*I)r   r   g	`ig.Cgý?g_GqjJ)r   r   g mbg+^gW%xM?gBP9iNK)r   r   gPӗZg^:gm?gwTaLr   g.Qg-sg:?gBX8JfM)皙?r   g`4gc֨g|o?gtZ_)r    r   g63[HgܳgICP?gh)5UW)r    r   gבgAS	g;K?g R)r    r   g$%@DIg~EݬgC?gvO)r    r	   gPtg|gwkv?gHK)r    r
   gx߿g@gܒ,|?g{nzI)r    r   g*߿gGXgօچ?gvtG)r    r   gc[߿gУge8?glIXF)r    r   g'H߿g]&gTʭ?gmvE)r    r   g,k߿g򇉡g?gE)r    r   gNj]o߿g."gחQ?geԑƍD)r    r   gL+a߿gM_2៿giV(oׂ?gf=:D)r    r   g TCU߿gg럞gu?gK?C)r    r   g1<꣟K߿gcWgLeV%?gbo7C)r    r   gx |B߿g5d{g)t-?gyC)r    r   gp:߿gWSLƛg嚮?g[#YC)r    r   gd̨3߿gÏ7gEBN?gW>C)r    r   g+y-߿gMqfg,s]?g.C)r    r   g)i"(߿g̺,әgQCXu??g-C)r    r   gHG߿g/LgER7?g[yEEC)r    r   g0t^߿gm:3YgPŀ?gp<D)r    r   gd_H޿gEĔgSؾ?gv_.D)r    r   g؈J޿gĭTg@?gdҴE)r    r   gN޿gFscekgoH4?gRQ	iVFr    g}N޿gk'A<ߐgP _,?gJsPJG)333333?r   gX_g-i)g[?g`)r!   r   g}[߿gV?ʳgq6vՓ?gY'W3	V)r!   r   gH޿giVg&%@?g&p*P)r!   r   g}Ɯ_NݿgR>~g@7@?gFEK)r!   r	   gGܿg0!gl0ԇ?g@G)r!   r
   gd̂ܿg|1g(ba}?g%E)r!   r   gU`Gܿgz8gqWN?gyvaTC)r!   r   guܿgL^g?u?s?gB)r!   r   g羀ۿgzjg1+_yq?g:4 A)r!   r   gۿgE쟿g 5T?g"wx@)r!   r   gJۿg:ugy݀	?gɢb @)r!   r   g jۿgb)eg+uQ?gq V?)r!   r   gg[߱ۿg>gmI~?g!B>)r!   r   gۿg(gJ]}?gLTT>)r!   r   gV DۿgzoJg7S	&}?g}[>)r!   r   g?{ۿg)@g
j}>|?g<W>>)r!   r   gtzbnqۿg'W}ghsQ|?g|$i1>)r!   r   gd'hۿg.{gЖg⴮|?gFû0>)r!   r   g_`ۿg6kD$6g+{?gk9>)r!   r   gel CGۿg>kXgJ%{?g6t>)r!   r   gLE-ۿg1zggTz?g	zY?)r!   r   gI$kۿg6䐿g֥ibz?gYksE@)r!   r   gDzڿg*x{0gdh
z?ggjA)r!   r   g]gXڿgmV⋿gAf{i{?guAr!   gy_mdڿgo.h,?gz*	 |?g醁_B)?      ?gg<8g`?g]ng)r"   r   gy giDʧԸg#Q?g.dT])r"   r   gwvܿgsy³g8l?gà`T)r"   r   gO=/*ڿg/<g+?g՞#O)r"   r   g!pp"
ڿg_ŖARgP_?g<SXG)r"   r	   g*KKcٿgh
gC{?gD)r"   r
   gpؿg%_Yg!/?gCA)r"   r   g1YhWؿgZ'g5Y?g{>)r"   r   g^w+qؿg-ig ?gg	=)r"   r   go@ؿgR gP0S}?g;1D;)r"   r   g&ؿg)xYxgن]j{?g2	8)r"   r   gxN#
ؿgzg͈`Fz?gqA7)r"   r   gr9|Ѵ׿gygSsLy?g a7)r"   r   gBdF׿gNቘg7V3Fx?g%$C, 6)r"   r   gO׿gogT=gzߵÕw?g쎁A6)r"   r   gd7Y׿ge2$gVwSiw?g036)r"   r   g^VD׿g&égR2v?gtqw6)r"   r   g<ե[э׿gHjӔg`Y"cv?giy5)r"   r   g׿gu\xՓg	
1u?gu.`5)r"   r   guxs׿g̷ΓgPnNv?gG6)r"   r   gcCT׿gng,ou?g2,f6)r"   r   gHʖ3׿g XOtg"Ut?gajP7)r"   r   g:,׿gO۴gLy[WEu?gFm9)r"   r   g.ֿgH"	g.ȳ+t?gC?9)r"   r   g#Z&wֿgCW-g'b\u?g16Gƚ<r"   gꃁ|ֿg2{g:sWv?gcr=)ffffff?r#   ggXR-gzLl?g!Qmfg)r$   r   gx^9޿g?gŃw?gI_)r$   r   gmlFdٿg(PgՈ7?g@kaS)r$   r   gSxv׿g%9Vg/ so?g_kk}M)r$   r   gVr^ֿgT;Ags K?g#M C)r$   r	   gտg I7ag4˻?gm*T4@)r$   r
   g7b$_Fտg;s}g=Dd?g5Ғ;)r$   r   gj<Կg6gk}i|?g@r7)r$   r   g썑OTԿg2>gN'z?g񟥚u5)r$   r   gJmԿgSK)՝gw?gG2)r$   r   g쨳ӿg}W~gTu?g?ެ=$1)r$   r   gMS'Lӿg
CA酪gP3Ct?g[~0e0)r$   r   g6ӿgLog5?kRt?gAȤ0)r$   r   gNh-|ӿgvgæ=r?g8-)r$   r   g:dZB^ӿg]OCэgxFnܙ`r?g˖vd.)r$   r   gdSԔFӿg\4⤔g<^r?g~;T/)r$   r   g$6z6ӿg).jg-7֖0,q?g;1-)r$   r   g@ӿg[1gAnq?gK'$/)r$   r   gӿg)'(.gE1np?g( #-)r$   r   gbߝҿgi2]÷gwhep?g	]W/)r$   r   gJ]iҿg[@fgb\j*p?gG8v/)r$   r   g!ҿgln,FZg"p?gRZ1)r$   r   g\ rҿg=\g7UKo?gY>1)r$   r   g.7Aҿgƾg@o?g M2)r$   r   go'ҿge Rg۩o?g:i 3r$   gʣѿggeVq?g[ؼ6)333333?r#   gߐzg>#gu3H?gZH[g)r%   r   gݿgIҸg#"?g35\)r%   r   g Cb}ؿgS>gґ?gS)r%   r   g^տgb[Kgi<?g
;arhK)r%   r   g?{sVԿgY۹wg=?gfPAA)r%   r	   g0oQ^9PӿgxIgN__?gQR<)r%   r
   gpbURҿgcLWg
<0t~?gf5|8)r%   r   g9ҿg񮉣̡gdy?g'N:3)r%   r   g9bFIѿgV7ݢgķrv?gs()0)r%   r   gK"npѿgK' gVqt?g͊:,)r%   r   g_.ѿg3ƚgeIbs?gdYBP*)r%   r   gDпgigIB r?g&)bv*)r%   r   g#пgo:.Ug\ҕp?gƤ()r%   r   g(пgRXЕgf#p?gXNz]')r%   r   gEuFпg\4Yeg?.|o?g	g]()r%   r   g*0=Hpпg4J|WgZfmm?gG%)r%   r   gRпg8ؼ͒gP+5m?g^x&)r%   r   g`tdA5пg;Զlgju]Dm?g~m()r%   r   gH&пg[gsk?gL%\&)r%   r   gA	пg<cйg?;.1k?g*i&)r%   r   g`4Ͽg,6W
g%lOj?g?()r%   r   g8BϿg:	2",qgRr42j?g<Xnq]*)r%   r   gAοgu1g(6h?gb*)r%   r   g˳ec`οg=l򋃿g,5i?gie:.)r%   r   g-D#Ϳg1zgLp'j?gC!0r%   g%T>3qͿg݁C}{g@Rj?gF31)Gz?r#   gv&lgKbh6g7ʠex?gu#|g)r&   r   gXݿg{Dg@@6?g>Xw\)r&   r   gȐL׿g#eIg,=(D?gS)r&   r   g/YkԿg\xZCg@KĈ?g(
F)r&   r   gÁҿgtMg뻁?g÷{wB)r&   r	   gvѿg`Eåg==}?g.Ō4)r&   r
   gpۙ~пg/X**g\O|?g8nv|5)r&   r   gϿg$5_Rg:Lv?gRY-)r&   r   gP *Ͽgf-2g3/r?g]*k")r&   r   gŨGοgP-g>a!q?g@")r&   r   g5Ϳgc!fgom;=	o?gb^* )r&   r   geͿg	9gؑ o?gbPCa#)r&   r   go\\̿g{{5gOrk?gD&M )r&   r   gC榷i̿gbg~ag i5i?gWW8)r&   r   g̿g,~ʓg@!i?gd޶7 )r&   r   gN$˿gɜrU-gMQGh?g&)r&   r   g=w&˿gsݑgO90g?gO#}Tv)r&   r   gL<TX˿g	EKglbV0g?gw )r&   r   g.˿g_T3Iqg5z'f?gwh6)r&   r   gXʿg];/agu;f?gg&!)r&   r   gyʿgmEgm;>e?gx!)r&   r   g{6ɿg>ig4,c?d?g*bE#)r&   r   gZqbɿgggfQXIe?gvqm &)r&   r   gC
5ȿg/tg*-e?g<LW()r&   r   gJ`CDUȿg-ggve?g9(r&   g[ǿgqOqygr}qe?g,*)ףp=
?r#   gj1gZF7gf\q8qw?gNIyg)r'   r   gz8rܿgV.Dg|/3Վ?g<\)r'   r   g"5=ֿg@t\g<KO9:?g.Q)r'   r   gӿg&gǒP
(?gxH)r'   r   g+ ѿg$VZӦ媿gٱcG?gNQ֋@)r'   r	   gRkпg[|[;gmsq~?gY6)r'   r
   g4,οg&YEgјG3|?gLr6)r'   r   gҗͿgEg]Ov?g/)r'   r   g]̿gEg`8	9&s?g?M&)r'   r   g,˿g
b3gyMNp?g'x7!)r'   r   gTO˿g<gX`n?g~ )r'   r   g"ԍʿg!%}gRܚgl?g: )r'   r   gSI5%ʿgS&ǲg];uh?gr.:3)r'   r   g;ɿgi~}gmg?gKW)r'   r   gHjɿgUBgFaf?g*<)=)r'   r   g V8ɿgp^EBfg=ڵ(6f?gM }-)r'   r   g.G,ȿgkgI)e?gu3)r'   r   g:ȿg~/g+30d?gW_44)r'   r   gv50Dfȿgu02>gd$Jd?gPo)r'   r   gDOS@ȿgCJcgMB[jc?gx&k	)r'   r   gh_mϛǿgYi3g`"d?g. )r'   r   g9nǿgc;gfb?gp'wn )r'   r   g*wzƿg>	D̈́gPNb?gG!)r'   r   g`	JſgbzgjAo2c?gϺWI%)r'   r   g^
2ZOſg11؆~g3!c?g'Uo&r'   gXĿgUX!)xg~Ȅb?g8m%&)+?r#   gg&ggU^`bX?g[/KRg)r(   r   gܿg.*)g~t?gfeK\)r(   r   gp[TֿgN=g?gdAwQ)r(   r   gK	@PҿgwC}g#?gw̃G)r(   r   g=vпgc_gFFi?gd9A)r(   r	   gnMοg@ng-$y?gvBD,)r(   r
   g˿g5-gbv?g K*)r(   r   gԑWʿg7gwgs?gP[#)r(   r   gusɿgbBݝg_ޥp?gl )r(   r   g;\Yg+#ȿgӉU9g{'Y8hm?gSP)V)r(   r   gY6Nǿg;`+Șg(,!Zi?g E)r(   r   gh0ƿgVBg+xc?g[})r(   r   gzb r<ƿgWz*	g6-Wb?gO#/D)r(   r   gi0ſg400$gnre?gb")r(   r   g,,Kſgz]Ugk$Db?gk(=)r(   r   g!8FĿg=qg^)`?g%')r(   r   gĿgyI=bgE]M``?g:GJB	)r(   r   g>SĿgf6O5gKeca?g3")r(   r   guĿgA[gێb?g<<u)r(   r   gAvzÿg20(gmGLa?gG)r(   r   g|]C\2ÿgY;vg7&X^?g(4)r(   r   gQ>¿g<@gE4^?gǣRF)r(   r   gg僿gřX̴]?gg~I՞f)r(   r   g,R.gd~ӀggrL]?g7)r(   r   g ́g\\|gsC^?g{ r(   gN!LgWNwg2Z]?guyb!            (   <   x   c                 C   s    zt |  W n   Y dS X dS )zC
    returns True if x is a float,
    returns False otherwise
    FT)float)x r2   I/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/stats/libqsturng/qsturng_.py_isfloatx  s
    r4   c           	      C   s  | dks| dkrt d|  d}d}d}d}d}d| }| |k rtd	t|  }|d | |d  | |d
  | |d  | |d  | |d   |d | |d  | |d
  | |d  | d  S || k rhtd	td|   }|d | |d  | |d
  | |d  | |d  | |d  |d | |d  | |d
  | |d  | d  S | d }|| }|d | |d  | |d
  | |d  | |d  | |d   | |d | |d  | |d
  | |d  | |d  | d  S )a  
    Modified from the author's original perl code (original comments follow below)
    by dfield@yahoo-inc.com.  May 3, 2004.

    Lower tail quantile for standard normal distribution function.

    This function returns an approximation of the inverse cumulative
    standard normal distribution function.  I.e., given P, it returns
    an approximation to the X satisfying P = Pr{Z <= X} where Z is a
    random variable from the standard normal distribution.

    The algorithm uses a minimax approximation by rational functions
    and the result has a relative error whose absolute value is less
    than 1.15e-9.

    Author:      Peter John Acklam
    Time-stamp:  2000-07-19 18:26:14
    E-mail:      pjacklam@online.no
    WWW URL:     http://home.online.no/~pjacklam
    r      z5Argument to ltqnorm %f must be in open interval (0,1))g%1Cg4pFk@g;->qg@rKa@g͋40>gyTW @)g0<KgwB,2d@g^vcg駱HP@g&x~*)gJg$ԿgXp4g:p,egM@g?\@)gԟW?gdY+M?g|@gh	@gEԘ?r)            r   )
ValueErrormathsqrtlog)	pabcdZplowZphighqrr2   r2   r3   _phi  s.    D2
B2H>rE   c                 C   s   dddt d|  d    S )z+function for p-value abcissa transformationg      r#   g      ?r   )rE   r>   r2   r2   r3   _ptransform  s    rG   c                 C   s   | d t |d  | d t |d d   | d t |d d   | d t |d d   }|dkr|dddt|d    7 }|d	krt|s|nd
}|ddd|   7 }n"t|s|nd
}|dd|  7 }| S )z|
    calculates f-hat for the coefficients in a, probability p,
    sample mean difference r, and degrees of freedom v.
    r   r#   r5   r)   r7   r8   gMb`r   g~jt@籡*Gg9ư_?g     s@g     g@)r;   r=   rE   npisinf)r?   r>   rD   vfr2   r2   r3   _func  s    rM   c                 C   st   | dkrdS | dkrdS | dkr$dS | dkr0dS | d	kr<d
S | dkrHdS | dkrTdS | dkr`dS | dkrldS dS dS )z-returns the points to use for interpolating pr&   )r&   r'   r(   r%   )r%   r&   r'   r$   )r$   r%   r&   g333333?)r"   r$   r%   g      ?)r!   r"   r$   gffffff?)r    r!   r"   gffffff?)r   r    r!   r   )r   r   r    r   )r   r   r   )r   r   r   Nr2   rF   r2   r2   r3   
_select_ps  s&    
rN   c                 C   s2  t | \}}}ztt||f |||d }W n   t| ||  Y nX tt||f |||d }tt||f |||d }t|t|t|  }	t|t|t|  }
t|t|t|  }| dkrt| }t|}t|}t|}d||
 ||  |
|	 ||    ||  }|| || krT||
 ||  d| ||   }n |
|	 ||  d| ||   }|
}|d || d  |||   | }t|t|t|  }nt| dkrd||
 ||  |
|	 ||    ||  }|| || kr$||
 ||  d| ||   }n |
|	 ||  d| ||   }|
}|d | | d  || |   | }t|t|t|  }nt	|d}t
d|  tjjd| d | }t
d|  tjjd| d | }|| ||  }|}|| |  | }| t
dtjjd|  d |  }|S )zs
    interpolates p based on the values in the A table for the
    scalar value of r and the scalar value of v
    r#   r!   r)   r   r   rH   )rN   rM   Aprintr;   r=   r0   rG   expminr<   scipystatstisf)r>   rD   rK   p0p1p2Zy0y1y2Zy_log0Zy_log1Zy_log2Zp_tZp0_tZp1_tZp2_td2d1d0Zy_logyZq0Zq1rC   r2   r2   r3   _interpolate_p  sf    
" $
" $
(r`   c                 C   s   | dkrddt fS | dkrdS | dkr*dS | dkr6d	S | d
krBdS | dkrNdS |dkrd| dk rpdS n| dk rpdS tt| }|d ||d fS )z-returns the points to use for interpolating vr   r.   r/   r   )r-   r.   r/   r   )r,   r-   r.   r   )r+   r,   r-   r   )   r+   r,   g     3@)   ra   r+   r"   g      @)r5   r)   r7   g      @)r)   r7   r8   r5   )infintround)rK   r>   vir2   r2   r3   
_select_vsW  s&    
rg   c                 C   sJ  t || \}}}tt| |f | ||d d }tt| |f | ||d d }tt| |f | ||d d }|dkrvd}d| d| d| d| f\}	}
}}d|| ||  || |
|    ||
  }||
 || kr|| ||  d| ||   }n || ||
  d| ||
   }|}t|d |	| d  ||	|   | }|S )z`
    interpolates v based on the values in the A table for the
    scalar value of r and th
    r#   r   rH   r   )rg   rM   rO   r;   r<   )r>   rD   rK   v0v1v2Zy0_sqZy1_sqZy2_sqv_v0_v1_v2_r\   r]   r^   r_   r2   r2   r3   _interpolate_vs  s$    $" *ro   c                 C   sB  | dk s| dkrt d| dk r2|dk rBt dn|dk rBt dt| } t|tjr^| }| |ftkrtt| |f | ||d	 }n| tkr|t	g dgf| dk  krt
|| \}}}t| \}}}	t| ||d }
t| ||d }t| ||d }d	| d	| d	| d	| f\}}}}d
|| ||  |
| ||    ||  }|| || kr|| ||  d| ||   }n ||
 ||  d| ||   }|}t|d
 || d
  |||   | }n@|t	g dgf| dk  krt| ||}n| tkrt| ||}t|d}td|  tjjd	|  d
 | S )zscalar version of qsturngr   r(   zp must be between .1 and .999r"   r)   zv must be > 2 when p < .9r5   zv must be > 1 when p >= .9r#   r   r   rH   )r:   r0   
isinstancerI   ZndarrayitemrO   rM   p_keysv_keysrg   rN   r`   r;   r<   ro   rR   rS   rT   rU   rV   )r>   rD   rK   r_   rh   ri   rj   rW   rX   rY   Zr0_sqZr1_sqZr2_sqrk   rl   rm   rn   r\   r]   r^   r2   r2   r3   _qsturng  sF    
&$" ,

rt   zvector version of qsturngc                 C   s,   t tt| ||gr t| ||S t| ||S )a  Approximates the quantile p for a studentized range
       distribution having v degrees of freedom and r samples
       for probability p.

    Parameters
    ----------
    p : (scalar, array_like)
        The cumulative probability value
        p >= .1 and p <=.999
        (values under .5 are not recommended)
    r : (scalar, array_like)
        The number of samples
        r >= 2 and r <= 200
        (values over 200 are permitted but not recommended)
    v : (scalar, array_like)
        The sample degrees of freedom
        if p >= .9:
            v >=1 and v >= inf
        else:
            v >=2 and v >= inf

    Returns
    -------
    q : (scalar, array_like)
        approximation of the Studentized Range
    )allmapr4   rt   	_vqsturngr>   rD   rK   r2   r2   r3   qsturng  s    ry   c                    s    dk rt d fdd}|dkrn td|dk r8dS  td|dkrLd	S d
t|dd||fd }t|S  td||k rdS  td||krd	S d
t|dd||fd }t|S dS )zscalar version of psturngg        zq should be >= 0c                    s   t tt| ||  S N)rI   squeezeabsrt   rx   rC   r2   r3   opt_func8  s    z_psturng.<locals>.opt_funcr5   r"   r   r(   gMbP?r#   )argsN)r:   rt   r   rI   Z
atleast_1d)rC   rD   rK   r~   Zsolnr2   r}   r3   _psturng3  s     
r   c                 C   s   t t| ||S rz   )rI   r{   r   rC   rD   rK   r2   r2   r3   _psturng_scalarJ  s    r   zvector version of psturngc                 C   s,   t tt| ||gr t| ||S t| ||S )aJ  Evaluates the probability from 0 to q for a studentized
       range having v degrees of freedom and r samples.

    Parameters
    ----------
    q : (scalar, array_like)
        quantile value of Studentized Range
        q >= 0.
    r : (scalar, array_like)
        The number of samples
        r >= 2 and r <= 200
        (values over 200 are permitted but not recommended)
    v : (scalar, array_like)
        The sample degrees of freedom
        if p >= .9:
            v >=1 and v >= inf
        else:
            v >=2 and v >= inf

    Returns
    -------
    p : (scalar, array_like)
        1. - area from zero to q under the Studentized Range
        distribution. When v == 1, p is bound between .001
        and .1, when v > 1, p is bound between .001 and .9.
        Values between .5 and .9 are 1st order appoximations.
    )ru   rv   r4   r   	_vpsturngr   r2   r2   r3   psturngP  s    r   )__doc__Zstatsmodels.compat.pythonr   r;   Zscipy.statsrS   ZnumpyrI   Zscipy.optimizer   rc   __version__rO   rr   rs   r4   rE   rG   rM   rN   r`   rg   ro   rt   Z	vectorizerw   ry   r   r   r   r   r2   r2   r2   r3   <module>   s   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                                                                                                                                                                                                                                    60(@T*Z
9
