AXIOM: the scientific computation system
AXIOM: the scientific computation system
Algorithms for computer algebra
Algorithms for computer algebra
The influence of caches on the performance of heaps
Journal of Experimental Algorithmics (JEA)
The geobucket data structure for polynomials
Journal of Symbolic Computation
Monomial representations for Gröbner bases computations
ISSAC '98 Proceedings of the 1998 international symposium on Symbolic and algebraic computation
ACM SIGSAM Bulletin
SINGULAR: a computer algebra system for polynomial computations
ACM Communications in Computer Algebra
Parallel sparse polynomial multiplication using heaps
Proceedings of the 2009 international symposium on Symbolic and algebraic computation
Lazy and Forgetful Polynomial Arithmetic and Applications
CASC '09 Proceedings of the 11th International Workshop on Computer Algebra in Scientific Computing
Parallel sparse polynomial division using heaps
Proceedings of the 4th International Workshop on Parallel and Symbolic Computation
Sparse polynomial multiplication and division in Maple 14
ACM Communications in Computer Algebra
Sparse polynomial division using a heap
Journal of Symbolic Computation
Chunky and equal-spaced polynomial multiplication
Journal of Symbolic Computation
Parallel and cache-efficient Hensel lifting
ACM Communications in Computer Algebra
On the bit-complexity of sparse polynomial and series multiplication
Journal of Symbolic Computation
Sparse polynomial powering using heaps
CASC'12 Proceedings of the 14th international conference on Computer Algebra in Scientific Computing
Practical Gröbner basis computation
Proceedings of the 37th International Symposium on Symbolic and Algebraic Computation
On the complexity of multivariate blockwise polynomial multiplication
Proceedings of the 37th International Symposium on Symbolic and Algebraic Computation
Hi-index | 0.00 |
A common way of implementing multivariate polynomial multiplication and division is to represent polynomials as linked lists of terms sorted in a term ordering and to use repeated merging. This results in poor performance on large sparse polynomials. In this paper we use an auxiliary heap of pointers to reduce the number of monomial comparisons in the worst case while keeping the overall storage linear. We give two variations. In the first, the size of the heap is bounded by the number of terms in the quotient(s). In the second, which is new, the size is bounded by the number of terms in the divisor(s). We use dynamic arrays of terms rather than linked lists to reduce storage allocations and indirect memory references. We pack monomials in the array to reduce storage and to speed up monomial comparisons. We give a new packing for the graded reverse lexicographical ordering. We have implemented the heap algorithms in C with an interface to Maple. For comparison we have also implemented Yan's "geobuckets" data structure. Our timings demonstrate that heaps of pointers are comparable in speed with geobuckets but use significantly less storage.