radical simplification problem



Hello, I was playing around with some other Maxima packages when I ran
across a problem which I assume there is a simple method to call, but I've
been unable to find it.

I am using Maxima 5.28.0-2 in Windows.

First, I declare a matrix:
m4: matrix([3,2,1],[1,2,2],[1,2,2]);

I do a symbolic SVD on the matrix:
tmp: sqrtdenest(sqrtdenest( ueivects( m4 . transpose(m4) ) ))$
U: transpose(matrix(tmp[2][1][1],tmp[2][2][1],tmp[2][3][1]))$
tmp: sqrtdenest(sqrtdenest( ueivects( transpose(m4) . m4 ) ))$
V: transpose(matrix(tmp[2][1][1],tmp[2][2][1],tmp[2][3][1]))$
E: diag(sqrt(tmp[1][1]))$

float(U . E . transpose(V)); /* This gives the correct answer so I believe
I performed the SVD correctly */

O:
matrix([3.0,2.0,1.0],[1.0,2.0,2.0],[1.0,2.0,2.0])

But I have the toughest time getting it to produce this result symbolically.
I have tried such as:

U . E . transpose(V);
radcan(fullratsimp(%));
sqrtdenest(scanmap(multthru, %));
radcan(fullratsimp(%));
scanmap(multthru, %);

O: Too ugly to print here

But none of these simplify all the way down to what the numerical answer
gives. Surprising the method which helped simplify the most was the
scanmap(multthru,
%). The sqrtdenest package helps in the case where:
m3:matrix([1,1,1],[1,2,2],[1,2,2]);
but is in sufficient for m4.

(1) -- Is it possible to symbolically simplify my result of
U.E.transpose(V) where
they are defined as above? I realize there could be algorithmic issues.
Maybe an NP-hard simplification problem arises?
(2) -- If it is possible to symbolically simplify the expression, does
Maxima support the necessary methods?
(3) -- If so what are they?

Thanks in advance.