Ë
    	š„j  ã                   ó  — d Z ddlmZ ddlmZ dZdZ edd«      \  ZZ	Z
ZZ G d„ d	e«      ZdZdZefd
„Zefd„Zdaeadadadgdz  at.        gdz  D � cg c]  } | dd ‘Œ	 c} adadaefd„Zd„ Zd„ Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&e'dk(  rSddl(Z(d„ Z) e*e(jV                  «      dz
  Z,e,dkD  r e)de,z  «       ne,dk(  r e-e(jV                  d   «      Z.neZ. ee.«       yyc c} w # e/$ r  e)de(jV                  d   z  «       Y Œ.w xY w)aâ  
"PYSTONE" Benchmark Program

Version:        Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)

Author:         Reinhold P. Weicker,  CACM Vol 27, No 10, 10/84 pg. 1013.

                Translated from ADA to C by Rick Richardson.
                Every method to preserve ADA-likeness has been used,
                at the expense of C-ness.

                Translated from C to Python by Guido van Rossum.

Version History:

                Version 1.1 corrects two bugs in version 1.0:

                First, it leaked memory: in Proc1(), NextRecord ends
                up having a pointer to itself.  I have corrected this
                by zapping NextRecord.PtrComp at the end of Proc1().

                Second, Proc3() used the operator != to compare a
                record to None.  This is rather inefficient and not
                true to the intention of the original benchmark (where
                a pointer comparison to None is intended; the !=
                operator attempts to find a method __cmp__ to do value
                comparison of the record).  Version 1.1 runs 5-10
                percent faster than version 1.0, so benchmark figures
                of different versions can't be compared directly.

é    )Úprint_function)ÚclockiPÃ  z1.1é   é   c                   ó   — e Zd Z	 	 dd„Zd„ Zy)ÚRecordNc                 óJ   — || _         || _        || _        || _        || _        y ©N)ÚPtrCompÚDiscrÚEnumCompÚIntCompÚ
StringComp)Úselfr   r   r   r   r   s         úT/var/www/html/GAP/venv/lib/python3.12/site-packages/future/backports/test/pystone.pyÚ__init__zRecord.__init__/   s%   € àˆŒØˆŒ
Ø ˆŒØˆŒØ$ˆ�ó    c                 ó„   — t        | j                  | j                  | j                  | j                  | j
                  «      S r
   )r   r   r   r   r   r   )r   s    r   ÚcopyzRecord.copy7   s.   € Ü�d—l‘l D§J¡J°·±Ø—l‘l D§O¡Oó5ð 	5r   )Nr   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r   -   s   „ à=>Ø12ó%ó5r   r   c                 óf   — t        | «      \  }}t        dt        | |fz  «       t        d|z  «       y )Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)ÚpystonesÚprintÚ__version__)ÚloopsÚ	benchtimeÚstoness      r   Úmainr!   >   s8   € Ü  ›Ñ€IˆvÜ	Ð
/Ü˜˜yÐ
)ñ*ô +ä	Ð
9¸FÑ
BÕCr   c                 ó   — t        | «      S r
   )ÚProc0)r   s    r   r   r   E   s   € Ü�‹<Ðr   ú é3   Nc                 óV  — t        «       }t        | «      D ]  }Œ t        «       |z
  }t        «       at        «       at        t        _        t        t        _        t        t        _	        dt        _
        dt        _        d}dt        d   d<   t        «       }t        | «      D ]â  }t        «        t        «        d}d}d	}t        }t!        ||«       a||k  rd
|z  |z
  }	t%        ||«      }	|dz   }||k  rŒt'        t(        t        |	«       t+        t        «      ad}
|
t,        k  r?|t/        |
d«      k(  rt1        t        «      }t3        t5        |
«      dz   «      }
|
t,        k  rŒ?||z  }	|	|z  }d|	|z
  z  |z
  }t7        |«      }Œä t        «       |z
  |z
  }|dk(  rd}||fS | |z  }||fS )Né(   zDHRYSTONE PROGRAM, SOME STRINGzDHRYSTONE PROGRAM, 1'ST STRINGé
   é   é   é   é   zDHRYSTONE PROGRAM, 2'ND STRINGé   r   ÚAÚCg        )r   Úranger   Ú
PtrGlbNextÚPtrGlbr   ÚIdent1r   ÚIdent3r   r   r   Ú
Array2GlobÚProc5ÚProc4ÚIdent2ÚFunc2ÚBoolGlobÚProc7ÚProc8Ú
Array1GlobÚProc1Ú	Char2GlobÚFunc1ÚProc6ÚchrÚordÚProc2)r   Ú	starttimeÚiÚnulltimeÚ
String1LocÚIntLoc1ÚIntLoc2Ú
String2LocÚEnumLocÚIntLoc3Ú	CharIndexr   ÚloopsPerBenchtimes                r   r#   r#   Q   sÄ  € ô “€IÜ�5‹\ò ˆØðä‹w˜Ñ"€Hä“€JÜ‹X€FÜ„F„NÜ„F„LÜ„F„OØ„F„NØ8„FÔØ1€JØ„Jˆq�M�!Ñä“€Iä�5‹\ò !ˆÜŒÜŒØˆØˆØ5ˆ
ÜˆÜ˜Z¨Ó4Ð4ˆØ˜ÒØ˜'‘k GÑ+ˆGÜ˜G WÓ-ˆGØ ‘kˆGð ˜Óô 	Œjœ* g¨wÔ7Ü”v“ˆØˆ	Øœ9Ò$Øœ% 	¨3Ó/Ò/Ü¤›-�ÜœC 	›N¨1Ñ,Ó-ˆIð œ9Ó$ð ˜GÑ#ˆØ˜GÑ#ˆØ�w Ñ(Ñ)¨GÑ3ˆÜ˜“.‰ð-!ô0 “˜)Ñ# hÑ.€IØ�CÒØÐð Ð'Ð'Ð'ð # YÑ.ÐØÐ'Ð'Ð'r   c                 óº  — t         j                  «       x| _        }d| _        | j                  |_        | j                  |_        t	        |j                  «      |_        |j
                  t        k(  rRd|_        t        | j                  «      |_        t         j                  |_        t        |j                  d«      |_        n|j                  «       } d |_        | S )Nr-   r   r(   )
r2   r   r   r   ÚProc3r   r3   rA   r   r;   )ÚPtrParInÚ
NextRecords     r   r>   r>   ‹   s¯   € Ü$*§K¡K£MÐ1€HÔ�zØ€HÔØ!×)Ñ)€JÔØ!×)Ñ)€JÔÜ˜z×1Ñ1Ó2€JÔØ×Ñœ6Ò!Øˆ
ÔÜ# H×$5Ñ$5Ó6ˆ
ÔÜ#Ÿ^™^ˆ
ÔÜ" :×#5Ñ#5°rÓ:ˆ
Õà—?‘?Ó$ˆØ€JÔØ€Or   c                 ób   — | dz   }	 t         dk(  r|dz
  }|t        z
  } t        }t        k(  r	 | S Œ*)Nr(   r   r.   )Ú	Char1GlobÚIntGlobr3   )ÚIntParIOÚIntLocrL   s      r   rD   rD   ›   sC   € Ø˜‰]€FØ
Ü˜ÒØ˜a‘ZˆFØ¤Ñ'ˆHÜˆGØ”fÒØØ€Oð r   c                 ój   — t         �t         j                  } ndat        dt        «      t         _        | S )Néd   r(   )r2   r   rV   r;   r   )Ú	PtrParOuts    r   rQ   rQ   ¦   s,   € ô ÐÜ—N‘N‰	àˆÜ˜2œwÓ'„F„NØÐr   c                  ó.   — t         dk(  } | xs t        } day )Nr.   ÚB)rU   r:   r?   )ÚBoolLocs    r   r7   r7   °   s   € ô ˜3Ñ€GØÒ!œ€GØ�Ir   c                  ó   — da t        ay )Nr.   )rU   ÚFALSEr:   r   r   r   r6   r6   ·   s   € ð €IÜ�Hr   c                 óê   — | }t        | «      st        }| t        k(  rt        }|S | t        k(  rt        dkD  rt        }|S t        }|S | t
        k(  rt        }|S | t        k(  r	 |S | t        k(  rt
        }|S )NrZ   )ÚFunc3ÚIdent4r3   r8   rV   r4   ÚIdent5)Ú	EnumParInÚ
EnumParOuts     r   rA   rA   ¾   s—   € Ø€JÜ�ÔÜˆ
Ø”FÒÜˆ
ð Ðð 
”fÒ	Ü�SŠ=ÜˆJð Ðô  ˆJð Ðð 
”fÒ	Üˆ
ð
 Ðð	 
”fÒ	Øð Ðð 
”fÒ	Üˆ
ØÐr   c                 ó   — | dz   }||z   }|S )Nr+   r   )ÚIntParI1ÚIntParI2rX   Ú	IntParOuts       r   r;   r;   Ñ   s   € Ø˜‰\€FØ˜6Ñ!€IØÐr   c                 óÄ   — |dz   }|| |<   | |   | |dz   <   || |dz   <   t        ||dz   «      D ]
  }|||   |<   Œ ||   |dz
     dz   ||   |dz
  <   | |   ||dz      |<   day )Nr-   r   é   r+   é   )r0   rV   )Ú	Array1ParÚ	Array2Parrh   ri   rX   ÚIntIndexs         r   r<   r<   Ö   s¤   € ð ˜‰\€FØ €IˆfÑØ# FÑ+€Iˆf�Q‰hÑØ!€Iˆf�R‰iÑÜ˜& &¨¡(Ó+ò -ˆØ&,ˆ	�&Ñ˜(Ò#ð-à"+¨FÑ"3°F¸1±HÑ"=ÀÑ"A€IˆfÑ�f˜Q‘hÑØ#,¨VÑ#4€Iˆf�R‰iÑ˜Ñ Ø�Gr   c                 ó,   — | }|}||k7  rt         S t        S r
   )r3   r8   )ÚCharPar1ÚCharPar2ÚCharLoc1ÚCharLoc2s       r   r@   r@   ã   s   € Ø€HØ€HØ�8ÒÜˆäˆr   c                 ó¼   — d}|dk  r)t        | |   ||dz      «      t        k(  rd}|dz   }|dk  rŒ)dk\  r|dk  rd}|dk(  rt        S | |kD  r|dz   }t        S t        S )Nr   r.   ÚWÚZr*   ÚX)r@   r3   ÚTRUEr`   )ÚStrParI1ÚStrParI2rX   ÚCharLocs       r   r9   r9   ë   s}   € Ø€FØ
�AŠ+Ü�˜&Ñ! 8¨F°1©HÑ#5Ó6¼&Ò@ØˆGØ˜a‘ZˆFð �A‹+ð �#‚~˜' Sš.ØˆØ�#‚~Üˆà�hÒØ˜a‘ZˆFÜˆKäˆLr   c                 ó0   — | }|t         k(  rt        S t        S r
   )r4   rz   r`   )re   rL   s     r   rb   rb   ü   s   € Ø€GØ”&Ò¤˜+Ü€Lr   Ú__main__c                 óÄ   — t        | dt        j                  ¬«       t        dt        j                  d   z  t        j                  ¬«       t        j                  d«       y )Nú )ÚendÚfilezusage: %s [number_of_loops]r   )rƒ   rZ   )r   ÚsysÚstderrÚargvÚexit)Úmsgs    r   Úerrorr‰     s9   € Üˆc�s¤§¡Õ,ÜÐ+¬c¯h©h°q©kÑ9ÄÇ
Á
ÕKÜ�‰��r   z%d arguments are too many;zInvalid argument %r;)0Ú__doc__Ú
__future__r   Útimer   ÚLOOPSr   r0   r3   r8   r4   rc   rd   Úobjectr   rz   r`   r!   r   rV   r:   rU   r?   r=   r5   r2   r1   r#   r>   rD   rQ   r7   r6   rA   r;   r<   r@   r9   rb   r   r„   r‰   Úlenr†   ÚnargsÚintr   Ú
ValueError)Úxs   0r   ú<module>r”      sx  ðñõ@ &å à€à€á+0°°A«;Ñ (€ˆ�˜ ô5ˆVô 5ð 	€Ø	€àó Dð ó ð €Ø€Ø€	Ø€	ØˆS�‰V€
Ü'˜L¨™OÖ,�qˆa‘ŠdÒ,€
Ø	€Ø€
àó 8(òtò 	òòòòò&ò
òòò"ð
 ˆzÒÛòñ �—‘‹M˜AÑ€EØˆq‚yÙÐ*¨UÑ2Õ3Ø	�!ŠÙ˜Ÿ™ !™Ó%‰Uð ˆÙˆ…Kð ùòi -øð~ ò 	8ÙÐ(¨3¯8©8°A©;Ñ6Ö7ð	8ús   ÁC'ÃC, Ã,DÄD