[Numpy-discussion] polynomial ring dtype

Sebastian Walter sebastian.walter at gmail.com
Tue Sep 22 15:57:15 EDT 2009


sorry if this a duplicate, it seems that my last mail got lost...
is there something to take care about when sending a mail to the numpy
mailing list?

On Tue, Sep 22, 2009 at 9:42 AM, Sebastian Walter
<sebastian.walter at gmail.com> wrote:
> This is somewhat similar to the question about fixed-point arithmetic
> earlier on this mailing list.
>
> I need to do computations on arrays whose elements are truncated polynomials.
> At the momement, I have implemented the univariate truncated
> polynomials as objects of a class UTPS.
>
> The class basically looks like this:
>
> class UTPS:
>    def __init__(self, taylor_coeffs):
>        """  polynomial x(t) =  tc[0] + tc[1] t + tc[2] t^2 + tc[3]
> t^3 + ... """
>        self.tc = numpy.asarray(taylor_coeffs)
>
>    def __add__(self, rhs):
>        return UTPS(self.tc + rhs.tc)
>
>    def sin(self):
>        # numpy.sin(self) apparently automatically calls self.sin()
> which is very cool
>
>    etc....
>
> One can create arrays of UTPS instances  like this:
> x = numpy.array( [[UTPS([1,2]), UTPS([3,4])], [UTPS([0,1]), UTPS([4,3])]])
>
> and perform funcs and ufuncs on it
>
> y = numpy.sum(x)
> y = numy.sin(x)
> y = numpy.dot(numpy.eye(2), x)
>
> This works out of the box, which is very nice.
>
> my question:
> Is it possible to speed up the computation by defining a special dtype
> for truncated polynomials? Especially when the arrays get large,
> computing on arrays of objects is quite slow. I had a look at the
> numpy svn trunk but couldn't find any clues.
>
> If you are interested, you can have a look at the full pre alpha
> version code (BSD licence) at http://github.com/b45ch1/algopy .
>
> regards,
> Sebastian
>



More information about the NumPy-Discussion mailing list