$\DeclareMathOperator{\col}{\operatorname{col}}\DeclareMathOperator{\diag}{\operatorname{diag}}\DeclareMathOperator{\Range}{\operatorname{Range}}$Let $A \in \mathbb{R}^{n\times m}$, $D = \diag(d) = \diag (d\_1,...,d\_m)$ such that $d\_i \geq 0$ for all $i = 1,...,m$.


Consider the product $X = ADA^\top$. It is known that $\Range(X)\subseteq \Range(A)$. What are the conditions on $D$ and on the $d\_i$ such that: $$\Range(X) = \Range(A).$$


I suppose it is something related to the support of $d$ being contained in the null space of $A$, but I am not completely sure about it.



Characterize matrix range
Since $\text{Range}(X)\subset\text{Range}(A)$, $$\text{Range}(X)=\text{Range}(A)\Leftrightarrow \text{rank}(X)=\text{rank}(A)\Leftrightarrow \ker(X)=\ker(A^T).$$


For any $M$ we have $MM^Tx=0\Leftrightarrow M^Tx=0$. Indeed $$0=\langle x,MM^Tx\rangle = \langle M^Tx,M^Tx\rangle =\|M^Tx\|^2.$$
Therefore $$x\in \ker(X)\Leftrightarrow (AD^\frac{1}{2})(AD^\frac{1}{2})^Tx=0\Leftrightarrow D^\frac{1}{2}A^Tx=0$$ Conclusion $:\text{Range}(X)=\text{Range}(A)\Leftrightarrow \ker(D)\cap\text{Range}(A^T)=\{0\}$


