In perlin noise, four pseudo-random unit vectors are placed at each corner of a 1 by 1 square.
Let's denote each pseudo-random vector $\vec{v_1}, \vec{v_2}, \vec{v_3}, \vec{v_4}$ Then, the perlin noise function should look like $[0, 1] \times [0, 1] \mapsto [?, ?]$ (possibly $[-1, 1]$ as the question asks.)
Let $\vec{u} \in [0, 1] \times [0, 1]$, and let $u_1$ and $u_2$ denote the components of this vector.
Let $a_i = \vec{u} \cdot \vec{v_i}$
Suppose the pseudo-random vectors were given in the order top-left, top-right, bottom-left, bottom-right.
Let $l_{ijk} = lerp(a_i, a_j, u_k)$
Where lerp is linear interpolation, such that $f$ is simply bilinearly interpolating.
Then $f(\vec{u}) = lerp(l_{121}, l_{231}, u_2)$
Is this function's range always $\in [0,1]$? When can it be and when can it not? The pseudo-random vectors are always unit vectors.