nmod_mpoly_mul_johnson, nmod_mpoly_mul_heap_threaded
Synopsis
#include <flint/nmod_mpoly.h>void nmod_mpoly_mul_johnson(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx)sourcevoid nmod_mpoly_mul_heap_threaded(nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_t C, const nmod_mpoly_ctx_t ctx)sourceSet A to B C by Johnson's heap algorithm [Joh1974], which merges the products b_i C with a heap of size \min(\mathrm{len}(B), \mathrm{len}(C)) and costs O(\mathrm{len}(B) \mathrm{len}(C) \log \min(\mathrm{len}(B), \mathrm{len}(C))) monomial comparisons. The first version uses one thread, the second the available threads.
References#
- [Joh1974] S. C. Johnson. Sparse polynomial arithmetic. ACM SIGSAM Bulletin 8:3 (1974), 63–71. https://doi.org/10.1145/1086837.1086847
Cite this page
The FLINT team, “nmod_mpoly_mul_johnson, nmod_mpoly_mul_heap_threaded (nmod_mpoly.h),” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/nmod_mpoly/nmod_mpoly_mul_johnson.html (generated 2026-10-20).
@misc{flint-doc-nmod-mpoly-nmod-mpoly-mul-johnson,
author = {{The FLINT team}},
title = {{nmod\_mpoly\_mul\_johnson, nmod\_mpoly\_mul\_heap\_threaded (nmod\_mpoly.h)}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/nmod_mpoly/nmod_mpoly_mul_johnson.html},
note = {Generated 2026-10-20}
}