[SciPy-user] poly1d equality test
David M. Cooke
cookedm at physics.mcmaster.ca
Mon Feb 27 20:36:40 CST 2006
Christian Kristukat <ckkart at hoc.net> writes:
> Ryan Krauss wrote:
>> Is there an easy way to test for the equality of two poly1d objects?
>>
>> I have the following problem:
>> In [36]: p1
>> Out[36]: poly1d([ 6.66666667, 0. , -49. ])
>>
>> In [37]: p2
>> Out[37]: poly1d([ 6.66666667, 0. , -49. ])
>>
>> In [38]: p1==p2
>> Out[38]: False
>>
>> In [39]: (p1.coeffs==p2.coeffs).all()
>> Out[39]: True
>>
>> It seems like == is only testing if they are the same object. I am
>> trying to write a class for transfer functions which model a system as
>> a numerator and denominator poly1d. When I multiply or divide them I
>> need to check if the numerator and denominators cancel exactly.
>
> Hi Ryan,
> you could subclass poly1d and define the special method __eq__ to which is
> called in situations lika a==b:
>
> In [3]: class p(poly1d):
> ...: def __eq__(self,other):
> ...: return (self.coeffs==other.coeffs).all()
> ...:
> ...:
>
> In [4]: p1 = p([ 6.66666667, 0. , -49. ])
>
> In [5]: p2 = p([ 6.66666667, 0. , -49. ])
>
> In [6]: p1 == p2
> Out[6]: True
I've added __eq__ and __ne__ methods to the poly1d class in svn.
--
|>|\/|<
/--------------------------------------------------------------------------\
|David M. Cooke http://arbutus.physics.mcmaster.ca/dmc/
|cookedm at physics.mcmaster.ca
More information about the SciPy-user
mailing list