Open tueda opened 8 years ago
As far as I can see:
ConvertToPoly
is invoked from: ToPolynomial
,LocalConvertToPoly
is invokved from: FactArg
, FactDollar
, div_
and gcd_
.Solutions would be:
TOPOLYNOMIALFLAG
(ToPolynomial
) or FACTARGFLAG
(FactArg
, FactDollar
, div_
and gcd_
) to AC.topolynomialflag
. If the both are set in a module, turn off the parallelization.ToPolynomial
. If LocalConvertToPoly
is called in a module with ToPolynomial
on TFORM and if non-symbols are involved, then give a runtime error.Anyway, giving a compilation error is overkill. Am I right?
Hi Takahiro,
I just got home. I will have to think a bit about this one. Alternative would be to call it with a lock. And give a warning about this.
You could do that just for trying out the rest of the new code and then we can still decide later what to really do about the parallelization.
Cheers
Jos
On 4 nov. 2016, at 18:46, Takahiro Ueda notifications@github.com wrote:
Solutions may be:
Check the problematic statements and tokens, and set TOPOLYNOMIALFLAG (ToPolynomial) or FACTARGFLAG (FactArg, FactDollar, div and gcd) to AC.topolynomialflag. If the both are set in a module, turn off the parallelization. Check only ToPolynomial. If LocalConvertToPoly is called in a module with ToPolynomial, then give a runtime error. Anyway, giving a compilation error is overkill. Am I right?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/vermaseren/form/issues/138#issuecomment-258500778, or mute the thread https://github.com/notifications/unsubscribe-auth/AFLxEsoP-bms6f2pCA_8SXK77GwdAeZ_ks5q629ngaJpZM4KpwhA.
The random results with no error is not very nice here; I think for FORM5 this one needs fixing or terminate with an error message?
ToPolynomial
andFactArg
can't be used in the same module because of the mutual exclusion ofConvertToPoly
andLocalConvertToPoly
. (I think this restriction is not needed with the sequential FORM). This mutual exclusion in other cases seems not implemented. The following example is expected to giveF=0
:but TFORM gives random results. In ParFORM, simply the parallelization in modules with
topolynomial
is switched off and it gives the correct result.