
    gs5                     b    d Z ddlZddlZddlZddlmZ ddlmZ  G d dej                        Z	y)zGeodesic tests    N)Math)Geodesicc                   t    e Zd ZdZe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y)SignTestzSign test suitec                     t        j                  |       xr t        j                  |      xs4 | |k(  xr- t        j                  d|       t        j                  d|      k(  S )zTest for equivalence      ?)mathisnancopysign)xys     \/var/www/api/v1/venv_getwork_v1/lib/python3.12/site-packages/geographiclib/test/test_sign.pyequivzSignTest.equiv   sO     jjm-

1 I1fGsA.$--Q2GGK    c           	      :   t         j                  j                  }| j                  t        j                  t        j                  | dz        | dz               | j                  t        j                  t        j                  | dz        d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  |dz        d             | j                  t        j                  t        j                  |dz        |dz               | j                  t        j                  t        j                  dd|z  z
  dz        dd|z  z
  dz               | j                  t        j                  t        j                  d|z
  dz        d             | j                  t        j                  t        j                  d|dz  z
  dz        d             | j                  t        j                  t        j                  d|dz  z
  dz        d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d|dz  z   dz        d             | j                  t        j                  t        j                  d|z   dz        d             | j                  t        j                  t        j                  dd|z  z   dz        dd|z  z   dz               | j                  t        j                  t        j                  d|z
  dz        d|z
  dz               | j                  t        j                  t        j                  d|dz  z
  dz        d	             | j                  t        j                  t        j                  d|dz  z
  dz        d	             | j                  t        j                  t        j                  d	      d	             | j                  t        j                  t        j                  d|dz  z   dz        d	             | j                  t        j                  t        j                  d|z   dz        d|z   dz               | j                  t        j                  t        j                  d|z
  d
z        d|z
  d
z               | j                  t        j                  t        j                  d|dz  z
  d
z        d|dz  z
  d
z               | j                  t        j                  t        j                  d|dz  z
  d
z        d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d|dz  z   d
z        d             | j                  t        j                  t        j                  d|dz  z   d
z        d             | j                  t        j                  t        j                  d|z   d
z        d|z   d
z               | j                  t        j                  t        j                  d|z
  dz        d|z
  dz               | j                  t        j                  t        j                  d|dz  z
  dz        d|dz  z
  dz               | j                  t        j                  t        j                  d|dz  z
  dz        d             | j                  t        j                  t        j                  d|dz  z   dz        d             | j                  t        j                  t        j                  d|z   dz        d|z   dz               | j                  t        j                  t        j                  d|z
        d|z
               | j                  t        j                  t        j                  d|dz  z
        d|dz  z
               | j                  t        j                  t        j                  d|dz  z
        d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d|dz  z         d             | j                  t        j                  t        j                  d|dz  z         d             | j                  t        j                  t        j                  d|z         d|z                | j                  t        j                  t        j                  dd|z  z
        dd|z  z
               | j                  t        j                  t        j                  dd|z  z
        d             | j                  t        j                  t        j                  d      d             y)zTest special cases for AngRound    @                        g      ?   g      ?   g      ?   g      ?r        V@Z   N)sys
float_infoepsilon
assertTruer   r   r   AngRound)selfepss     r   test_AngRoundzSignTest.test_AngRound   s   
..
 
 COOHNN4==#b#9C47CDOOHNN4==#b#94CDOOHNN4==#94CDOOHNN4==C#94CDOOHNN4==#b&#94CDOOHNN4==#b&#9C47CDOOHNN4==!AcE'2#>1S5"MNOOHNN4==!C%2#>MNOOHNN4==!CE'2#>MNOOHNN4==!CE'2#>MNOOHNN4==+#>MNOOHNN4==!CE'2#>MNOOHNN4==!C%2#>MNOOHNN4==!AcE'2#>1S5"MNOOHNN4==!C%2#>3"MNOOHNN4==!CE'2#>MNOOHNN4==!CE'2#>MNOOHNN4==+#>MNOOHNN4==!CE'2#>MNOOHNN4==!C%2#>3"MNOOHNN4==!C%2#>3"MNOOHNN4==!CE'2#>3q5"MNOOHNN4==!CE'2#>MNOOHNN4==+#>MNOOHNN4==!CE'2#>MNOOHNN4==!CE'2#>MNOOHNN4==!C%2#>3"MNOOHNN4==!C%A#>31MNOOHNN4==!CE'A#>3q51MNOOHNN4==!CE'A#>MNOOHNN4==!CE'A#>MNOOHNN4==!C%A#>31MNOOHNN4==!C%#>3MNOOHNN4==!CE'#>3q5MNOOHNN4==!CE'#>MNOOHNN4==##>MNOOHNN4==!CE'#>MNOOHNN4==!CE'#>MNOOHNN4==!C%#>SMNOOHNN4==$r#v+#>BsFMNOOHNN4==$r#v+#>MNOOHNN4==$#>MNr   c                    t         j                  }t         j                  }t        j                  |       \  }}| j                  t        j                  ||      xr t        j                  ||             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d	      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d
      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  d      \  }}| j                  t        j                  |d      xr t        j                  |d             t        j                  |      \  }}| j                  t        j                  ||      xr t        j                  ||             t        j                  |      \  }}| j                  t        j                  ||      xr t        j                  ||             y)zTest special cases for sincosdg     P      r        r   r   g          g      |     vg     p     fg     Vr        f@g     p@     v@g      |@     @g     @     @g     P@N)r	   infnanr   sincosdr    r   r   )r"   r/   r0   scs        r   test_sincosdzSignTest.test_sincosdB   s7   
((C
((C<<3DAqOOHNN1s+Gq30GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<DAqOOHNN1d+Gq$0GH<<3DAqOOHNN1s+Gq30GH<<#DAqOOHNN1s+Gq30GHr   c                    t        j                  d      \  }}t        j                  d      \  }}t        j                  d      \  }}| j                  t        j	                  ||             | j                  t        j	                  ||             | j                  t        j	                  ||             | j                  t        j	                  ||              y)zTest accuracy of sincosd      "@g     @T@g   T4oN)r   r1   r    r   r   )r"   s1c1s2c2s3c3s          r   test_sincosd2zSignTest.test_sincosd2u   s    \\3'FB\\$'FB\\,'FBOOHNN2r*+OOHNN2r*+OOHNN2r*+OOHNN2rc*+r   c                    t         j                  }t         j                  }| j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  dd      d             | j                  t        j                  t        j                  d|       d             | j                  t        j                  t        j                  d|       d             | j                  t        j                  t        j                  d|      d             | j                  t        j                  t        j                  d|      d             | j                  t        j                  t        j                  |d      d             | j                  t        j                  t        j                  |d      d             | j                  t        j                  t        j                  | d      d             | j                  t        j                  t        j                  | d      d             | j                  t        j                  t        j                  ||       d	             | j                  t        j                  t        j                  | |       d
             | j                  t        j                  t        j                  ||      d             | j                  t        j                  t        j                  | |      d             | j                  t        j                  t        j                  |d      |             | j                  t        j                  t        j                  d|      |             y)zTest special cases for atan2dr   r      Lr&   r   r      iy-   iN)r	   r/   r0   r    r   r   r   atan2d)r"   r/   r0   s      r   test_atan2dzSignTest.test_atan2d   s   
((C
((COOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<dCDOOHNN4;;td#<sCDOOHNN4;;td#<sCDOOHNN4;;td#<sCDOOHNN4;;td#<sCDOOHNN4;;tt#<dCDOOHNN4;;tt#<dCDOOHNN4;;tt#<dCDOOHNN4;;tt#<dCDOOHNN4;;d#<sCDOOHNN4;;d#<sCDOOHNN4;;d#<sCDOOHNN4;;d#<sCDOOHNN4;;t#<dCDOOHNN4;;t#<dCDOOHNN4;;t#<sCDOOHNN4;;t#<sCDOOHNN4;;d#<sCDOOHNN4;;t#<sCDr   c                     d}| j                  t        j                  |d      dt        j                  |d      z
         y)zTest accuracy of atan2dgxD\8<r&   r?   r   N)assertEqualr   rD   )r"   r2   s     r   test_atan2d2zSignTest.test_atan2d2   s2    AT[[D)3Q1D+DEr   c                    t        j                  dd      \  }}| j                  t        j	                  |d             t        j                  dd      \  }}| j                  t        j	                  |d             t        j                  dd      \  }}| j                  t        j	                  |d             t        j                  dd      \  }}| j                  t        j	                  |d             t        j                  dd      \  }}| j                  t        j	                  |d             t        j                  dd      \  }}| j                  t        j	                  |d             y)zTest special cases of sumr6   g      "r   r   N)r   sumr    r   r   )r"   r2   _s      r   test_sumzSignTest.test_sum   s    
((4
CAaq$0G H
((4
CAaq$0G H
((4
CAaq$0G H
((4
CAaq$0G H
((4
CAaq$0G H
((4
CAaq$0G Hr   c                 D   | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d	      d
             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d
             | j                  t        j                  t        j                  d      d             | j                  t        j                  t        j                  d      d
             y)z"Test special cases of AngNormalizeg      r@   r'   r   r(   r)   r*   r   r+   r?   r,   r-   r.   g      @N)r    r   r   r   AngNormalize)r"   s    r   test_AngNormalizezSignTest.test_AngNormalize   s   OOHNN4#4#4V#<dCDOOHNN4#4#4V#<dCDOOHNN4#4#4V#<dCDOOHNN4#4#4V#<dCDOOHNN4#4#4V#<dCDOOHNN4#4#4t#<dCDOOHNN4#4#4t#<dCDOOHNN4#4#4e#<dCDOOHNN4#4#4e#<dCDOOHNN4#4#4e#<dCDOOHNN4#4#4e#<dCDOOHNN4#4#4e#<dCDr   c                    t         j                  j                  }t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  dd      \  }}| j                  t        j                  |d             t        j                  |d      \  }}| j                  t        j                  |d             t        j                  | d      \  }}| j                  t        j                  |d             t        j                  |d      \  }}| j                  t        j                  |d             t        j                  | d      \  }}| j                  t        j                  |d             y)	zTest special cases of AngDiffr   r   g      @g     v@g      g@r+   r*   N)r   r   r   r   AngDiffr    r   r   )r"   r#   r2   rK   s       r   test_AngDiffzSignTest.test_AngDiff   s   
..
 
 C
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7N'O
,,vf
%CAatx~~a7O'P
,,vf
%CAatx~~a7O'P
,,f
%CAatx~~a7O'P
,,f
%CAatx~~a7O'P
,,f
%CAatx~~a7O'P
,,f
%CAatx~~a7O'Pr   c                     t         j                  j                  }dd|z  z   }d}t        j                  ||      \  }}| j                  |dd|z  z
         y)zTest accuracy of AngDiff      i\:   N)r   r   r   r   rQ   rG   )r"   r#   r   r   r2   rK   s         r   test_AngDiff2zSignTest.test_AngDiff2   sM    
..
 
 CcCiATa);31QQS3Y'r   c                    g dg dg}|D ]z  }|\  }}}t         j                  j                  |d|d      }| j                  t        j                  |d   |             | j                  t        j                  |d   |             | y)z2
    azimuth with coincident point on equator
    )r   r   r?   )r   r   r   r   azi1azi2Nr   WGS84Inverser    r   r   )r"   Cllat1lat2aziinvs          r   test_equatorial_coincidentz#SignTest.test_equatorial_coincident   sy     	A tT3NN""4dC8c
oohnnS[#67
oohnnS[#67	 r   c                     g dg dg}|D ]Y  }|\  }}}}t         j                  j                  |d|d      }| j                  |d   |d       | j                  |d   |d       [ y	)
z@Does the nearly antipodal equatorial solution go north or south?)r   r   8   |   )r   r   rg   rf   r   g     pf@rY   r   )deltarZ   N)r   r\   r]   assertAlmostEqual)r"   r^   r_   r`   ra   rY   rZ   rc   s           r   test_equatorial_NSzSignTest.test_equatorial_NS   sw     	A !"tT4NN""4dE:c
S[$:
S[$:	 r   c                 "   g dg dg dg dg}|D ]|  }|\  }}}}}t         j                  j                  |d||      }| j                  t        j                  |d   |             | j                  t        j                  |d   |             ~ y)	z9How does the exact antipodal equatorial path go N/S + E/W)r   r   r?   r   r?   )r   r   r?   r?   r   )r   r   r@   r   r@   )r   r   r@   r@   r   r   rY   rZ   Nr[   )	r"   r^   r_   r`   ra   lon2rY   rZ   rc   s	            r   test_antipodalzSignTest.test_antipodal   s     ('''		A '($tT4tNN""4dD9c
oohnnS[$78
oohnnS[$78	 r   c                    ddgddgg}t        dd      }|D ]k  }|\  }}|j                  ddd|      }| j                  t        j	                  |d   |             | j                  t        j	                  |d	   |             m y
)z6Antipodal points on the equator with prolate ellipsoidr?   r   r@   rA   g     jXAgO贁Nkr   rY   rZ   N)r   r]   r    r   r   )r"   r^   geodr_   rl   rb   rc   s          r   test_antipodal_prolatezSignTest.test_antipodal_prolate   s     	cmcm	A E8$DktSLLc3-c
oohnnS[#67
oohnnS[#67	 r   c           	      ^   g dg dg dg dg}|D ]  }|\  }}}t         j                  j                  dd|dt         j                  t         j                  z        }| j                  t        j                  |d   |             | j                  t        j                  |d   |              y	)
z1azimuths = +/-0 and +/-180 for the direct problem)r   r?   r?   )r   r@   r@   )r?   r?   r   )r@   r@   r   r   g    8lArl   rZ   N)r   r\   DirectSTANDARDLONG_UNROLLr    r   r   )r"   r^   r_   rY   rl   rZ   directs          r   test_azimuth_0_180zSignTest.test_azimuth_0_180
  s     		A tT4~~$$S#tT%-%6%69M9M%MOf
oohnnVF^T:;
oohnnVF^T:; r   N)__name__
__module____qualname____doc__staticmethodr   r$   r4   r=   rE   rH   rL   rO   rR   rW   rd   rj   rm   rp   rv    r   r   r   r   
   sh    K K,O\1If,E>F
IEQ (8;98<r   r   )
rz   unittestr	   r   geographiclib.geomathr   geographiclib.geodesicr   TestCaser   r|   r   r   <module>r      s+       
 & +N<x   N<r   