C++ interface and mpz_addmul
Hi there, it seems that C++ statements of the form a += b*c for a, b and c of type mpz_class, are not translated by the C++ interface into an invocation of mpz_addmul. The reason I am asking is twofold: on the one hand, expressions like that are quite common in several applications and they usually occur in critical computation paths (e.g., applications computing zillions of scalar products); on the other hand, the template machinery used to implement the C++ interface of GMP would seem powerful enough to do the right thing. Am I missing something? If not, are there any plans to enhance the C++ interface so as to capture this case? Thanks a lot Roberto -- Prof. Roberto Bagnara Computer Science Group Department of Mathematics, University of Parma, Italy http://www.cs.unipr.it/~bagnara/ mailto:bagnara@cs.unipr.it
Roberto Bagnara <bagnara@cs.unipr.it> writes:
it seems that C++ statements of the form
a += b*c
for a, b and c of type mpz_class, are not translated by the C++ interface into an invocation of mpz_addmul.
Alas you're right. mpz_addmul is only used for "mpq += mpz" at the moment. (Hmm. Should use mpz_addmul_ui for "mpq += ulong" too I guess.)
The reason I am asking is twofold: on the one hand, expressions like that are quite common in several applications and they usually occur in critical computation paths (e.g., applications computing zillions of scalar products);
You can call mpz_addmul directly with mpz_class::get_mpz_t if you want. Not terribly pretty, but it'll work right now.
on the other hand, the template machinery used to implement the C++ interface of GMP would seem powerful enough to do the right thing.
I wonder if the templating can cope with two operators like that.
Am I missing something? If not, are there any plans to enhance the C++ interface so as to capture this case?
Gerardo?
On 2002.06.28 23:57 Kevin Ryde wrote:
Roberto Bagnara <bagnara@cs.unipr.it> writes:
it seems that C++ statements of the form
a += b*c
for a, b and c of type mpz_class, are not translated by the C++ interface into an invocation of mpz_addmul.
They aren't, indeed. Never thought about that.
I wonder if the templating can cope with two operators like that.
I guess yes, but I must think about it a little more. I'll try to do it in a few days. Gerardo
participants (3)
-
gerardo.ballabioļ¼ unimib.it -
Kevin Ryde -
Roberto Bagnara