
    tKgJ                     D    d dl Zd dlmZ d dlmZ d dlmZ  G d d      Z	y)    N)assert_allclose)raises)nnlsc                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestNNLSc                 L    t         j                  j                  d      | _        y )Nl   F_fr/ )nprandomdefault_rngrng)selfs    b/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/optimize/tests/test_nnls.pysetup_methodzTestNNLS.setup_method   s    99(()9:    c                    t        j                  d      j                  dd      }t        j                  d      }||z  }t        ||      \  }}|dk  sJ t         j                  j                  ||z  |z
        dk  sJ y )Ng      9@   g      @Hz>)r	   arangereshaper   linalgnorm)r   axyress        r   	test_nnlszTestNNLS.test_nnls   sp    IIdO##B*IIcNEa3Tzzyy~~q1uk*T111r   c           	      ~   | j                   j                  ddddg      }t        j                  | j                   j                  dddg            }d|d d d<   ||z  }t	        ||dt        j
                  j                  |d	      z  t        j                  d
      z        \  }}t        ||dd       |dk  sJ y )N
   2   lowhighsize   r              ?atol        绽|=rtolr,   -q=	r   uniformr	   absr   r   r   spacingr   r   r   r   bxactrnorms         r   test_nnls_tallzTestNNLS.test_nnls_tall   s    HH2RH=FF488##"#>?#A#E1ac"))..A*>&>rzz"~&MNeabu5u}}r   c           	      ~   | j                   j                  ddddg      }t        j                  | j                   j                  dddg            }d|d d d<   ||z  }t	        ||d	t        j
                  j                  |d
      z  t        j                  d      z        \  }}t        ||dd       |dk  sJ y )Nr   r    d   x   r"   r&   r'   r   r(   r)   r*   r+   r-   r.   r/   r1   r2   r6   s         r   test_nnls_widezTestNNLS.test_nnls_wide   s     HH2S#J?FF488####?@#A#E1ac"))..A*>&>rzz"~&MNeabu5u}}r   c                     | j                   j                  d      }| j                   j                  d      }t        t              5  t	        ||d       d d d        y # 1 sw Y   y xY w)N)r   r    r%   r   r)   )maxiter)r   r3   assert_raisesRuntimeErrorr   )r   r   r7   s      r   test_maxiterzTestNNLS.test_maxiter'   sP    HH'*HH!$<(Aq! )((s   A  A)c                 |   t        j                  g d      }t        j                  g d      }t        j                  g d      }t        |      }t        j                  |      t        j                  t        j
                  ||f            z  }|dz  }|dk(  j                         d   }d|||f<   d||t        j                  |dz   |dz
        f<   d||<   d||<   t        j                  |      }|dt         j                  j                  |	      z  z   }t        ||z  ||z        \  }	}
t        |	|d
d       y )N)C   r'   r   r)   r)   r)   rF                  )   /   5   9   C   L   g   Y   a   ^   U   _   N   rX   rX   M   I   r!   r!   8   D   b   rW   p                              rg               n   \   ?   <   4   rJ      rI      r   r   r   r)   r'   rF   r   r'   )Cr-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   祠oN ?r-   goN ?rs   祠oN @祠oN @ru   gVS(@gقfC.@gD -4@gĎ$]a;@g-R#H@gPxG@g:6:"Q@gVSX@gA[[@g9`@g^;ma@goN g@gYHoe@ERWi@gg݈n@g_Zgj@g9 al@ghb m@rv   gIe@gQg@g1D/Dd@gBA{/c@gGM^^[@gxWY@gIU@gقfCN@gIE@gPx7@gVS8@g|:@K1@goN '@ru   gD -@gΈb@r-   rt   r-   r-   r-   )Cr-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   g]<To?r-   gTT'?r-   g#I?g'|?r-   gε?g	kѭ?g<h:?g4 &fr?gwp?r-   r-   gc@?r-   r-   r-   gq2O?r-   r-   r-   r-   r-   r-   r-   r-   g˚HZ?gT?r-   r-   gjE>?r-   r-   r-   r-   g_k?r-   r-   r-   r-   r-   r-   r-   r-   r-   r-         ?r   r)   r   r.   r@   r-   r/   )r	   arraylendiagtrilonesnonzerominimumr
   normalr   r   )r   nkdNAwnzWdact_s              r   test_nnls_inner_loop_case1z#TestNNLS.test_nnls_inner_loop_case1.   s(   HH HH,-" HH	  FGGAJ!Q11H1f""b&	+-"bjjaQ'
'(""GGAJ 		((a(000q1ua!e$aabu5r   c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        |      }t        j                  |      t        j                  t        j
                  ||f            z  }|dz  }|dk(  j                         d   }d|||f<   d||t        j                  |dz   |dz
        f<   d||<   d||<   t        j                  |      }t        ||z  ||z  d	      \  }	}
t        j                  |	      }t        j                  |	dk\        sJ t         j                  j                  |||z  z
  t         j                  
      dk  sJ t        |	|dd       y )N)Dr)   r   r)   r'   r'   r'   rF   rF   r      rH   rH         $   *   r   @   r   r   Q   rV   rV   rW   rW   rW   K   rQ   E   r   >   ;   r\   r   G   rP   J   rX   v   rj                        rf                  rR   h   r   r[   (       r      	   rr   rG   r'   r)   r)   r)   )Dr-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   焱?r-   r-   g#V @r   r-   gLKA@gLKA@g&@#V0@XdÓ|4@r   g^uB@gyK@g	S@g{Y@gԗ}Z@gܢ+o_@gP@ڡb@g[{f@gwf@ch@gԗ}j@go=i@gI:m@g
$tk@g%uh@g(
どh@gH+n5g@gs-}g@guqib@g*Bl`@g}#]@gϸOW@g"(@V@gb"a4J@gF@gJ?@g(
ど8@r   T;Oκ#@r   焱@r   焱?r   r   )Dr-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   g"%&a?r-   r-   gYM?r-   r-   gR.S?ghq?gwLBW?gQ?gF
}?gǙH?gL'%?g*O?gްac?r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   gKu?g bb,Mn?r-   r-   r-   r-   r-   gwլD?r-   r-   r-   r-   r-   r-   r-   r-   gLg?r-   r-   g'?rw   r   r)   r   r   r+   )ord   r-   r.   r/   )r	   rx   ry   rz   r{   r|   r}   r~   r   cumsumallr   r   infr   )r   r   r   r   r   r   r   r   r   r   r   ps               r   test_nnls_inner_loop_case2z#TestNNLS.test_nnls_inner_loop_case2h   sW   HH HH56" HHC	D  FGGAJ!Q11H1f""b&	+-"bjjaQ'
'(""GGAJq1ua!e$/aIIdOvvdai   yy~~a!a%iRVV~4r999abu5r   c                    t        j                  g d      j                  dd      }t        j                  dt         j                        }t        ||      \  }}t        |t        j                  g d             t        |d       y )N(  g\a?g{ 6?g'ݯ(?gʧy?g{ 6?gzM?g=YZM[g?g<NG?gӐ3?g=YZM[g?o+j?r   g|\?gNO?gl7?gx7O?g.Tei?gy?gsk8j?g.Tei@g͛J?g YX'i?gW?g#?gFl@gZI\g?gZI\g?g9?geM?gQ6'@gҥR?gm`?g1?gm!?gD&3@g5s@?gGܳU?g,&.?gڒ"}@gGܳU<@gE&.ۢ?gh9H?g7?g7hf@goh"D@g"Xz(?gvA?g+?gWn@gr˩aK@gos͞?g{TD<?g|!?g(@g2}EYR@gᰜ7?g?|2>?gÆ@?gqp@g+8L^@g7^?gD`vC?gb?g\h @gyIg@g ֑^6?gVmӵH?gi%;?g9H#"@gVmӵHl@g̢'ߒ?g2t;wO?gZ:>?g*\:'@gy">'t@gQS7:1?gA%V?gz_i?gɻwE0@gXa@gy֙r?g3~8V?gl?g>3@g'T@gZQ"?g;pO?gY)o.M?gt-8@g&f'_@gŋTg?gSUG?g]3?gO>@g6AT@gZ?g@?gEm?g^BD@go}@gehT?gF<!B?gC"1?gs퀿/I@gIץ@g:Hܑ?g<?g+?g9ZYN@gzb1P@glʽWt}?gR7k):?g <@gU/2eqS@gxA@g8ڰz?gǒ B*B?gtN$_C@g1X@gt10zP@g@v	w?gtP?g1~	@g,t	`@gKC/@g(t?g×	\?g	@gE@d@gՃ(@g"a]nr?g!&j?g}{@g3QFSi@g6@g2l{p?gq?gJN@g6vo@g]r0d@g΂m?g7?gTeMT@gkeUt@gϞ&@gh+	:j?gz_z?gc@g?y@gkh.@gKtg?g|Լ?gfo	u@gMU@gu@g;e?gs ?ry?gVKV@g~@gT@g͎b?g4(	?gM(Ρ@g%m@g.qAg9Ԩ`?g{$?g]' @gpS@g%0'.AgN}>% ^?g8?gŕG"@gAʔ@goݜAgGGGZ?gIBR?gJH;:%@g%O@g_ѱ/ AgW?g94Of?gY>\'@gZ,@g'Ag\OgFU?gGFy?gߜb+@gcC!>7@gjb0AgټS?gq?g5-W.@gSg.Id@g5@K7AgFkP?g~By?g_1@gKYi@g8*6@Agb?1AN?g`՟?g.b633@g zYM@gb4wGAgKJ?gr)	?g?H5@gOY44@gXPAg"4H?g'6ͽ?g5pf8@g勦@g-LWAgD̢E?gBAMd?gpMǱ;@gAFk@g4WGaAg6
+JsC?gD#V?g;yTS?@g@g;JhAg*$JfA?g
?g	YWưA@gbɥ@ghpQqAg{<c>?g	2y?gQC@g%@gn)$9xAgqi;?g.ZOW?gx9F@gmk @gN[ZAgwEu8?garj?gI@g}Oq\Ȣ@gTRثAgtrl5?gmfeT?g/L@g_(@g&3gfAg[M3?g!I?g.5ͺtO@gy)G1@gmwAg@s<1?gN9]?gk))Q@gWw]@g:AgW;!.?g'?gUT@g50@gAg$+?g<ixԾ?gpV@g`@g8'@ڱAg"/(?g-]?g_Y@g:Ago7AgK3P%?gm2?gX9n8j\@g)f\MAg&AgS-fZJ#?gilzd?gkۈ۱_@g9)itJAgir(/|Agl ?gf۽?g9@}a@g;Ag(QwAgmXm?go6i4A?g/^@c@gEAg@AgT#?g?g^e@g]el	AgAAgx?gF';I?g8g@gtN6j Ag}!pAg6?gyP?g=:ij@gW7%AgλAg"d ?g7n?gtGm@gЏB*AgLbAgcr?g𺭮?g0s;p@g
	SZ0AgRZZ Bg7x40?gc&9,
'?gq5q@g<U_O4AgJFBgwc?g?%?}?g6p轫s@gbH9AgP寏Bg8	x?g*'̹?g2{u@g~|p>Ag>;+Bg
gk+?gB5?g(x@gM VSCAg8yBg9W, ?g-xU@?g04r{@g`1|HAgeC&Bg*<>g6"i?gd_t~@g1PAgmQ0Bg	+>gID?gEax@gsVAgj9Bg㪢9O>g|b2?gW|f@g
x_Ago,CBg{%>g!D)?g]	ݍ@g<keAg$NBgsn5>gba7U΢?gϊ@gYpDlAg΍VBgW_>g!?ꢓ?g4hcC@g1rAgW`Bgst>g,L?g9u:p@g vAgk5gBg/˦]>g%#?gU=@guX3]ߏ|Ag"1pBg>g0#+?g;~;@g:PswAgvI@vBgU>gkW?gOM@g\#=FAg_xlp~Bg	Nn>g@-?ggՖ@gX!nAgV^Bgc5>gR?gXf@g%;Ag֫m5BgC?'L>g#*K?g3Kե@ga2G}LAgpBg*̺Sg90L?gu@g- $AgkMÆg?7g&>0?gN:x@g+s?ɨXAg%pg"gX	?gVb\@g`o"Agf!ygQ
?g	~b?g~鎅@g z@Agͅ}s Bguf>g"~(#?g4J@g`%TFAgѺDbBg$ugz#(g ?gY @g q$Ag6aJgI]q7i>gw8?gSfv@g6v_n1Ag~j3BrS   r   )dtype)gdM?gmUq @r-   r-   r-   g|%?)r	   rx   r   r|   float64r   r   )r   r   r7   solr9   s        r   test_nnls_gh20302zTestNNLS.test_nnls_gh20302   sn    HHTU j !(Ak 	
l GGBbjj)!QZ
URXX&JKL12r   N)__name__
__module____qualname__r   r   r:   r>   rD   r   r   r    r   r   r   r      s-    ;2	"86t96v[3r   r   )
numpyr	   numpy.testingr   pytestr   rB   scipy.optimizer   r   r   r   r   <module>r      s     ) * w3 w3r   