Marco, Niels, thanks a lot for your comments. You've found a much nicer solution than my initial one.
On Sat, Feb 10, 2018 at 6:11 PM Niels Möller <ni...@lysator.liu.se> wrote: > >> I also note that we have a very similar allocation in > >> mpn_div_qr_2_preinv. > > > > Currently it is used just once in the whole mini-library, by the call: > > mpn_div_qr_2_preinv (qp, np, np, nn, inv); > > > > i.e. values in np get overwritten to store the reminder. If we take this > > single use into account, we can always shift inplace... > > Note that remainder is always two limbs. So reusing qp area would be > more natural (but unlike np, qp == NULL is allowed). So not sure what > Correct me if I'm wrong, but I think in mpn_div_qr_2_preinv, unlike mpn_div_qr_1_preinv, (array pointed by) qp can be smaller than np, so there is no way it can be easily used to store the shifted np. We can still check if np == qp or np == rp, which would mean we can do shift in place. > Maybe the below is a reasonable way (note that the #if:ed out > mpn_div_qr_2 can't be easily supported with this interface). > > This could be another option. Regards, Ilya. _______________________________________________ gmp-devel mailing list gmp-devel@gmplib.org https://gmplib.org/mailman/listinfo/gmp-devel