o
    Kg                     @   s  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	 d	eZdZdZefd
dZefddZdaeadadadgd add tgd D adadaef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&e'd+krddl(Z(d,d- Z)e*e(j+d Z,e,dkre)d.e,  n"e,dkrz	e-e(j+d Z.W n e/y   e)d/e(j+d   Y nw eZ.ee. dS dS )0a  
"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                   @   s"   e Zd Z		dddZdd ZdS )RecordNr   c                 C   s"   || _ || _|| _|| _|| _d S N)PtrCompDiscrEnumCompIntComp
StringComp)selfr   r	   r
   r   r    r   b/var/www/html/status_management/venv/lib/python3.10/site-packages/future/backports/test/pystone.py__init__/   s
   
zRecord.__init__c                 C   s   t | j| j| j| j| jS r   )r   r   r	   r
   r   r   )r   r   r   r   copy7   s   zRecord.copy)Nr   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   -   s
    
r   c                 C   s.   t | \}}tdt| |f  td|  d S )Nz#Pystone(%s) time for %d passes = %gz-This machine benchmarks at %g pystones/second)pystonesprint__version__)loops	benchtimestonesr   r   r   main>   s
   r   c                 C   s   t | S r   )Proc0)r   r   r   r   r   E   s   r    3   c                 C   s   g | ]}|d d  qS r   r   ).0xr   r   r   
<listcomp>M   s    r!   Nc                 C   sl  t  }t| D ]}qt  | }t at att_tt_tt_	dt_
dt_d}dtd d< t  }t| D ]i}t  t  d}d}d	}t}t|| a||k r`d
| | }	t||}	|d }||k sMttt||	 ttad}
|
tkr|t|
dkr|tt}tt|
d }
|
tksq|| }	|	| }d|	|  | }t|}q3t  | | }|dkrd}||fS | | }||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   loopsPerBenchtimer   r   r   r   Q   sZ   



r   c                 C   sv   t   | _}d| _| j|_| j|_t|j|_|jtkr2d|_t| j|_t j|_t	|jd|_n| } d |_| S )Nr(   r   r#   )
r-   r   r   r   Proc3r	   r.   r<   r
   r6   )PtrParIn
NextRecordr   r   r   r9      s   
r9   c                 C   s6   | d }	 t dkr|d }|t } t}|tkr	 | S q)Nr#   r   r)   )	Char1GlobIntGlobr.   )IntParIOIntLocrG   r   r   r   r?      s   r?   c                 C   s$   t d urt j} ndatdtt _| S )Nd   r#   )r-   r   rO   r6   r   )	PtrParOutr   r   r   rK      s
   rK   c                  C   s   t dk} | pt} dad S )Nr)   B)rN   r5   r:   )BoolLocr   r   r   r2      s   r2   c                   C   s   da tad S )Nr)   )rN   FALSEr5   r   r   r   r   r1      s   r1   c                 C   sn   | }t | st}| tkrt}|S | tkr tdkrt}|S t}|S | tkr(t}|S | tkr/	 |S | tkr5t}|S )NrR   )Func3Ident4r.   r3   rO   r/   Ident5)	EnumParIn
EnumParOutr   r   r   r<      s*   	r<   c                 C   s   | d }|| }|S )Nr&   r   )IntParI1IntParI2rQ   	IntParOutr   r   r   r6      s   r6   c                 C   s   |d }|| |< | | | |d < || |d < t ||d D ]}||| |< q|| |d  d || |d < | | ||d  |< dad S )Nr(   r      r&      )r+   rO   )	Array1Par	Array2Parr\   r]   rQ   IntIndexr   r   r   r7      s    r7   c                 C   s   | }|}||kr
t S tS r   )r.   r3   )CharPar1CharPar2CharLoc1CharLoc2r   r   r   r;      s
   r;   c                 C   sr   d}|dkrt | | ||d  tkrd}|d }|dks|dkr'|dkr'd}|dkr-tS | |kr7|d }tS tS )Nr   r)   WZr%   X)r;   r.   TRUErV   )StrParI1StrParI2rQ   CharLocr   r   r   r4      s   r4   c                 C   s   | }|t krtS tS r   )r/   rk   rV   )rZ   rG   r   r   r   rW      s   rW   __main__c                 C   s6   t | dtjd t dtjd  tjd td d S )N )endfilezusage: %s [number_of_loops]r   )rr   rR   )r   sysstderrargvexit)msgr   r   r   error  s   rx   z%d arguments are too many;zInvalid argument %r;)0__doc__
__future__r   timer   LOOPSr   r+   r.   r3   r/   rX   rY   objectr   rk   rV   r   r   rO   r5   rN   r:   r8   r0   r-   r,   r   r9   r?   rK   r2   r1   r<   r6   r7   r;   r4   rW   r   rs   rx   lenru   nargsintr   
ValueErrorr   r   r   r   <module>   sZ    
:
