
    biW                         d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ  G d d      Zy)    N)pi)assert_array_almost_equalassert_equalassert_allclose)raises)DataModelODRRealDataOdrStop
OdrWarningOdrErrormultilinearexponential	unilinear	quadratic
polynomialc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej8                  j;                  dd      d        Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&y%)&TestODRc                 \    t        t        t        dd       t        t        t        dd       y )N      )assert_raises
ValueErrorr   r   )selfs    S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/scipy/odr/tests/test_odr.pytest_bad_datazTestODR.test_bad_data   s    j$1-j(Aq1    c                     |d   |z  |d   z   S Nr   r    r   Bxs      r   empty_data_funczTestODR.empty_data_func   s    tAv!}r   c                 V   ddg}t        | j                        }t        g g       }t        j                  t
              5  t        |||       d d d        t        g g       }t        j                  t
              5  t        |||       d d d        y # 1 sw Y   FxY w# 1 sw Y   y xY w)N{Gz?        beta0)r	   r%   r   pytestwarnsr   r
   r   )r   r*   linear	empty_dats       r   test_empty_datazTestODR.test_empty_data   s    st++,RL	\\*% 	0	6/	0 R$	\\*% 	0	6/	0 	0		0 	0	0 	0s   B;BBB(c                     |d   |d   t        j                  t        j                  |d   |z        dz
  d      z  z   }|S )Nr   r   r         ?)nppowerexp)r   r#   r$   rets       r   explicit_fcnzTestODR.explicit_fcn-   s>    dQqTBHHRVVAaDF^c%91===
r   c                 j    t        j                  |d   |z        }|d   dz  |dz
  z  |d   z  |z  }|S )Nr   r          @r1   )r2   r4   )r   r#   r$   eBxr5   s        r   explicit_fjdzTestODR.explicit_fjd1   s@    ffQqT!VndSjCG$qt+c1
r   c                     t        j                  |d   |z        }t        j                  t        j                  |j                  d         t        j
                  |dz
  d      |d   dz  |dz
  z  |z  |z  g      }|S )Nr   r1   r   r8   )r2   r4   vstackonesshaper3   )r   r#   r$   r9   ress        r   explicit_fjbzTestODR.explicit_fjb6   st    ffQqT!Vnii-#c'1-1c3s7+C/13 4 
r   c           	      6   t        | j                  | j                  | j                  t	        dd            }t        g dg d      }t        ||g dg d	      }|j                  d
       |j                  ddd       |j                         }t        |j                  t        j                  g d             t        |j                  t        j                  g d             t        |j                  t        j                  g dg dg dg             y )NzSample Explicit ModelzODRPACK UG, pg. 39nameref)fjacbfjacdmeta)r(   r(         @      @g      @      $@g      0@g      :@      >@g      A@g     @A@      Y@)g     ē@gfffff@g     @g     @g     @g33333@g     T@g     @gfffff@g33333@g     @g     @)     p@g      I皙)r   r   r   r   r   r   r   r   r   r   r   r   r*   ifixxr   derivr   )inititerfinal)g8@gLA[KgxQ})gֳ?g1X?gy?)ggC?NM=y7׿	J)rW   gq?]F f_)rX   rY   gO>)r	   r6   rA   r:   dictr   r
   set_job
set_iprintrunr   betar2   arraysd_betacov_beta)r   explicit_modexplicit_datexplicit_odrouts        r   test_explicitzTestODR.test_explicit=   s   ####2.0	
 K./ <=R681%QQa8 !HHHH ) *	

 	"KKHHPQ	
 	"LLHH ***	+ ,	
r   c                     |d   t        j                  |d   |d   z
  d      z  d|d   z  |d   |d   z
  z  |d   |d   z
  z  z   |d   t        j                  |d   |d   z
  d      z  z   dz
  S )Nr   r   r8      r      r1   )r2   r3   r"   s      r   implicit_fcnzTestODR.implicit_fcnc   s    !RXXad1Q4i++AaD!A$qt)$ad1Q4i01!RXXad1Q4i++,.12 	3r   c                    t        | j                  dt        dd            }t        g dg dgd      }t	        ||g d	      }|j                         }t        |j                  t        j                  g d
             t        |j                  t        j                  g d             t        |j                  t        j                  g dg dg dg dg dg      dd       y )Nr   zSample Implicit ModelzODRPACK UG, pg. 49rC   )implicitrH   )      ?g333333?g?g(\?g(\ @zG@gQ@rn   g{Gz @gףp=
?gq=
ףp??gQѿg(\g(\gffffffg      g
ףp=
gq=
ףp	gQ)gQg333333      gffffffgRQgzG
g      g      g      g(\gzGgHzG(\rq   gp=
ףg      gQg      g(\gq=
ףp)rp   g      g
ףp=
?r'   g{Gz?r)   )g{ 3gzJrgJ/k?g&Z薞?gkj?)g?g29?g3"͇p?g[=f?gx#+l?)g:\ @8%??'M['%GRR?)rr   gdbb @gR	<?k)rs   rv   g};yWzg?
WWm&W?)rt   rw   ry   gK}U?$_T)ru   rx   rz   r{   ga?gư>g>)rtolatol)r	   rj   rZ   r   r
   r]   r   r^   r2   r_   r`   r   ra   )r   implicit_modimplicit_datimplicit_odrre   s        r   test_implicitzTestODR.test_implicith   s    2.0
 6=>
 
 <02  !HHHH 8 9	

 	"KKHH 8 9	

 	LLHH *****+ , D#	
r   c           
         |dk  j                         rt        t        |d   z  dz  }t        j                  |      }t        j
                  |      }t        j                  dt        z  |z  t        j                  |d          z  |d         }t        j                  ||z  d||z  z         }|d   |d   z
  t        j                  t        j                  t        j                  d||z  z   d      t        j                  ||z  d      z         |d          z  }t        j                  |d   |t        j                  |d   |z        z  z   |t        j
                  |d   |z        z  g      }	|	S )	Nr(   rh   r8   r   r1   r   r   ri   )anyr   r   r2   cossinr3   r4   arctan2sqrtr=   )
r   r#   r$   thetacthetasthetaomegaphirr5   s
             r   	multi_fcnzTestODR.multi_fcn   s?   G==?M1Q4
Bq1.!5jj%,#f*<>qTAaD[BHHRWWRXXcE&L6H!-LXXeFlA&.' &(*+A$0 0ii1"&&1c"2 22266!A$s(++- .
r   c                 r   t        | j                  t        dd            }t        j                  g d      }t        j                  g dg dg      }t        |      }t        j                  dd|ft        	      }t        j                  |t        	      }t        j                  |t        	      }d
|ddd d f<   dx|ddd d f<   |ddd d f<   d|ddd d f<   t        |      D ]e  }||   dk  rd||<   n8||   dk  rn/||   dk  rd||<   n!||   dk  rd||<   n||   dk  rd||<   nd||<   ||   dk(  s	||   dk(  sZd|d d d d |f<   g t        ||dt        j                  |d      z  |      }	t        |	|g d||      }
|
j                  dd       |
j                         }t!        |j"                  t        j                  g d             t!        |j$                  t        j                  g d             t!        |j&                  t        j                  g d g d!g d"g d#g d$g             y )%NzSample Multi-Response ModelzODRPACK UG, pg. 56rC   rH   )rL   g      I@g     Q@rM        b@g      i@g     r@g     @@g     @     @@rN   g     @@g     p@g     @g     X@     @g     L@g     @g     L@g     j@g     @     j@g    OA)gzG@g^I@gI+@gx&@g~jt@gS@gOn@gʡE@gNbX9@gMb@gRQ@gX9v@gw/
@gMb
@g%C	@g/$	@gFx@gZd;@gFx@g5^I@gNbX9@gMb@gOn@)g rh?gK7A`?gMb?gA`"?gh|?5?g r?gDl?g5^I?g-?灕Cl?gjt?r   gQ?g"~?g|?5^?gRQ?gQ?gCl?gB`"?gK?g/$?g/$?gn?r   dtypeg|@r   g     r   g    f@rM   r   r   g      9@r   g     @r   g     @g     Ar(   g-C6?wdwe)      @r8   rJ   皙?rm   )r*   delta0rQ   )rS   del_init)g@gNUiw@gz @gR?gFu?)gfkl,?g 1w?gAS?g@L*?g?)g?#0z?_ n=m?-Mu?G:xgTÚ?)r   gaǇ
z?4<n?gjtܪVŊ?)r   r   gHAcO?K*rԬa/??)r   r   r   gk{?y7)r   r   r   r   g
P/{7?)r	   r   rZ   r2   r_   lenzerosfloatr>   intranger   r3   r
   r[   r]   r   r^   r`   ra   )r   	multi_modmulti_xmulti_ynmulti_wemulti_ifixxmulti_deltai	multi_dat	multi_odrre   s               r   
test_multizTestODR.test_multi   sO   NN8.0
	 (( M N ((00	
  L88Q1IU3ggas+hhq.1Q,331Q(1Qq5/ 1Qq 	&AqzE!!"Au$v%!%Aw&!&Ax'!'A!)AqzU"gajE&9"%1Q	&  'd288GQ3G.G		94Dk3	A.mmo!HHHH 8 9	

 	"KKHH 8 9	

 	"LLHH 899:9	: 	;	
r   c                     |d   |d   |z  z   S r    r!   r"   s      r   pearson_fcnzTestODR.pearson_fcn   s    tad1f}r   c                    t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        ||||      }t        ||||      }t        | j                  t        d            }t        ||d	d	g
      }t        ||d	d	g
      }	|j                         }
t        |
j                  t        j                  ddg             t        |
j                  t        j                  ddg             t        |
j                  t        j                  ddgddgg             |	j                         }t        |j                  t        j                  ddg             t        |j                  t        j                  ddg             t        |j                  t        j                  ddgddgg             y )N)
r(   ro   g?g@gffffff
@皙@g@gffffff@g      @g@)
g@g@r   gffffff@g      @g@ffffff@r   g333333@g      ?)
Q?r   {Gz?gQ?gQ?g)\(?gp=
ף?)\(?Gz?r1   )
r1   r   rm   gffffff?r   r   Q?r   皙?r   sxsyzUni-linear FitrD   r   r1   r)   g4ԉ.@gv޿grtA-?gc?g;޵?g=gk?gO&@gj( g3
ٻl?gZ՗?gF)t?g`=Lɿg!?)r2   r_   r   r	   r   rZ   r
   r]   r   r^   r`   ra   )r   p_xp_yp_sxp_syp_datpr_datp_modp_odrpr_odrre   routs               r   test_pearsonzTestODR.test_pearson   s   hh>?hh@AxxABxx>?cdt4 #st5d&&T7G-HIE5B0VU2b'2iik!HHHH(*=>?	
 	"KKHH(*<=>	
 	"LLHH)+>?#%679 :	
 zz|!IIHH)+>?@	
 	"LLHH(*<=>	
 	"MMHH)+>?#%78: ;	
r   c           	          |d   |d   z  |d   z  t        j                  t        j                  ||z  |d   |d   z  z
  d      t        j                  |d   |z  d      z         z  S )Nr   r   r   r8   )r2   r   r3   )r   r^   r$   s      r   lorentzzTestODR.lorentz)  sr    QQQ'"''"((1Q3GDGO< 3"$&HHT!WQY$<3= +> > 	?r   c           	         t        j                  dgdz        }t        j                  g d      }t        g dg d||      }t        | j                  t        d      	      }t        ||d
      }|j                         }t        |j                  t        j                  g d             t        |j                  t        j                  g d             t        |j                  t        j                  g dg dg dg             y )Ng(\?   )gdOO?gO?g&0G?gpt͘(G?g^"G?g eG?genBF?g8=?g-=?g`EE?g,!WsE?g01cE?g&-}Ԭ>g;vQ?gPmQ?gGus#T?gW UW?g>c?)gׁsF@g`TR'@gxN@gs@g3@gN#-@g	ϛ@gW[N@gp:@@g@gs,&6@g@g2c@gHIOG@g?@g;@gx&q@gҌEY@)i  g     t@i  i  g     |@i  g     "@g     @i  ib  g     @i  g     L@g     ,@i  g     @g     (z@g     8q@r   zLorentz Peakr   r   )r   r   gffffff@r)   )gA5[Z@gO#?gF=@)g(1?gȕ6?gQ.q;0?)g\j?EGp` )r   g3<n>G!fc>)r   r   gq[cсE]>)r2   r_   r   r	   r   rZ   r
   r]   r   r^   r`   ra   )r   l_syl_sxl_datl_modl_odrre   s          r   test_lorentzzTestODR.test_lorentz-  s    xxb!xx N O
 0A
 dll>)BCE5(89iik!HHHH ) *	

 	"KKHH ) *	

 	"LLHH ***	+ ,	
r   c                     d }ddg}t        j                  dd      } |||      }t        |      }t        ||dd      }t	        ||ddg      }|j                         }t        |j                  d	       y )
Nc                     | d   |z  | d   z   S r    r!   )cr$   s     r   r-   z(TestODR.test_ticket_1253.<locals>.linearV  s    Q46!A$;r   r8         @r   
   r1   r   r)   r   )r2   linspacer	   r   r
   r]   r   info)	r   r-   r   r$   ymodeldatajobresults	            r   test_ticket_1253zTestODR.test_ticket_1253U  sq    	 #JKK21aLfAqSS)$c3Z0V[[!$r   c                    g d}g d}t        j                  t        j                  |t              t        j                  |t              f      }t        t        j                  ||f      d|      }t        d d      }t        ||t        j                  d	g      
      }|j                         }t        ||t        j                  d	g      |      }|j                         }	t        |j                  |	j                         y )N)gGz gGzgMbPgRQ?gGz?)gףp=
@g)\(?gMbP?gV-?g
ףp=
@r   r   )r   fixc                 :    |dd d f   | d   |dd d f   dz  z  z
  S )Nr   r   r8   r!   )r^   r$   s     r   <lambda>z$TestODR.test_ifixx.<locals>.<lambda>j  s(    a1gQ!AqD'2+0E&E r   T)rl   r1   r)   rP   )r2   r=   
zeros_liker   	ones_liker   r	   r
   r_   r]   r   r^   )
r   x1x2r   r   r   odr1sol1odr2sol2s
             r   
test_ifixxzTestODR.test_ifixxe  s    /-iir5r||Bc7RSTBIIr2h'1#6EPTU4bhhtn5xxz4bhhtnC@xxzTYY		*r   c                    t        j                  g d      }d}d}t        j                  g dg dg      }d}t        j                  g dg dg      }t        j                  g d	      }d
 }d }	d }
t        j                  dd|      }t        j                  dd|      }t        j                  ||g      } |||      }||z   }||z   }t        ||	|
      }t	        ||||      }t        ||d|z  d      }|j                  d       |j                         }t        |j                  d       t        |j                  |       y )N)r1   gffffff@g?rp   g?rm   r   {Gz?)
g	 'D?g"u?gsfZ?gt?g	Yqog?s?gJf?g>xF}gvIxg!͒&|)
ggÚрgz7X0ت`gN77?ga5|gLl	TZj?g^1;e?g<%gwg%.hgܾ#ń?g?)
g!Kr?gR#?g)BgH]N?gK?gNr}?gt%?g')vU~g^'2g?))
gÊ?giP?gލho?gʐ:l?gM*gD3g\`gg֓А?g3p~?ghϬ)g>@gk_gʖ6`@g<u+g|㉘S@g2dSc                     | d   | d   |dd d f   z  z   | d   |dd d f   z  z   }| d   | d   |dd d f   z  z   | d   |dd d f   z  z   }t        j                  ||f      S )Nr   r   r   rh   ri      )r2   r=   )r^   r$   y0y1s       r   funcz'TestODR.test_ticket_11800.<locals>.func  s    a47Qq!tW,,tAw1a4/@@Ba47Qq!tW,,tAw1a4/@@B99b"X&&r   c                 X   t        j                  |      d   }t        j                  |      }t        j                  |      }t        j                  ||dd d f   |dd d f   |||g      }t        j                  |||||dd d f   |dd d f   g      }t        j
                  ||f      S )Nr   r   )r2   r?   r   r>   r_   stack)r^   r$   nr_measr   r>   dy0dy1s          r   df_dbeta_odrz/TestODR.test_ticket_11800.<locals>.df_dbeta_odr  s    hhqk!nGHHW%E777#D((D!AqD'1QT7E5%HIC((E5%qAw!Q$HIC88S#J''r   c                    t        j                  |      d   }t        j                  |      }t        j                  | d   |z  | d   |z  g      }t        j                  | d   |z  | d   |z  g      }t        j                  ||f      S )Nr   r   ri   r   )r2   r?   r>   r_   r  )r^   r$   r  r>   r  r  s         r   	df_dx_odrz,TestODR.test_ticket_11800.<locals>.df_dx_odr  sz    hhqk!nG777#D((DGdNDGdN;<C((DGdNDGdN;<C88S#J''r   r   )rF   rG   r   ro   d   )r*   maxitrh   rR   )r2   r_   r   r	   r   r
   r[   r]   r   r   r   r^   )r   	beta_truenr_measurements	std_dev_xx_error	std_dev_yy_errorbeta_solutionr   r  r  x0_truex1_truex_truey_truex_measy_measmodel_fr   odr_objodr_outs                        r   test_ticket_11800zTestODR.test_ticket_11800s  sN   HH<=		(( XHI J
 	(( WKL M
  "E F	'	(	( ++a_5++a_57G,-i('!'! L	B9CdG3?#Fa ++- 	W\\1%!',,>r   c                     t        j                  dd      }dd|z  z   }t        ||      }t        |t              }|j                         }t        |j                  ddg       y )Nr(   rI   rK   )r2   r   r   r
   r   r]   r   r^   r   r$   r   r   r  outputs         r   test_multilinear_modelzTestODR.test_multilinear_model  sS    KKS!37NAqzdK(!&++c{;r   c                     t        j                  dd      }dt        j                  d|z        z   }t        ||      }t	        |t
              }|j                         }t        |j                  ddg       y )Nr(   rI   g      $rm   )	r2   r   r4   r   r
   r   r]   r   r^   r  s         r   test_exponential_modelzTestODR.test_exponential_model  s\    KKS!BFF3q5M!AqzdK(!&++s|<r   c                     t        j                  dd      }dd|z  z   d|dz  z  z   d|dz  z  z   }t        d      }t        ||      }t	        ||      }|j                         }t        |j                  g d	       y )
Nr(   rI   r1   r8   r   r   r   rh   )r1   r8   r   r   )r2   r   r   r   r
   r]   r   r^   )r   r$   r   
poly_modelr   r  r  s          r   test_polynomial_modelzTestODR.test_polynomial_model  ss    KKS!#'MC!q&L(3a<7]
AqzdJ'!&++/CDr   c                     t        j                  dd      }d|z  dz   }t        ||      }t        |t              }|j                         }t        |j                  ddg       y Nr(   rI   r1   r8   )r2   r   r   r
   r   r]   r   r^   r  s         r   test_unilinear_modelzTestODR.test_unilinear_model  sS    KKS!!GcMAqzdI&!&++Sz:r   c                     t        j                  dd      }d|dz  z  d|z  z   dz   }t        ||      }t        |t              }|j                         }t        |j                  g d       y )Nr(   rI   r1   r   r8   r   )r1   r8   r   )r2   r   r   r
   r   r]   r   r^   r  s         r   test_quadratic_modelzTestODR.test_quadratic_model  s]    KKS!!q&L37"S(AqzdI&!&++?r   c           	         d }d}t        j                  |      }t        j                  |dz  |dz   |dz
        }t        j                  |d      }t        j                  |d      }t	        |      }t        ||||      }t        ||ddg      }	|	j                  d	       |	j                         }
|
j                  d
   }t        |
j                  |
j                  ||t        |
j                        z           y )Nc                     | \  }}|||z  z   S Nr!   )parr$   b0b1s       r   r   z#TestODR.test_work_ind.<locals>.func  s    FBQ;r   ri   r   r   r   r   r)   r   )fit_typesd)r2   arangewherefullr	   r   r
   r[   r]   work_indr   r`   workr   )r   r   n_datar$   r   x_erry_errlinear_model	real_datar  re   sd_inds               r   test_work_indzTestODR.test_work_ind  s    	
 IIfHHQUAGQW-$$ T{Qe6	ic3Z@#kkmd#!#++"%((6&3s{{;K2K"L	Nr   TzJFortran I/O prone to crashing so better not to run this test, see gh-13127)reasonc                    d }t        |      }t        t        j                  d      dt        j                  d      z        }t	        j
                         }t        j                  j                  |d      }t        j                  j                  |d      }	 t        ||ddg||      j                          t        ||ddg||d	
      j                          t        j                  |       y# t        j                  |       w xY w)z(
        Verify fix for gh-1892
        c                     | d   | d   |z  z   S r    r!   br$   s     r   r   z0TestODR.test_output_file_overwrite.<locals>.func      Q4!A$(?"r   r      z	error.datz
report.datr      )r*   errfilerptfileT)r*   rF  rG  	overwriteN)r	   r   r2   r2  tempfilemkdtempospathjoinr
   r]   shutilrmtree)r   r   pr   tmp_direrror_file_pathreport_file_paths          r   test_output_file_overwritez"TestODR.test_output_file_overwrite  s    	# $KBIIbM2		"#56""$'',,w<77<<>	#aRy/(**-#%aRy/(D::=#% MM'"FMM'"s   AC0 0Dc                 x    d }t        |      }|j                  dd       t        |j                  ddd       y )Nc                     | d   | d   |z  z   S r    r!   rA  s     r   r   z1TestODR.test_odr_model_default_meta.<locals>.func  rC  r   zSample Model MetaODRPACKrC   )r	   set_metar   rH   )r   r   rP  s      r   test_odr_model_default_metaz#TestODR.test_odr_model_default_meta  s7    	# $K	

+
;QVV&9)LMr   c           
         d }d}t        j                  |      }t        j                  |dz  |dz   |dz
        }t        j                  |d      }t        j                  |d      }t	        |      }t        ||||      }t        |||d      }	t        |||dg      }
t        |||t        j                  d|fd            }t        |||dgg      }t        |||t        j                  dd|fd            }||	|
|||fD ]J  }t        ||d	d	gt        j                  |d
            }|j                  dd       |j                          L y)zA
        Verify fix for gh-18739 where del_init=1 fails.
        c                     | d   | d   |z  z   S r    r!   rA  s     r   r   z.TestODR.test_work_array_del_init.<locals>.func  rC  r   ri   r   r   r   r   r   )r   covyr   rO   )r*   r   r   )r0  r   N)	r2   r2  r3  r4  r	   r   r
   r[   r]   )r   r   r7  r$   r   r8  r9  r:  rd0rd1rd2rd3rd4rd5rdr  s                   r   test_work_array_del_initz TestODR.test_work_array_del_init  s@   	# IIfHHQUAGQW-$$T{q!%0q!#.q!3%0q!"''1f+s*CDq!dVH5q!BGGQ6ND,IJS#sC0 	B"l3*!#!68GOOQO3KKM	r   c                     t        j                  dd      }d|z  dz   }t        ||      }t        j                  |      }~t        j
                  |       y r&  )r2   r   r   pickledumpsloadsr   r$   r   r   
obj_pickles        r   test_pickling_datazTestODR.test_pickling_data8  sG    KKS!!GcMAqz\\$'
Z r   c                     t        j                  dd      }d|z  dz   }t        ||      }t        j                  |      }~t        j
                  |       y r&  )r2   r   r   rf  rg  rh  ri  s        r   test_pickling_real_datazTestODR.test_pickling_real_dataA  sG    KKS!!GcM1~\\$'
Z r   c                 `    t        j                  t              }t        j                  |       y r,  )rf  rg  r   rh  )r   rj  s     r   test_pickling_modelzTestODR.test_pickling_modelJ  s    \\),
Z r   c                     t        j                  dd      }d|z  dz   }t        t        ||      t              }t        j                  |      }~t        j                  |       y r&  )r2   r   r
   r   r   rf  rg  rh  )r   r$   r   r  rj  s        r   test_pickling_odrzTestODR.test_pickling_odrN  sN    KKS!!GcMd1aj),\\'*
Z r   c                     t        j                  dd      }d|z  dz   }t        t        ||      t              j
                  }t        j                  |      }~t        j                  |       y r&  )	r2   r   r
   r   r   r]   rf  rg  rh  )r   r$   r   r  rj  s        r   test_pickling_outputzTestODR.test_pickling_outputW  sT    KKS!!GcMT!QZ+//\\&)
Z r   c                     t        j                  ddd      }dd|z  z   }t        ||      }t        }t	        t
              5  t        ||d      }|j                          ddd       y# 1 sw Y   yxY w)zC
        Verify fix for gh-23763 that ODR doesn't segfault
        r   r   r8   r   r   )r   N)r2   r   r   r   r   r   r
   r]   )r   r$   r   r   r   odrs         r   %test_explicit_model_with_implicit_jobz-TestODR.test_explicit_model_with_implicit_job`  si     KK2r"#'MAqz 8$ 	dEq)CGGI	 	 	s   A))A2N)'__name__
__module____qualname__r   r%   r/   r6   r:   rA   rf   rj   r   r   r   r   r   r   r   r   r   r  r  r!  r$  r'  r)  r=  r+   markskipifrT  rY  rd  rk  rm  ro  rq  rs  rv  r!   r   r   r   r      s    2

0
"
L3
.
dH
Z,
b?&
P% +F?P<=E;@N0 [[ &J K#K#*N:!!!!!r   r   )rf  rI  rN  rK  numpyr2   r   numpy.testingr   r   r   r+   r   r   	scipy.odrr   r	   r
   r   r   r   r   r   r   r   r   r   r   r!   r   r   <module>r     sI       	  , ,  *. . . .
Z	 Z	r   