� ��g���T�ddlmZddlmZddlmZddlZd�Zd�Zd�Z d d �Z d d �Z dS) �)�Float)�Dummy)�lambdifyNc��|�dSt|t��rdStj|�� otj|�� S)z)Check if a floating point number is validNF)� isinstance�complex�math�isinf�isnan)�xs �g/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/plotting/textplot.py�is_validrsD���y��u��!�W�����u��z�!�}�}� � 2�T�Z��]�]�!2�2�c��g}||z }||zdz }t|��D]�}t||��r�|||z |z } t| ��s|�d���Jt| |z|dz z|dz z|z �����} t | ��} |�| ����|�d����|S)z�Rescale the given array `y` to fit into the integer values between `0` and `H-1` for the values between ``mi`` and ``ma``. �N�)�ranger�appendr�round�int) �y�W�H�mi�ma�y_new�norm�offsetr � normalized�rescaleds r �rescaler!s��� �E� ��7�D��2�g��]�F� �1�X�X� � �� �A�a�D�>�>� ��A�$��-�4�/�J��J�'�'� '�� � �T�"�"�"�"� �*�Q�,��1��"4��1��!=�a�!?�@�@�F�F�H�H���x�=�=��� � �X�&�&�&�&� �L�L�� � � � � �Lrc�B�������fd�t���D��S)Nc�2��g|]}���z |z�dz z z��S)r�)�.0r �num�start�stops ���r � <listcomp>zlinspace.<locals>.<listcomp>)s0��� E� E� E�Q�E�T�E�\�Q�&�#�a�%�0� 0� E� E� Er)r)r'r(r&s```r �linspacer*(s+����� E� E� E� E� E� E�%��*�*� E� E� E�Er�7�c#�$K�|j}t|��dkr"td�|�����|r|���n t ��}t |g|��}t|t��r|j dkr|j }t|t��r|j dkr|j }t|��}t|��}t|||��}g}|D]S} |� || �����"#tttf$r|� d��Y�PwxYwt!t#t$|����} | rDt'| ��} t)| ��} | | kr| rt+dd| zg��\} } n d\} } nd\} } | | z } t-jt-j| ����dz }|dz}t3| |��} t3| |��} t5|||| | ��}t| | |��}d}t7|dz dd��D�]2}d g|z}t7|��D]�}|||krw|dks||dz |dz kr!||dz ks||dz|dzkrd ||<�G|dks||dz |dzkr!||dz ks||dz|dz krd ||<��d ||<��|dkrt7|��D]}d ||<�|d|dz|dz fvr'd||z�|��d|�}nd |z}d�|��}||dzkr|�d d��}|dz|zV���4d |dzz}|d|dz�|dz��z }|dzdkr(|d||dzz�|dz��z }n*|d||dzz�|dzdz ��z }|d|dzz }|V�dS)z#Generator for the lines of the plotrz4The expression must have a single variable. (Got {})rNr)�����rr.�� �/�\�.�_z%g��-z |) � free_symbols�len� ValueError�format�poprrrr�imag�real�floatr*r� TypeError�ZeroDivisionError�list�filterr�max�min�sortedr �floor�log10rr!r�rjust�join�replace�ljust)�expr�a�brr�freer �fr�val�y_validrr�y_range� precision�y_bins�margin�h�s�i�prefix�bottoms r � textplot_strr\,s����� � �D� �4�y�y�1�}�}�� B� �V�D�\�\��� ��'���� � � ����A��!��d���A��!�W���� �6�Q�;�;���A��!�W���� �6�Q�;�;���A� �a���A� �a���A� ��A�q���A� �A����� � �H�H�Q�Q�s�V�V� � � � ���I�'8�9� � � � �H�H�T�N�N�N�N�N� �����6�(�A�&�&�'�'�G�� � ��\�\�� ��\�\�� ��8�8�� ���A�b�D� �*�*���B�B����B�����B��2�g�G�� �4�:�g�.�.�/�/�!�3�I� ��O�I� �r�9� � �B� �r�9� � �B���1�a��R� � �A� �b�"�a� � �F��F� �1�q�5�"�b� !� !� � �� �E�A�I���q��� � �A���t�q�y�y���F�F�a��A��h�!�a�%�/�/�a�1�q�5�j�j�A�a�!�e�H�PQ�TU�PU�DU�DU��A�a�D�D��1�f�f��!�a�%��A��E� 1� 1��Q��U� � �a��A��h�RS�VW�RW�FW�FW��A�a�D�D��A�a�D�� ��6�6��1�X�X� � ����!��� ��A�q�D�!�a�%� � � ��V�A�Y�&�-�-�f�5�5�g�v�g�>�F�F���Z�F� �G�G�A�J�J�� ��1��9�9�� � �#�s�#�#�A��t�m�a�������F�Q�J� �F� �t�a��d�{�!�!�!�Q�$�'�'�'�F��1�u��z�z��4�!�A�q�D�'�>�(�(��A��.�.�.����4�!�A�q�D�'�>�(�(��A��a��0�0�0�� �d�Q�r�U�l��F� �L�L�L�L�Ls�8D�,E�Ec�P�t|||||��D]}t|���dS)a� Print a crude ASCII art plot of the SymPy expression 'expr' (which should contain a single symbol, e.g. x or something else) over the interval [a, b]. Examples ======== >>> from sympy import Symbol, sin >>> from sympy.plotting import textplot >>> t = Symbol('t') >>> textplot(sin(t)*t, 0, 15) 14 | ... | . | . | . | . | ... | / . . | / | / . | . . . 1.5 |----.......-------------------------------------------- |.... \ . . | \ / . | .. / . | \ / . | .... | . | . . | | . . -11 |_______________________________________________________ 0 7.5 15 N)r\�print)rLrMrNrr�lines r �textplotr`�s;��H�T�1�a��A�.�.���� �d� � � � ��r)r+r,) �sympy.core.numbersr�sympy.core.symbolr�sympy.utilities.lambdifyrr rr!r*r\r`r$rr �<module>rds���$�$�$�$�$�$�#�#�#�#�#�#�-�-�-�-�-�-� � � � �3�3�3����.F�F�F�T�T�T�T�n%�%�%�%�%�%r
Memory