|
|
last edited 9 years ago by test1 |
1 2 3 | ||
Editor: test1
Time: 2015/10/27 14:16:59 GMT+0 |
||
Note: |
added: Comment: In fact, in the past polynomial domains failed to provide 'factor' -- factoring was done by separate routine. Now polynomials provide 'factor' and the result above is fully factored. added: Comment: Yes, if base domain is GCD domain '+' first looks for known common factors.
Consider the following:
q:FR POLY INT := (x-1)*(x^2+1)
(1) |
p:FR POLY INT := (x-1)*(2*x)
(2) |
p+q
(3) |
)tr MULTFACT )ma
Packages traced: MultivariateFactorize(Symbol,IndexedExponents(Symbol), Integer, Polynomial(Integer)) Parameterized constructors traced: MULTFACT factor(p+q)
Internal Error The function factor with signature hashcode is missing from domain Factored(Polynomial (Integer))
The documentation says:
Others, like addition require somewhat more work, and unless the argument domain provides a factor function, the result may not be completely factored.
which is not true, as shown by the result of above.
factor
factor
and the result
above is fully factored.Furthermore, applying factor
to should probably not first expand the expression and then factor it again. It should rather map over the already known factors.
Comment: Yes, if base domain is GCD domain +
first looks for known common
factors.
I'm not sure whether FR
should always try to factor the result of an addition, at least, I don't think that this was the intention of the original author.
Another issue is raised by the documentation to expand: % -> R
:
expand(f) multiplies the unit and factors together, yielding an "unfactored" object. Note: this is purposely not called 'coerce' which would cause the interpreter to do this automatically.
I tested this and found it not to be true. Note that the domain was written already in 1985, so it might well be that the interpreters behaviour has changed in this respect.
Martin