�
��g�0 � � � d dl mZ d dlmZ d dlmZmZ ddlmZm Z m
Z
mZ ddlm
Z
dd�Z dd �Ze fd
�Ze ddfd�Ze dfd
�Zd� Zd� Ze dddfd�ZdS )� )�FunctionType)�CoercionFailed)�ZZ�QQ� )�_get_intermediate_simp�_iszero�_dotprodsimp� _simplify)�_find_reasonable_pivotTc � � ��� �� fd�} �� fd�}
��� fd�}t t � � �d\ }}
g }g }|
�k �r>||k �r7t | |
� � |d� ||� � \ }}}}|D ]\ }}||z
}|� |�z |
z <