**labels**: --> 460522

expr:

%I*LOG(

( x^4/((x^2-1)^2+2*x^2)

-4*x^2/((x^2-1)^2+2*x^2)

+1/((x^2-1)^2+2*x^2)

)^2

+

( 2*SQRT(2)*x^3/((x^2-1)^2+2*x^2)

-2*SQRT(2)*x/((x^2-1)^2+2*x^2)

)^2

);

scexpr:

scanmap(factor,expr) =>

%I*LOG((x^8+2*x^4+1)/(x^4+1)^2)

This looks OK, except that the inside rational

expression is not factored (it is actually equal to 1). So

let's try scanmap/factoring it again:

scanmap(factor, scexpr) => No change!

On the other hand, if we enter the expression from

scratch:

entered: %I*LOG((x^8+2*x^4+1)/(x^4+1)^2)

we find that it does factor nicely

scanmap(factor,entered) => 0

The reason is that the internal form of scexpr is marked

Factored and Irreducible:

((MTIMES SIMP) $%I

((%LOG SIMP)

((MTIMES SIMP FACTORED)

((MEXPT SIMP)

((MPLUS SIMP IRREDUCIBLE) 1 ((MEXPT SIMP

RATSIMP) |$x| 4)) -2)

((MPLUS SIMP IRREDUCIBLE) 1

((MTIMES SIMP) 2 ((MEXPT SIMP RATSIMP) |$x| 4))

((MEXPT SIMP RATSIMP) |$x| 8)))))

I see two issue here.

First of all, I'd have expected the scanmap/factor to go

directly to the fully factored form, namely 0.

Secondly, if it doesn't, it should at least not mismark the

result as factored/irreducible.

The incomplete factoring is arguably part of the

semantics of Scanmap, inherent in top-down

scanning, . And indeed Scanmap/bottomup does get

the simplest form (after patching subst0 as reported in

the previous bug note).

On the other hand, I don't see any excuse for

mismarking. If something isn't factored or irreducible, it

shouldn't be marked as factored or irreducible.

Note that Factor actually has a special case for

Scanmap (the scanmapp flag). I suspect that this is to

force incomplete factoring, and that mismarking comes

as an undesired side-effect.