Peter Bruin on Wed, 07 Jun 2017 22:55:46 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Speed up RgX_mul, RgX_sqr, RgX_divrem over Z, Fp, FpXQ |
Hi Bill, > RgX_mul not calling ZX_mul was more or less a design decision done to > avoid repeated type checks in low level code. I can see the reasoning behind that, although the number of type checks that RgX_mul (and the functions that it calls) needs to do when actually doing arithmetic with the coefficients of the polynomials is going to be asymptotically larger anyway. > Instead, the idea was that highlevel functions like polresultant would > call low-level functions like FpX_resultant. > > However this is not the case for polresultant: > > -- polresultant only call ZX_resultant and QX_resultant, but not the > other resultant functions: > Flx_resultant, FpX_resultant, Flx_FlxY_resultant, FlxX_resultant, > FpX_FpXY_resultant, ZX_ZXY_resultant > > -- there is no FpXY_resultant, so this would not help you anyway. > > If we are going to keep this design decision, we should change > resultant_all to call gmul instead of RgX_mul, etc. > > Maybe it would be better to have functions RgX_mul_i etc. that does > what RgX_mul is doing now, and change RgX_mul to do what you suggest. That last alternative certainly sounds like the better one to me. I guess that we would then call RgX_mul_i et al. only in cases where we know (thanks to earlier checks) that the polynomials do _not_ have a common "special" base ring, is that what you mean? Peter