+
    Y°³jÈ7  ã                   óÆ   € R t ^ RIt^RIHtHtHtHt ^RIHt Rt	R t
R tR tR tR	 tR
 tR tR tR tRR ltRR ltR tR tRR ltR tR tR tRR ltRR ltR tR# )zù
This module provides some basic linear algebra procedures.

Translated from Zaikun Zhang's modern-Fortran reference implementation in PRIMA.

Dedicated to late Professor M. J. D. Powell FRS (1936--2015).

Python translation by Nickolai Belakovski.
N)Ú	DEBUGGINGÚEPSÚREALMAXÚREALMIN)ÚpresentFc                 ó¼   € \         '       g   \        P                  ! W4      # ^ p\        \	        V 4      4       F  pW V,          W,          ,          ,          pK!  	  V# ©é    )ÚUSE_NAIVE_MATHÚnpÚdotÚrangeÚlen©ÚxÚyÚresultÚis   &&  Úf/home/luca/screen-checking/.venv/lib/python3.14/site-packages/scipy/_external/pyprima/common/linalg.pyÚinprodr      sC   € ß‹>Ü�vŠv�a‹|ÐØ€FÜ”3�q“6Ž]ˆØ�A•$˜�•+ÕŠñ à€Mó    c                 óÆ   € \         P                  ! VP                  ^,          4      p\        VP                  ^,          4       F  p\	        WRV3,          4      W#&   K  	  V# )é   ºNNN)r   ÚzerosÚshaper   r   r   s   &&  r   Ú	matprod12r   %   sH   € Ü�XŠX�a—g‘g˜a•jÓ!€FÜ�1—7‘7˜1•:ÖˆÜ˜1  1 �gÓ&ˆ‹	ñ à€Mr   c                 óÖ   € \         P                  ! V P                  ^ ,          4      p\        V P                  ^,          4       F!  pW RV3,          W,          ,          ,          pK#  	  V# ©r	   r   ©r   r   r   r   r   s   &&  r   Ú	matprod21r    ,   sJ   € Ü�XŠX�a—g‘g˜a•jÓ!€FÜ�1—7‘7˜1•:ÖˆØ�A�q�D•'˜A�D•.Õ Šñ à€Mr   c           	      ód  € \         P                  ! V P                  ^ ,          VP                  ^,          34      p\        VP                  ^,          4       FU  p\        V P                  ^,          4       F2  pVRV3;;,          V RV3,          WV3,          ,          ,          uu&   K4  	  KW  	  V# r   r   )r   r   r   r   Újs   &&   r   Ú	matprod22r#   3   s   € Ü�XŠX�q—w‘w˜q•z 1§7¡7¨1¥:Ð.Ó/€FÜ�1—7‘7˜1•:ÖˆÜ�q—w‘w˜q•zÖ"ˆAØ�1�a�4�L˜A˜a ˜d�G a¨1¨¥gÕ-Õ-�Ló #ñ ð €Mr   c                 ól  € \         '       g	   W,          # \        V P                  4      ^8X  d&   \        VP                  4      ^8X  d   \        W4      # \        V P                  4      ^8X  d&   \        VP                  4      ^8X  d   \	        W4      # \        V P                  4      ^8X  d&   \        VP                  4      ^8X  d   \        W4      # \        V P                  4      ^8X  d&   \        VP                  4      ^8X  d   \        W4      # \        RV P                   RVP                   24      h)r   zInvalid shapes for x and y: z and )r
   r   r   r   r   r    r#   Ú
ValueError)r   r   s   &&r   Úmatprodr&   ;   sÓ   € ß‹>Ø�sˆ
Ü
ˆ1�7‰7ƒ|�qÔœS §¡›\¨QÔ.Ü�a‹|ÐÜ	ˆQ�W‰W‹˜Ô	œs 1§7¡7›|¨qÔ0Ü˜‹ÐÜ	ˆQ�W‰W‹˜Ô	œs 1§7¡7›|¨qÔ0Ü˜‹ÐÜ	ˆQ�W‰W‹˜Ô	œs 1§7¡7›|¨qÔ0Ü˜‹ÐäÐ7¸¿¹°yÀÀaÇgÁgÀYÐOÓPÐPr   c                 óü   € \         '       g   \        P                  ! W4      # \        P                  ! \	        V 4      \	        V4      34      p\        \	        V 4      4       F  pWV,          ,          VR V3&   K  	  V# )r   )r
   r   Úouterr   r   r   r   s   &&  r   Úoutprodr)   J   sZ   € ß‹>Ü�xŠx˜‹~ÐÜ�XŠX”s˜1“vœs 1›vÐ&Ó'€FÜ”3�q“6Ž]ˆØ �t�8ˆF�1�a�4‹Lñ à€Mr   c           	      ó‚  € \         '       g)   \        P                  P                  WR R7      ^ ,          # V P                  ^ ,          pV P                  ^,          p\        WE4      p\        P                  ! V4      pVP                  4       p\        V^,
          RR4       F›  p	\        W‚RV	3,          4      p
\        \        P                  ! V4      \        P                  ! VRV	3,          4      4      p\        W«4      '       d   ^ Wy&   Kk  W£V	,          ,          Wy&   W‡V	,          V RV	3,          ,          ,
          pK�  	  V# )N)Úrcondr   éÿÿÿÿ)r
   r   ÚlinalgÚlstsqr   Úminr   Úcopyr   r   ÚabsÚisminor)ÚAÚbÚQÚRdiagÚmÚnÚrankr   r   r   ÚyqÚyqas   &&&&        r   Úlsqrr<   S   sé   € ß‹>Ü�y‰y�‰˜q¨4ˆÓ0°Õ3Ð3à	�‰��
€AØ	�‰��
€Aäˆq‹9€Dä
�Š�‹€AØ	�‰‹€Aä�4˜!•8˜R Ö$ˆÜ�A˜˜A˜•wÓˆÜ”R—V’V˜A“Y¤§¢ q¨¨A¨¥w£Ó0ˆÜ�2×ÒØˆA‹Dà˜a�•=ˆA‰DØ�a•D˜1˜Q ˜T�7•NÕ"ŠAñ %ð €Hr   c                 óR  € \         '       g   \        P                  ! W4      # \        P                  ! V 4      '       g   \	        V 4      pV# \        P                  ! V4      '       g   \	        V4      pV# \	        \        P
                  ! W.4      4      p\        P
                  ! \        V4      \        V4      .4      pV^ ,          \        P                  ! \        4      8”  dU   V^,          \        P                  ! \        R,          4      8  d(   \        P                  ! \        W3,          4      4      pV# V^,          ^ 8”  d_   V^,          \        P                  ! V^ ,          V^,          ,          V^ ,          V^,          ,          ,          ^,           4      ,          pV# ^ pV# )r	   çÍÌÌÌÌÌ @)r
   r   ÚhypotÚisfiniter1   Úarrayr/   ÚmaxÚsqrtr   r   Úsum)Úx1Úx2Úrr   s   &&  r   r?   r?   j   s%  € ß‹>Ü�xŠx˜ÓÐÜ�;Š;�r�?Š?Ü�‹Gˆð €Hô �[Š[˜�_Š_Ü�‹Gˆð €Hô ”—’˜"˜Ó"Ó#ˆÜ�HŠH”c˜!“fœc !›fÐ%Ó&ˆØˆQ�4”"—'’'œ'Ó"Ô" q¨¥t¬b¯gªg´g¸cµkÓ.BÔ'BÜ—’œ˜A�C›Ó!ˆAð
 €Hð	 ˆq�T�AŒXØ�!•”r—w’w  !¥ Q q¥T¥	¨A¨a­D°°1µ­IÕ6¸Õ:Ó;Õ;ˆAð €Hð ˆAØ€Hr   c           	      óÐ   € \         '       g    \        P                  P                  V 4      # \        P                  ! \        V  Uu. uF  qV,          NK  	  up4      4      pV# u upi ©N)r
   r   r-   ÚnormrC   rD   )r   Úxir   s   &  r   rJ   rJ   }   sL   € ß‹>Ü�y‰y�~‰~˜aÓ Ð ô �WŠW”S©!Ó,©! B˜RŸ%˜%©!Ñ,Ó-Ó.€FØ€Mùò -s   ÁA#c                 óx   € \        \        V 4      \        P                  ! \        V 4      4      ,
          4      V8*  # rI   )Úprimasumr1   r   Útril©r3   Útols   &&r   ÚistrilrQ   ‡   ó'   € Ü”C˜“FœRŸWšW¤S¨£V›_Õ,Ó-°Ñ4Ð4r   c                 óx   € \        \        V 4      \        P                  ! \        V 4      4      ,
          4      V8*  # rI   )rM   r1   r   ÚtriurO   s   &&r   ÚistriurU   Š   rR   r   c                 óà  € \         '       g    \        P                  P                  V 4      # V P	                  4       p V P
                  ^ ,          p\        V 4      '       d’   V P                  p\        P                  ! W34      p\        V4       FS  p^W$V3,          ,          W4V3&   \        VRV1RV13,          VRV1V3,          4      ) W$V3,          ,          VRV1V3&   KU  	  VP                  # \        V 4      '       d|   \        P                  ! W34      p\        V4       FS  p^WV3,          ,          W4V3&   \        VRV1RV13,          V RV1V3,          4      ) WV3,          ,          VRV1V3&   KU  	  V# \        V 4      w  rRpVP                  p\        P                  ! W34      p\        V^,
          RR4       FV  pVRV3,          \        VRV^,           V13,          W$^,           V1V3,          4      ,
          W$V3,          ,          VRV3&   KX  	  \        P                  ! V\        R7      p\        P                  ! ^ V^,
          V4      Wv&   VRV3,          P                  pV# )r	   Nr   ©Údtyper,   )r
   r   r-   Úinvr0   r   rQ   ÚTr   r   r&   rU   ÚqrÚintÚlinspace)r3   r8   ÚRÚBr   r5   ÚPÚInvPs   &       r   rY   rY   Ž   s  € ß‹>Ü�y‰y�}‰}˜QÓÐØ	�‰‹€AØ	�‰��
€AÜˆa‡y‚yà�C‰CˆÜ�HŠH�a�VÓˆÜ�q–ˆAØ˜!˜q˜D�'•kˆA�ˆd‰GÜ  " 1 " b q b &¥	¨1¨R¨a¨R°¨U­8Ó4Ð4°q¸A¸µwÕ>ˆAˆbˆqˆb�!ˆe‹Hñ ð �s‰sˆ
Ü	��ŠÜ�HŠH�a�VÓˆÜ�q–ˆAØ˜!˜q˜D�'•kˆA�ˆd‰GÜ  " 1 " b q b &¥	¨1¨R¨a¨R°¨U­8Ó4Ð4°q¸A¸µwÕ>ˆAˆbˆqˆb�!ˆe‹Hñ ð €Hô �Q“%‰ˆˆaØ�C‰CˆÜ�HŠH�a�VÓˆÜ�q˜1•u˜b "Ö%ˆAØ˜˜A˜•w¤¨¨1¨a°!­e°A¨g¨:­¸¸a½%À¸'À1¸*½Ó!FÕFÈ!ÈqÈDÍ'ÕQˆAˆa�ˆd‹Gñ &ä�xŠx˜¤Ô%ˆÜ—+’+˜a  1¥ aÓ(ˆ‰Øˆa�ˆg�J�L‰LˆØ€Hr   c                 óÌ  € V P                   ^ ,          pV P                   ^,          p\        P                  ! V4      pV P                  p\        P                  ! ^ V^,
          V\
        R7      p\        V4       EFX  p\        P                  ! \        \        WFV^,           1Wa^,           13,          4      ^R7      ^ R7      pV^ 8”  dD   WrV,
          ^,
          8:  d0   Wv,          pWW,          WV,          uWV&   WW&   WGV.R3,          WFV.R3&   \        V^,
          VR4       F­  p\        WFWh.3,          4      P                  p	\        P                  ! \        WFV3,          WFV3,          4      ^ 4      WFWh.3&   \        WF^,           V^,           1Wh.3,          V	4      WF^,           V^,           1Wh.3&   \        VRWh.3,          V	4      VRWh.3&   K¯  	  EK[  	  VP                  p
W:V3# )r	   rW   ©Úaxisr   r,   )r   r   ÚeyerZ   r]   r\   r   ÚargmaxrM   Ú	primapow2ÚplanerotÚappendr?   r&   )r3   r7   r8   r5   rZ   r`   r"   Úkr   ÚGr^   s   &          r   r[   r[   ­   s”  € Ø	�‰��
€AØ	�‰��
€Aä
�Šˆq‹	€AØ	�‰€AÜ
�Š�A�q˜•s˜A¤SÔ)€Aä�1�XˆÜ�IŠI”hœy¨¨Q¨q­S¨5°!°aµC°%¨<­Ó9ÀÔBÈÔKˆØˆqŒ5�Q˜a�% !�)”^Ø�FˆAØ�˜q�tˆJˆA‰D�!‘$Ø ˜V Q˜Y�<ˆA�!ˆf�aˆi‰LÜ�q˜•s˜A˜rÖ"ˆAÜ˜˜q˜f˜9�Ó&×(Ñ(ˆAÜŸ9š9¤U¨1°¨T­7°A¸°dµGÓ%<¸aÓ@ˆA�!�ˆi‰LÜ%,¨Q°1­u°Q¸µU¨{¸Q¸FÐ/BÕ-CÀQÓ%GˆA�!�e�A˜•Eˆk˜A˜6Ð!Ñ"Ü" 1 Q¨¨ Y¥<°Ó3ˆAˆa�!�ˆi‹Lô	 #ñ ð 	
�‰€Aà�ˆ7€Nr   c                óZ  € \         '       g   \        P                  ! WR7      # Vf3   V P                  ^8X  d   \        \	        V ^ R7      4      # \        V 4      # V^ 8X  dc   \        P
                  ! V P                  ^,          4      p\        V P                  ^,          4       F  p\        V RV3,          4      W#&   K  	  V# V^8X  db   \        P
                  ! V P                  ^ ,          4      p\        V P                  ^ ,          4       F  p\        WR3,          4      W#&   K  	  V# R# )zÒ
According to its documentation, np.sum will sometimes do partial pairwise summation.
For our purposes, when comparing, we want don't want to do anything fancy, and we
just want to add things up one at a time.
rc   Nr   )r
   r   rD   ÚndimrM   r   r   r   )r   rd   r   r   s   &&  r   rM   rM   Æ   sÞ   € ÷ ‹>Ü�vŠv�aÔ#Ð#Ø‚|Ø�6‰6�QŒ;ä”x ¨Ô*Ó+Ð+ä�q“6ˆMØ	�ŒÜ—’˜!Ÿ'™' !�*Ó%ˆÜ�q—w‘w˜q•zÖ"ˆAÜ˜A˜a ˜d�G›ˆF‹Iñ #àˆØ	�ŒÜ—’˜!Ÿ'™' !�*Ó%ˆÜ�q—w‘w˜q•zÖ"ˆAÜ˜A ˜d�G›ˆF‹Iñ #àˆñ	 
r   c                ó   € W ,          # )a,  
Believe it or now, x**2 is not always the same as x*x in Python. In Fortran they
appear to be identical. Here's a quick one-line to find an example on your system
(well, two liner after importing numpy):
list(filter(lambda x: x[1], [(x:=np.random.random(), x**2 - x*x != 0) for _ in range(10000)]))
© )r   s   &r   rg   rg   à   s   € ð �3€Jr   c           
     ó  € \         '       d   \        V 4      ^8X  g   Q R4       h\        \        P                  ! V 4      4      '       d   ^p^ pEMf\        \        P                  ! V 4      4      '       d�   ^\        P                  ! ^4      ,          \        P                  ! V ^ ,          4      ,          p^\        P                  ! ^4      ,          \        P                  ! V ^,          4      ,          pEMÁ\        V ^ ,          4      ^ 8:  d   \        V ^,          4      ^ 8:  d   ^p^ pEM�\        V ^,          4      \        \        V ^ ,          4      ,          8:  d"   \        P                  ! V ^ ,          4      p^ pEM:\        V ^ ,          4      \        \        V ^,          4      ,          8:  d"   ^ p\        P                  ! V ^,          4      pEMç\        \        P                  ! \        P                  ! \        4      \        P                  ! V 4      8  \        P                  ! V 4      \        P                  ! \        R,          4      8  4      4      '       d.   \        V 4      pV ^ ,          V,          pV ^,          V,          pEM/\        V ^ ,          4      \        V ^,          4      8”  d…   V ^,          V ^ ,          ,          p\        ^\        V4      \        P                  ! ^WD,          ,           4      4      pV\        P                  ! V ^ ,          4      ,          p^V,          pWE,          pM„V ^ ,          V ^,          ,          p\        ^\        V4      \        P                  ! ^WD,          ,           4      .4      pV\        P                  ! V ^,          4      ,          pWE,          p^V,          p\        P                   ! W.V) V..4      p\         '       Edª   VP"                  R8X  g   Q h\        P
                  ! \        P$                  ! V4      4      '       g   Q h\        VR,          VR	,          ,
          4      \        VR
,          VR,          ,           4      ,           ^ 8:  g   Q h\        P&                  ! R\        P(                  ! RR\        ,          4      4      p\+        Wg4      '       g   Q h\        \        P                  ! \        P$                  ! V 4      \        P                  ! V 4      \        P                  ! \        R,          4      8  4      4      '       d_   \        P,                  P                  V 4      p\        \        W`,          V^ .,
          4      4      \        WwV,          4      8:  g   Q R4       hV# )a(  
As in MATLAB, planerot(x) returns a 2x2 Givens matrix G for x in R2 so that Y=G@x has Y[1] = 0.
Roughly speaking, G = np.array([[x[0]/R, x[1]/R], [-x[1]/R, x[0]/R]]), where R = np.linalg.norm(x).
0. We need to take care of the possibilities of R=0, Inf, NaN, and over/underflow.
1. The G defined above is continuous with respect to X except at 0. Following this definition,
G = np.array([[np.sign(x[0]), 0], [0, np.sign(x[0])]]) if x[1] == 0,
G = np.array([[0, np.sign(x[1])], [np.sign(x[1]), 0]]) if x[0] == 0
Yet some implementations ignore the signs, leading to discontinuity and numerical instability.
2. Difference from MATLAB: if x contains NaN of consists of only Inf, MATLAB returns a NaN matrix,
but we return an identity matrix or a matrix of +/-np.sqrt(2). We intend to keep G always orthogonal.
zx must be a 2-vectorr>   g»½×Ùß|Û=çš™™™™™¹?g    €„.AzG @ X = [||X||, 0])é   rr   )r	   r	   )r   r   )r	   r   )r   r	   )r   r   Úanyr   ÚisnanÚallÚisinfrC   Úsignr1   r   Úlogical_andr   r   rJ   rB   rA   r   r@   ÚmaximumÚminimumÚisorthr-   )r   ÚcÚsrG   ÚtÚurk   rP   s   &       r   rh   rh   ê   s’  € ÷ ƒyÜ�1‹v˜Œ{Ð2Ð2Ó2ˆ{ô 	ŒB�HŠH�Q‹K×ÒàˆØŠÜ
Œb�hŠh�q‹k×
Ò
à”—’˜“
�NœRŸWšW Q q¥T›]Õ*ˆØ”—’˜“
�NœRŸWšW Q q¥T›]Õ*ŠÜ
ˆa��d‹)�qŒ.œS  1¥›Y¨!œ^ØˆØŠÜ
ˆa��d‹)”sœS  1¥›Y•Ô
&ô �GŠG�A�a•D‹MˆØŠÜ
ˆa��d‹)”sœS  1¥›Y•Ô
&ð ˆÜ�GŠG�A�a•D‹MŠô ”—’œrŸwšw¤wÓ/´"·&²&¸³)Ñ;¼R¿VºVÀA»YÌÏÊÔQXÐ[^ÕQ^ÓI_Ñ=_Ó`×aÒaä�Q“ˆAØ�!•�q•ˆAØ�!•�q•ŠAÜ�!�A•$‹iœ#˜a �d›)Ô#Ø�!•�q˜•t•ˆAÜ�A”s˜1“vœrŸwšw q¨1­3¥wÓ/Ó0ˆAØ”—’˜˜1�“ÕˆAØ�A•ˆAØ•‰Aà�!•�q˜•t•ˆAÜ�Qœ˜A›¤§¢¨¨A­C­Ó 0Ð1Ó2ˆAØ”—’˜˜1�“ÕˆAØ•ˆAØ�A•ˆAä
�Š�1�&˜A˜2˜q˜'Ð"Ó#€A÷ „yØ�w‰w˜%ÔÐÐÜ�vŠv”b—k’k !“n×%Ò%Ð%Ð%Ü�1�T•7˜Q˜t�WÕ$Ó%¬¨A¨d­G°a¸µgÕ,=Ó(>Õ>À!ÔCÐCÐCÜ�jŠj˜¤"§*¢*¨V°U¼Sµ[Ó"AÓBˆÜ�a�~Š~Ðˆ~ÜŒr�~Š~œbŸkšk¨!›n¬b¯fªf°Q«i¼"¿'º'Ä'ÈCÅ-Ó:PÑ.PÓQ×RÒRÜ—	‘	—‘˜qÓ!ˆAÜ”s˜1�3 ! Q �<Ó(Ó)¬S°¸AµgÓ->Ô>ÐTÐ@TÓTÐ>à€Hr   c                óæ   € Rp\        V4      V\        V 4      ,          ,           p\        V4      ^V,          \        V 4      ,          ,           p\        P                  ! \        V4      V8¬  W48¬  4      # )aó  
This function tests whether x is minor compared to ref. It is used by Powell, e.g., in COBYLA.
In precise arithmetic, isminor(x, ref) is true if and only if x == 0; in floating point
arithmetic, isminor(x, ref) is true if x is 0 or its nonzero value can be attributed to
computer rounding errors according to ref.
Larger sensitivity means the function is more strict/precise, the value 0.1 being due to Powell.

For example:
isminor(1e-20, 1e300) -> True, because in floating point arithmetic 1e-20 cannot be added to
1e300 without being rounded to 1e300.
isminor(1e300, 1e-20) -> False, because in floating point arithmetic adding 1e300 to 1e-20
dominates the latter number.
isminor(3, 4) -> False, because 3 can be added to 4 without being rounded off
rq   )r1   r   Ú
logical_or)r   ÚrefÚsensitivityÚrefaÚrefbs   &&   r   r2   r2   E  sW   € ð  €KÜˆs‹8�k¤C¨£FÕ*Õ*€DÜˆs‹8�a˜+•o¬¨A«Õ.Õ.€DÜ�=Š=œ˜S› TÑ)¨4©<Ó8Ð8r   c                óx  € \         P                  ! V ^ 4      p\        '       d´   \         P                  ! V ^ 4      \         P                  ! V ^4      8X  g   Q h\         P                  ! V^ 4      \         P                  ! V^4      8X  g   Q h\         P                  ! V ^ 4      \         P                  ! V^ 4      8X  g   Q h\        V4      '       d
   V^ 8¼  g   Q h\        V4      '       d   TMg\         P                  ! RR\
        ,          \         P                  ! \         P                  ! V ^ 4      \         P                  ! V ^4      4      ,          4      p\         P                  ! W"\         P                  ! \        V 4      4      ,          V\         P                  ! \        V4      4      ,          .4      p\        \        W4      4      \         P                  ! V4      ,
          V8*  P                  4       ;'       gA    \        \        W4      \         P                  ! V4      ,
          4      V8*  P                  4       pV# )zB
This procedure tests whether A = B^{-1} up to the tolerance TOL.
gü©ñÒMbP?g      Y@)r   Úsizer   r   rz   r   ry   rB   r1   r&   re   ru   )r3   r_   rP   r8   Úis_invs   &&&  r   Úisinvr‰   [  sw  € ô 	�Š��1‹€A÷ ƒyÜ�wŠw�q˜!‹}¤§¢¨¨1£Ô-Ð-Ð-Ü�wŠw�q˜!‹}¤§¢¨¨1£Ô-Ð-Ð-Ü�wŠw�q˜!‹}¤§¢¨¨1£Ô-Ð-Ð-Ü�3�<Š<Ø˜!”8ˆO�8ô ˜—’‰#¤2§:¢:¨d°C¼#µIÄÇ
Â
Ì2Ï7Ê7ÐSTÐVWË=ÔZ\×ZaÒZaÐbcÐefÓZgÓ@hÕ4hÓ#i€CÜ
�&Š&�#œRŸVšV¤C¨£F›^Õ+¨S´2·6²6¼#¸a»&³>Õ-AÐBÓ
C€CÜ”7˜1“=Ó!¤B§F¢F¨1£IÕ-°#Ñ5×:Ñ:Ó<×oÐoÄ#ÄgÈaÃmÔVX×V\ÒV\Ð]^ÓV_ÕF_ÓB`ÐehÑAh×@mÑ@mÓ@o€Fð
 €Mr   c           
     óæ  € \         '       d   \        V4      '       d
   V^ 8¼  g   Q h\        P                  ! V ^4      pV\        P                  ! V ^ 4      8”  d   RpV# \        P                  ! \        \        V 4      4      4      '       d   RpV# \        V4      '       d†   \        \        V P                  V 4      \        P                  ! V4      ,
          4      \        P                  ! W\        P                  ! \        V 4      4      ,          4      8*  P                  4       pV# \        \        V P                  V 4      \        P                  ! V4      ,
          4      ^ 8*  P                  4       pV# )z[
This function tests whether the matrix A has orthonormal columns up to the tolerance TOL.
F)r   r   r   r‡   rt   rM   r1   r&   rZ   re   ry   rB   ru   )r3   rP   Únum_varsÚis_orths   &&  r   r{   r{   y  s  € ÷ ƒyÜ�3�<Š<Ø˜!”8ˆO�8ô �wŠw�q˜!‹}€Hà”"—'’'˜!˜Q“-ÔØˆð €Nô �(Š(”8œC ›FÓ#×
$Ò
$Øˆð €Nô �3�<Š<Üœ7 1§3¡3¨›?¬R¯VªV°HÓ-=Õ=Ó>Ä"Ç*Â*ÈSÔXZ×X^ÒX^Ô_bÐcdÓ_eÓXfÕRfÓBgÑg×lÑlÓnˆGð €Nô œ7 1§3¡3¨›?¬R¯VªV°HÓ-=Õ=Ó>À!ÑC×HÑHÓJˆGð
 €Nr   c                 óÊ   € \        V 4      ^ 8X  d   \        R4      h\        R V  4       4      p\        R V  4       4      pR\        ,          \        VR4      ,          V,          # )a  
Get a relative tolerance for a set of arrays. Borrowed from COBYQA

Parameters
----------
*arrays: tuple
    Set of `numpy.ndarray` to get the tolerance for.

Returns
-------
float
    Relative tolerance for the set of arrays.

Raises
------
ValueError
    If no array is provided.
z$At least one array must be provided.c              3   ó8   "  € T F  qP                   x € K  	  R # 5irI   )r‡   ©Ú.0rA   s   & r   Ú	<genexpr>Ú!get_arrays_tol.<locals>.<genexpr>®  s   é € Ð.¡v˜e�zŽz£vùs   ‚c           	   3   ó°   "  € T FL  p\         P                  ! \         P                  ! V\         P                  ! V4      ,          4      R R7      x € KN  	  R# 5i)ç      ð?)ÚinitialN)r   rB   r1   r@   r�   s   & r   r‘   r’   ¯  s<   é € ð áˆEô 	�ŠŒr�vŠv�eœBŸKšK¨Ó.Õ/Ó0¸#×>Ñ>Ûùs   ‚AAg      $@r”   )r   r%   rB   r   )Úarraysr‡   Úweights   *  r   Úget_arrays_tolr˜   ™  s_   € ô& ˆ6ƒ{�aÔÜÐ?Ó@Ð@ÜÑ.¡vÓ.Ó.€DÜñ áóó €Fð ”#�:œ˜D #›Õ&¨Õ/Ð/r   r   rI   )Ú__doc__Únumpyr   Úconstsr   r   r   r   r   r
   r   r   r    r#   r&   r)   r<   r?   rJ   rQ   rU   rY   r[   rM   rg   rh   r2   r‰   r{   r˜   ro   r   r   Ú<module>rœ      s‡   ðñó ß 4Ó 4Ý ð €òòòòòQòòò.ò&ô5ô5òò>ô2ò4òXòv9ô,ô<ô@0r   