New blog post from Bill Hart. It includes a section claiming Sage’s
multivariate polynomial arithmetic speed is much worse than expected...
-- Forwarded message -
From: Bill Hart
Date: Sun, Jul 9, 2017 at 8:34 AM
Subject: [ODK participants] Blog post on fast multivariate arithmet
Interesting timings, they give me some motivation to revisit the dense
multiplication algorithm in piranha :)
As an aside (and apologies if this is a slight thread hijack?), I have been
spending some time in the last few weeks decoupling the multiprecision
arithmetic bits from piranha into its own
Beware, Bernard Parisse has just helped me track down why the Flint timings
for the sparse division only benchmark looked so ridiculously low. It turns
out that due to an accident of interfacing between Nemo and Flint, it was
using reflected lexicographical ordering instead of true lexicographic
In the benchmarks I use the C++ interfaces of FLINT and
Boost.Multiprecision only for ease of initialization/destruction. The bulk
of the operations is performed using directly the C API of FLINT and GMP.
mp++ itself has some moderate template metaprogramming in place, but for
instance it is curren
So why is it faster than Flint say? Except for the overhead in the Flint
fmpz type, which uses a single word initially and only upgrades to an mpz_t
on overflow, it should currently be doing more allocations than Flint. And
Flint should be faster for something like a dot product, especially if t
mppp also uses a small value optimisation. The number of limbs that can be
stored without dynamic memory allocation can be selected at compile time,
and the benchmarks on the website are done using 1 limb (64 bits) of static
storage.
I can think of a few things that might influence positively mppp
It seems like you've done a good job with it anyway. Thanks for the
description.
Bill.
On Thursday, 13 July 2017 20:46:21 UTC+2, bluescarni wrote:
>
> mppp also uses a small value optimisation. The number of limbs that can be
> stored without dynamic memory allocation can be selected at compile