Ë
    Ï.fs5  ã                   ó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     ú[C:\Users\user\Documents\project_loop\venv\Lib\site-packages\geographiclib/test/test_sign.pyÚequivzSignTest.equiv   sO   € ô �j‰j˜‹mÒ-¤§
¡
¨1£ò IØ�1‰fÒGœŸ™ s¨AÓ.´$·-±-ÀÀQÓ2GÑ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Ø‡O�O”H—N‘N¤4§=¡=°#°°b±Ó#9¸C¸4À¹7ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°#°°b±Ó#9¸4ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°Ó#9¸4ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°CÓ#9¸4ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°#°b±&Ó#9¸4ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°#°b±&Ó#9¸C¸4À¹7ÓCÔDØ‡O�O”H—N‘N¤4§=¡=°!°A°c±E±'¸2±Ó#>ÀÀ1ÀSÁ5ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°+Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°A°c±E±'¸2±Ó#>ÀÀ1ÀSÁ5ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÀ3ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°+Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÀ3ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÀ3ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÀ3ÀqÁ5ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°+Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸2±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸2±Ó#>ÀÀ3ÁÈ"ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸A±Ó#>ÀÀ3ÁÈ1ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸A±Ó#>ÀÀ3ÀqÁ5ÁÈ1ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸A±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'¸A±Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%¸A±Ó#>ÀÀ3ÁÈ1ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%Ó#>ÀÀ3ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'Ó#>ÀÀ3ÀqÁ5ÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°#Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C¸±E±'Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°!°C±%Ó#>ÀÀSÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°$°r¸#±v±+Ó#>ÀÀBÀsÁFÁÓMÔNØ‡O�O”H—N‘N¤4§=¡=°$°r¸#±v±+Ó#>ÀÓMÔNØ‡O�O”H—N‘N¤4§=¡=°$Ó#>ÀÓ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      |Àç     €vÀg     àpÀç     €fÀg     €VÀr   ç     €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˜Ó�D€A€qØ‡O�O”H—N‘N 1 sÓ+ÒG´·±¸qÀ3Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜Ó�D€A€qØ‡O�O”H—N‘N 1 dÓ+ÒG´·±¸qÀ$Ó0GÔHÜ�<‰<˜3˜Ó�D€A€qØ‡O�O”H—N‘N 1 sÓ+ÒG´·±¸qÀ3Ó0GÔHÜ�<‰<˜#Ó�D€A€qØ‡O�O”H—N‘N 1 sÓ+ÒG´·±¸qÀ3Ó0GÕ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   T4o�ÁN)r   r1   r    r   r   )r"   Ús1Úc1Ús2Úc2Ús3Úc3s          r   Útest_sincosd2zSignTest.test_sincosd2u   s–   € ä�\‰\ 3Ó'�F€BˆÜ�\‰\ $Ó'�F€BˆÜ�\‰\˜,Ó'�F€BˆØ‡O�O”H—N‘N 2 rÓ*Ô+Ø‡O�O”H—N‘N 2 rÓ*Ô+Ø‡O�O”H—N‘N 2 rÓ*Ô+Ø‡O�O”H—N‘N 2 r cÓ*Õ+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   é´   éLÿÿÿr&   r   é¦ÿÿÿr   é‡   iyÿÿÿé-   iÓÿÿÿN)r	   r/   r0   r    r   r   r   Úatan2d)r"   r/   r0   s      r   Útest_atan2dzSignTest.test_atan2d   s¨  € ä
�(‰(€CÜ
�(‰(€CØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°¸°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°¸°tÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°¸°tÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;°°dÓ#<¸sÓCÔDØ‡O�O”H—N‘N¤4§;¡;¨t¸Ó#<¸sÓCÕDr   c                 ó‚   — d}| j                  t        j                  |d«      dt        j                  |d«      z
  «       y)zTest accuracy of atan2dg…xÝD\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˜Ó
�C€A€a §¡´·±¸qÀ$Ó0GÔ HÜ
�(‰(�4˜Ó
�C€A€a §¡´·±¸qÀ$Ó0GÔ HÜ
�(‰(�4˜Ó
�C€A€a §¡´·±¸qÀ$Ó0GÔ HÜ
�(‰(�4˜Ó
�C€A€a §¡´·±¸qÀ$Ó0GÔ HÜ
�(‰(�4˜Ó
�C€A€a §¡´·±¸qÀ$Ó0GÔ HÜ
�(‰(�4˜Ó
�C€A€a §¡´·±¸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š  € à‡O�O”H—N‘N¤4×#4Ñ#4°VÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°VÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°VÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°VÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°VÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°tÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°eÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°eÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°eÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°eÓ#<¸dÓCÔDØ‡O�O”H—N‘N¤4×#4Ñ#4°eÓ#<¸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Ü
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7NÔ'OÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7OÔ'PÜ
�,‰,�v˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7OÔ'PÜ
�,‰,˜˜˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7OÔ'PÜ
�,‰,˜˜˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7OÔ'PÜ
�,‰,˜˜˜fÓ
%�C€A€a t§¡´x·~±~ÀaÈÓ7OÔ'PÜ
�,‰,˜˜˜fÓ
%�C€A€a t§¡´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Øˆc�C‰i‰€A˜T˜¬¯©°a¸Ó);¡3 1 QØ×Ñ�Q˜˜S 3™Y™Õ'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Ñ   s~   € ò Úð	€Að ò 8ˆØÑ€tˆT�3Ü�N‰N×"Ñ" 4¨¨d°CÓ8€cØ
‡o�o”h—n‘n S¨¡[°#Ó6Ô7Ø
‡o�o”h—n‘n S¨¡[°#Ó6Õ7ñ	8r   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à   s|   € ò Úð	€Að ò ;ˆØ!"Ñ€tˆT�4˜Ü�N‰N×"Ñ" 4¨¨d°EÓ:€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ð ò 9ˆØ'(Ñ$€tˆT�4˜˜tÜ�N‰N×"Ñ" 4¨¨d°DÓ9€cØ
‡o�o”h—n‘n S¨¡[°$Ó7Ô8Ø
‡o�o”h—n‘n S¨¡[°$Ó7Õ8ñ	9r   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è´�Nk¿r   rY   rZ   N)r   r]   r    r   r   )r"   r^   Úgeodr_   rl   rb   rc   s          r   Útest_antipodal_prolatezSignTest.test_antipodal_prolateü   s‰   € ð 	ˆc€mØˆc€mð	€Aô �E˜8Ó$€DØò 8ˆØ�k€tˆSØ�L‰L˜˜c 3¨Ó-€cØ
‡o�o”h—n‘n S¨¡[°#Ó6Ô7Ø
‡o�o”h—n‘n S¨¡[°#Ó6Õ7ñ	8r   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    8œlArl   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ð ò <ˆØÑ€tˆT�4Ü�~‰~×$Ñ$ S¨#¨t°TÜ%-×%6Ñ%6¼×9MÑ9MÑ%MóO€fà
‡o�o”h—n‘n V¨F¡^°TÓ:Ô;Ø
‡o�o”h—n‘n V¨F¡^°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   