o
    tBh0w                     @   s  d dl mZ d dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ d>ddZd?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#d?d d!Z$d"d# Z%G d$d% d%Z&G d&d' d'Z'd(d) Z(e)e* e(g Z+G d*d+ d+Z,G d,d- d-Z-G d.d/ d/Z.G d0d1 d1Z/G d2d3 d3e,e-e.e/Z0G d4d5 d5e,e-e.e/Z1G d6d7 d7e,Z2d8d9 Z3d:d; Z4d<d= Z5dS )@    )productN)norm)assert_assert_allcloseassert_equalsuppress_warnings)raises)issparse
lil_matrix)aslinearoperator)least_squares)IMPLEMENTED_LOSSES)EPSmake_strictly_feasiblec                 C   s   | | d d S )N   g      @ xar   r   ~/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/scipy/optimize/tests/test_least_squares.pyfun_trivial   s   r           c                 C   s   d| |  S Nr   r   r   r   r   r   jac_trivial      r   c                 C   s   t | d | d gS Nr      nparrayr   r   r   r   fun_2d_trivial   s   r!   c                 C   s
   t dS r   )r   identityr    r   r   r   jac_2d_trivial   s   
r#   c                 C   s*   t d| d | d d   d| d  gS )N
   r   r   r   r   r    r   r   r   fun_rosenbrock    s   *r%   c                 C   s   t d| d  dgddggS )Nr   r$   r   r    r   r   r   jac_rosenbrock$   s   r(   c                 C   s$   t d| d  dgddgddggS )Nr&   r   r$   r'   r   r   r    r   r   r   jac_rosenbrock_bad_dim+   s
   r)   c                 C      t | d S Nr   )r%   r    r   r   r   fun_rosenbrock_cropped3   r   r,   c                 C   r*   r+   )r(   r    r   r   r   jac_rosenbrock_cropped7   r   r-   c                 C   s   t | | d | d gS )Nr      r   r    r   r   r   fun_wrong_dimensions<   s   r/   c                 C   s   t t| |dS )N)r   )r   
atleast_3dr   r   r   r   r   jac_wrong_dimensions@   s   r1   c                 C   s   t t| jd }t|d |d f}| ||f} | |ddddf< |d dddf |dd ddf  |ddd df  |dddd f  d|   | d  }| S )Nr   r   r   r'      r.   )intr   sqrtshapezerosreshaperavel)r   nuyr   r   r   fun_bvpD   s   `r=   c                   @   s&   e Zd Zd
ddZdd Zdd Zd	S )BroydenTridiagonald   sparsec                    sd  t jd | _t |  _t dd| _t dd| _  jdt j	| 7  _  jdt j	| 7  _  jdt j	| 7  _t
 j j j _|dkrt||ftd _t |}d	 j||f< t d	|}d	 j||d	 f< t |d	 }d	 j||d	 f<  j _d S |d
kr fdd _d S |dkrd  _ fdd _d S td d S )Nr   r2         gr   皙?r@   )dtyper   operatorc                    s   t  | S N)r   _jacr    selfr   r   <lambda>h       z-BroydenTridiagonal.__init__.<locals>.<lambda>densec                    s     |  S rE   )rF   toarrayr    rG   r   r   rI   k   rJ   F)r   randomseedr:   onesx0linspacelbubrandnr   r
   r4   sparsityarangerF   jacr   )rH   r:   modeir   rG   r   __init__N   s0   
zBroydenTridiagonal.__init__c                 C   sP   d| | d }|dd   |d d 8  < |d d  d|dd   8  < |S )Nr.   r   r'   r   r   )rH   r   fr   r   r   funo   s    zBroydenTridiagonal.func                 C   sr   t | j| jf}t| j}dd|  |||f< td| j}d|||d f< t| jd }d|||d f< |S )Nr.   r   r   r'   r2   )r
   r:   r   rV   )rH   r   JrY   r   r   r   rF   u   s   zBroydenTridiagonal._jacN)r?   r@   )__name__
__module____qualname__rZ   r\   rF   r   r   r   r   r>   M   s    
!r>   c                   @   s.   e Zd ZdZ		dddZdd	 Zd
d ZdS )ExponentialFittingProblemz]Provide data and function for exponential fitting in the form
    y = a + exp(b * x) + noise.r   r'   r      Nc           	      C   s   t j| || _d| _t d| _t |d |d || _|t 	|| j  | _
|  j
|t j| j 7  _
t jd| j|}| j
|  d| t j| 7  < t ||g| _d S )Nr   r   r   2   )r   rM   rN   mr:   r7   p0rQ   r   expr<   rT   randintrandr   p_opt)	rH   r   bnoise
n_outliersx_rangen_pointsrandom_seedoutliersr   r   r   rZ      s   "z"ExponentialFittingProblem.__init__c                 C   s"   |d t |d | j  | j S r   )r   rg   r   r<   rH   pr   r   r   r\      s   "zExponentialFittingProblem.func                 C   sL   t | j| jf}d|d d df< | jt |d | j  |d d df< |S )Nr   r   )r   emptyre   r:   r   rg   )rH   rs   r]   r   r   r   rW      s   &zExponentialFittingProblem.jac)r   rb   rc   N)r^   r_   r`   __doc__rZ   r\   rW   r   r   r   r   ra      s    
ra   c                 C   sL   t d| jf}d|  }d|d d  |d< |d |d< d|d  |d< |S )Nr.   r   gUUUUUU?r   gUUUUUUgr   )r   rt   size)zrhotr   r   r   cubic_soft_l1   s   rz   c                   @   s   e Z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
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d#d$ Zd%d& Zd'd( Zd)S )*	BaseMixinc                 C   s6   t td| jd}t|jddd t|jt|j d S )N       @methodr   -C6?atol)r   r   r~   r   r   r\   rH   resr   r   r   
test_basic   s   zBaseMixin.test_basicc              	   C   s   d}dddt fD ]Z}t %}|td ttd||f| jd}ttd|d|i| jd	}W d    n1 s5w   Y  t|j|d
d t|j|d
d t	t
ttdd| jd t	t
ttdddi| jd	 qd S )N      @2-point3-pointcsBjac='(3-point|cs)' works equivalently to '2-point' for method='lm'r|   )argsr~   r   )kwargsr~   r   )rtol)r.   r3   kaboomr.   )r   r   filterUserWarningr   r   r~   r   r   assert_raises	TypeError)rH   r   rW   supr   res1r   r   r   test_args_kwargs   s,   


zBaseMixin.test_args_kwargsc              	   C   s   dddt fD ],}t }|td ttd|| jd}W d    n1 s%w   Y  t|jddd	 qt	t
ttdd
| jd d S )Nr   r   r   r   r|   r}   r   r   r   oopsrW   r~   )r   r   r   r   r   r   r~   r   r   r   
ValueError)rH   rW   r   r   r   r   r   test_jac_options   s   
zBaseMixin.test_jac_optionsc                 C   s0   dD ]}t td|| jd}t|jddd qd S )N)N   r|   )max_nfevr~   r   r   r   )r   r   r~   r   r   )rH   r   r   r   r   r   test_nfev_options   s   zBaseMixin.test_nfev_optionsc                 C   s   dt dgdfD ]}ttd|d}t|jd q	ttttdd| jd ttttdd	| jd ttttdd | jd ttttdd
| jd d S )N      ?      ?rW   r|   )x_scaler   auto)r   r~         y      ?       @)	r   r   r   r   r   r   r   r   r~   )rH   r   r   r   r   r   test_x_scale_options   s   
zBaseMixin.test_x_scale_optionsc                 C   s   t tdd| jd}t tdd| jd}t tdd | jd}t|jddd t|jddd t|jddd t|j|j t|j|j d S )Nr|   rB   )	diff_stepr~   gr   r   r   )r   r   r~   r   r   r   nfev)rH   r   res2res3r   r   r   test_diff_step   s   zBaseMixin.test_diff_stepc                 C   s8   t tttd| jddid t tttd| jddid d S )Nr|   no_such_optionr?   )r~   optionsr   )r   r   r   r   r~   rG   r   r   r   test_incorrect_options_usage   s   




z&BaseMixin.test_incorrect_options_usagec                 C   s   t td| jd}t|jddd t|jd t|jd t|jddd t|jddd t|j	ddd t
|jd | jd	krNt|jd
k  t|jd u  nt|jdk  t|jdk  t|jdk t|j d S )Nr|   r}   r   r   r   g      )@   {Gz?lm   r$   )r   r   r~   r   r   costr\   rW   grad
optimalityr   active_maskr   r   njevstatussuccessr   r   r   r   test_full_result   s   
zBaseMixin.test_full_resultc                 C   s   | j dkrd S ttd| j dd}t|jtdg t|jd t|jtdg t|j	tdgg t|j
td	g t|jd	 t|jtd
g t|jd t|jd t|jd
 t|jd
 d S )Nr   r|   r   )r~   r   r   g     @D@	   r3   $   r   )r~   r   r   r   r   r   r   r   r\   rW   r   r   r   r   r   r   r   r   r   r   r   test_full_result_single_fev  s    

z%BaseMixin.test_full_result_single_fevc              
   C   s   ddg}ddg}t dddtgdtddgdgd	d
gD ]/\}}}t }|td tt||||| j	d}W d    n1 s@w   Y  t
|j| qd S )Nr2   r   r   r   r   r   皙?rW   exactlsmrr   r   	tr_solverr~   )r   r(   r   r   r   r   r   r   r%   r~   r   r   )rH   rP   x_optrW   r   r   r   r   r   r   r   test_rosenbrock#  s"   

zBaseMixin.test_rosenbrockc              	   C   s   ddg}| j dkrtttt|dd d S tdddtgdtdd	gd
gddgD ]\}}}tt||||| j d}t	|j
ddd q(d S )Nr2   r   r   r}   r   r   r   r   r   rW   r   r   r   r   g+=r   )r~   r   r   r   r,   r   r-   r   r   r   r   )rH   rP   rW   r   r   r   r   r   r   test_rosenbrock_cropped1  s    


z!BaseMixin.test_rosenbrock_croppedc                 C   s   t tttd| jd d S Nr|   r}   )r   r   r   r/   r~   rG   r   r   r   test_fun_wrong_dimensions@     
z#BaseMixin.test_fun_wrong_dimensionsc                 C   s   t tttdt| jd d S r   )r   r   r   r   r1   r~   rG   r   r   r   test_jac_wrong_dimensionsD  s   
z#BaseMixin.test_jac_wrong_dimensionsc                 C   s"   ddg}t ttt|t| jd d S )Nr   r   r}   )r   r   r   r%   r)   r~   rH   rP   r   r   r   (test_fun_and_jac_inconsistent_dimensionsH  s   

z2BaseMixin.test_fun_and_jac_inconsistent_dimensionsc                 C   s*   t ddd}tttt|| jd d S )Nr3   r   r}   )r   rO   r8   r   r   r   r   r~   r   r   r   r   test_x0_multidimensionalM  s   

z"BaseMixin.test_x0_multidimensionalc                 C   s   d}t ttt|| jd d S )N       @        r}   r   r   r   r   r~   r   r   r   r   test_x0_complex_scalarR  s   

z BaseMixin.test_x0_complex_scalarc                 C   s    ddg}t ttt|| jd d S )Nr   r   r}   r   r   r   r   r   test_x0_complex_arrayW  s   

zBaseMixin.test_x0_complex_arrayc                 C   sZ   d}t |d }| jdkrd}nd}tt|d| j|d}t|j|k  t|jdk  d S )	Nr$   r   r   i  r?   r   )ftolr~   r   r   )r   rO   r~   r   r=   r   r   r   )rH   r:   rP   r   r   r   r   r   test_bvp\  s   
zBaseMixin.test_bvpc              
   C   s   t tttd| jd d d d d S )Nr|   )r~   r   xtolgtolr   rG   r   r   r   /test_error_raised_when_all_tolerances_below_epsm  s   


z9BaseMixin.test_error_raised_when_all_tolerances_below_epsc              
   C   sV   | j dkrd S ddg}ddg}dD ]\}}}tt|t|||| j d}t|j| qd S )Nr   r2   r   )):0yE>NN)Nr   N)NNr   )rW   r   r   r   r~   )r~   r   r%   r(   r   r   )rH   rP   r   r   r   r   r   r   r   r   0test_convergence_with_only_one_tolerance_enabledr  s   
z:BaseMixin.test_convergence_with_only_one_tolerance_enabledN)r^   r_   r`   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{      s*    r{   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )BoundsMixinc                 C      t tttdd| jd d S )Nr|   )g      $@r   boundsr~   r   rG   r   r   r   test_inconsistent     

zBoundsMixin.test_inconsistentc                 C   r   )Nr|   )r   r3   r   r   rG   r   r   r   test_infeasible  r   zBoundsMixin.test_infeasiblec                 C   r   )Nr|   )r   r   r.   r   r   rG   r   r   r   test_wrong_number  r   zBoundsMixin.test_wrong_numberc                 C   sF   t tttddddgf| jd t tttddgdgddgf| jd d S )Nr|   r   r   r   r   g      @)r   r   r   r   r~   r%   rG   r   r   r   test_inconsistent_shape  s   

z#BoundsMixin.test_inconsistent_shapec                 C   s   dddt fD ]R}ttd|d| jd}t|jddd	 t|jd
g td|j  ko,dkn   ttd|d| jd}t|jddd	 t|jdg td|j  koTdkn   qd S )Nr   r   r   r|   )r   r   rW   r   r~   r   r   r   r   r'   r.   )r   r   r   )	r   r   r   r~   r   r   r   r   r   )rH   rW   r   r   r   r   test_in_bounds  s    zBoundsMixin.test_in_boundsc                 C   s   dddt fD ][}ddg}tt||d}t|jddg tt||dddgf| jd	}t|jddg tt||d
dgdf| jd	}t|jd
dg tt||ddgddgf| jd	}t|jddgdd qd S )Nr   r   r   r   )rW   r   r   r|   r   g333333?r   r   r'   h㈵>r   )r#   r   r!   r   r   r~   )rH   rW   rP   r   r   r   r   test_bounds_shape  s$   zBoundsMixin.test_bounds_shapec                 C   s*  t ddg}t ddg}t ddg}t ddg}t ddg}|t j dgt jff|t j dgt jff|t j dgt jff|t j dgdt jgff|ddgddgff|d	dgd
dgffg}|D ]/\}}tdddtgddd
gdgddgD ]\}	}
}tt||	||
|| jd}t|j	ddd qxqcd S )Ng       r   r|   r   g333333rA   g      ?r   g      Ir   r?   r   r   r   rW   r   r   r   r   r   )
r   r   infr   r(   r   r%   r~   r   r   )rH   x0_1x0_2x0_3x0_4x0_5problemsrP   r   rW   r   r   r   r   r   r   test_rosenbrock_bounds  s2   

z"BoundsMixin.test_rosenbrock_boundsN)
r^   r_   r`   r   r   r   r   r   r   r   r   r   r   r   r     s    r   c                   @   s\   e Z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
dd Zdd ZdS )SparseMixinc              	   C   sF   t  }ttt|j|j|jd| jd ttt|j|jd|j| jd d S )Nr   r   r~   )r   jac_sparsityr~   )	r>   r   r   r   r\   rP   rW   r~   rU   rr   r   r   r   test_exact_tr_solver  s   
z SparseMixin.test_exact_tr_solverc                 C   s   t dd}t dd}t|j|j|j| jd}t|j|j|j| jd}t|j|j t|j	|j	dd t|j
ddd t|j
ddd d S )Nr@   rX   rK   r   #B;r   r   )r>   r   r\   rP   rW   r~   r   r   r   r   r   rH   r@   rK   
res_sparse	res_denser   r   r   test_equivalence  s   

zSparseMixin.test_equivalencec                 C   s8   t  }t|j|j|j| jddid}t|jddd d S )Nbtol绽|=r~   
tr_optionsr   r   r   )r>   r   r\   rP   rW   r~   r   r   rH   rs   r   r   r   r   test_tr_options  s
   zSparseMixin.test_tr_optionsc              	   C   sH   t  }ttt|j|j|jd| jd ttt|j|j|jdddid d S )Nbestr   r   tolr   )r   r   )	r>   r   r   r   r\   rP   rW   r~   r   rr   r   r   r   test_wrong_parameters  s   
z!SparseMixin.test_wrong_parametersc                 C   s   t dd}t dd}t|j|j|j| jd}t|j|j|j| jd}t|jddd t|jddd tt	|j tt
|jtj d S )Nr@   r   rK   r   r   r   r   )r>   r   r\   rP   rW   r~   r   r   r   r	   
isinstancer   ndarrayr   r   r   r   test_solver_selection  s   

z!SparseMixin.test_solver_selectionc                 C   s   t  }dD ]:}t|j|j|| jd}t|j|j|| j|jd}t|j|j t|j	|j	dd t|j
ddd t|j
ddd qd S )N)r   r   r   r}   )r~   r   r   r   r   )r>   r   r\   rP   r~   rU   r   r   r   r   r   )rH   rs   rW   r   r   r   r   r   test_numerical_jac  s   zSparseMixin.test_numerical_jacc              	   C   s   t  }t|jdddgd |jgD ]P\}}t|j|j||jtj	f| j
|d}t|j|j|tj	 |jf| j
|d}t|j|j||j|jf| j
|d}t|jddd t|jddd t|jddd qd S )Nr   r   r   )r   r~   r   r   r   r   )r>   r   rW   rU   r   r\   rP   rR   r   r   r~   rS   r   r   )rH   rs   rW   r   res_1res_2res_3r   r   r   test_with_bounds  s(   zSparseMixin.test_with_boundsc                 C   s2   t  }|jd d }ttt|j|j|| jd d S )Nr'   r   r~   )r>   rU   r   r   r   r\   rP   r~   )rH   rs   rU   r   r   r   test_wrong_jac_sparsity  s
   
z#SparseMixin.test_wrong_jac_sparsityc              	   C   sT   t dd}t|j|j|j| jd}t|jddd tt	t|j|j|j| jdd d S )	NrD   r   r}   r   r   r   r   )r~   r   
r>   r   r\   rP   rW   r~   r   r   r   r   r   r   r   r   test_linear_operator  s   

z SparseMixin.test_linear_operatorc              	   C   s\   t  }t|j|j|j| jdd}t|jddd t dd}tt	t|j|j|j| jdd d S )NrW   )r~   r   r   r   r   rD   r   r  r   r   r   r   test_x_scale_jac_scale$  s   

z"SparseMixin.test_x_scale_jac_scaleN)r^   r_   r`   r   r   r   r   r   r   r  r  r  r  r   r   r   r   r     s    r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )LossFunctionMixinc                 C   sF   t D ]}ttd|| jd}t|jddd qttttdd| jd d S )Nr|   lossr~   r   gV瞯<r   hinge)LOSSESr   r   r~   r   r   r   r   rH   r
  r   r   r   r   test_options0  s   

zLossFunctionMixin.test_optionsc                 C   s2   t D ]}ttd|| jd}t|jt|j qd S )Nr|   r	  )r  r   r   r~   r   r\   r   r  r   r   r   test_fun9  s   zLossFunctionMixin.test_func                 C   s  t dg}tt|tdd| jd}t|jd| |d d   tt|tdd| jd}t|jd|  tt|tdd| jd}t|jd| |d d  d|d d d  d	   tt|td
d| jd}t|jd| |d d  d|d d d    tt|tdd| jd}t|jd| |d d  d|d d d    tt|tt	d| jd}t|jd| |d d  d|d d d  d   d S )Nr|   linearr   r
  r   r~   r   r   hubersoft_l1r   cauchyarctanr3   gUUUUUU?)
r   r   r   r   r   r~   r   r   r   rz   )rH   r   r   r   r   r   	test_gradA  s:   


*
0
0
*zLossFunctionMixin.test_gradc              	   C   s4  d}|d d }t t|tdd| jd}t|jd|  t t|tdd| jd}t|jd| td   t t|tdd	dd
}t|jd|  t t|tdd| jd}t|jd| d|d  d   t t|tdd| jd}t|jd| td   t t|tdd	d| jd}|d	 }t|jd| d|d  d  d|d    t t|tdd| jd}t|jd| td   t t|tddd| jd}|d }t|jd| dd|d   d  d|d    t t|ttdd}t|jd| td   t t|ttddd
}|d }t|jd| d|d d  d  d|d  d   d S )Nr|   r   r   r  r   r  r  r   r$   )r
  f_scaler   r  g      r  )r
  r  r   r~   r  g      4@r   r.   r3   )r
  r      g)	r   r   r   r~   r   rW   r   r   rz   )rH   r   r[   r   fsr   r   r   test_jac`  s^   	



 

,

0
*zLossFunctionMixin.test_jacc                 C   s   dD ]X}t dd|dd}ddd|jfD ]F}t|j|j|| jd	}t|jdd
d tD ].}|dkr1q*t|j|j|||| jd}t|jdd
d t	t
|j|j t
|j|j k  q*qqd S )N)rB   r   r   rB   r   )rp   r   r   r   r   r   r   r  )rW   r
  r  r~   )ra   rW   r   r\   rf   r~   r   r   r  r   r   r   rj   )rH   rl   rs   rW   res_lsqr
  
res_robustr   r   r   test_robustness  s*   z!LossFunctionMixin.test_robustnessN)r^   r_   r`   r  r  r  r  r  r   r   r   r   r  /  s    	Dr  c                   @   s   e Zd ZdZdS )
TestDogboxdogboxN)r^   r_   r`   r~   r   r   r   r   r    s    r  c                   @   s   e Zd ZdZdd ZdS )TestTRFtrfc                 C   s@   t  }dD ]}t|j|j|jdd|id}t|jddd qd S )N)TFr!  
regularizer   r   r   r   )r>   r   r\   rP   rW   r   r   )rH   rs   r"  r   r   r   r   test_lsmr_regularization  s   z TestTRF.test_lsmr_regularizationN)r^   r_   r`   r~   r#  r   r   r   r   r     s    r   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestLMr   c                 C   s   t tttdddd d S )Nr|   )g      r   r   r   r   r   r   r   rG   r   r   r   test_bounds_not_supported  r   z TestLM.test_bounds_not_supportedc                 C   s   ddg}t ttt|dd d S )Nr2   r   r   r}   )r   r   r   r,   r   r   r   r   test_m_less_n_not_supported  s   

z"TestLM.test_m_less_n_not_supportedc                 C   s$   t  }ttt|j|j|jdd d S )Nr   r}   r>   r   r   r   r\   rP   rW   rr   r   r   r   test_sparse_not_supported  s   
z TestLM.test_sparse_not_supportedc                 C   s   t tttddgdd d S )Nr|   r   r   r  r%  rG   r   r   r   test_jac_sparsity_not_supported  r   z&TestLM.test_jac_sparsity_not_supportedc                 C   s(   t dd}ttt|j|j|jdd d S )NrD   r   r   r}   r(  rr   r   r   r   !test_LinearOperator_not_supported  s   

z(TestLM.test_LinearOperator_not_supportedc                 C   s8   t tdddd}t|jddd ttt tdddd	 d S )
Nr|   r  r   r	  r   r   r   r  )r~   r
  )r   r   r   r   r   r   r   r   r   r   	test_loss  s
   

zTestLM.test_lossN)
r^   r_   r`   r~   r&  r'  r)  r*  r+  r,  r   r   r   r   r$    s    r$  c                  C   s   t td} t| jddd d S )Nr|   r   r   r   )r   r   r   r   )r   r   r   r   r     s   
r   c                  C   s,   dD ]\} }}t tttd|| |dd qd S )N))NvIh%<=r-  )r-  Nr-  )r-  r-  Nr|   r   )r   r   r   r~   r%  )r   r   r   r   r   r   test_small_tolerances_for_lm  s
   r.  c                     s   t jd t dddd} t jdd}dd   fdd}t|d	d	g| |fd
}|jdks5J t|jt 	ddgdd d S )Nr   r   r?   float32c                 S   s   | d | d |  S r   r   )rs   r   r   r   r   func  s   ztest_fp32_gh12991.<locals>.funcc                    s    | || S rE   r   )rs   r   r<   r0  r   r   err  s   ztest_fp32_gh12991.<locals>.errr   )r   r.   g W ?g	?g-C6
?r   )
r   rM   rN   rQ   astyper   r   r   r   r   )r   r<   r2  r   r   r1  r   test_fp32_gh12991  s   r4  )r   )r   )6	itertoolsr   numpyr   numpy.linalgr   numpy.testingr   r   r   r   pytestr   r   scipy.sparser	   r
   scipy.sparse.linalgr   scipy.optimizer   !scipy.optimize._lsq.least_squaresr   scipy.optimize._lsq.commonr   r   r   r   r!   r#   r%   r(   r)   r,   r-   r/   r1   r=   r>   ra   rz   listkeysr  r{   r   r   r  r  r   r$  r   r.  r4  r   r   r   r   <module>   sL    


	3 TJe 	"