Hello to all. I am new. I am looking at P(R*(2,01)) and the definitions of norm for a point P and infinite norm for a line m. If I understand correctly, the norm of P for (x,y,z) is defined as z which could be positive or negative depending on the value of z, and infinite norm for m [a,b,c] as c which also could be positive or negative. Now, I am using python generator by Enki from /tools for this algebra and the norms are all positive. So, for a point (1,2,-3) the norm() function gives 3 instead of -3. Is this intended behavior?

@fractal97 That’s a good question. To answer your question first: a norm is a non-negative real-valued function with some special properties (details are not important here). So the software is behaving correctly.

On the other hand, it might be of interest that the two cases you’ve mentioned (standard norm of point or ideal norm of a line) are a bit special because in both the norm only depends on **one** of the coordinates. When that happens:

- You can always normalize by dividing by that coordinate (when it is nonzero, as it is in the cases of interest here) and end up with a value of 1 for that coordinate. So, even though the point (x,y,-1) is normalized, it makes sense to prefer (-x,-y,1) as the normalized form. For example, the difference between two normalized euclidean points \bf{V} := {P}-Q should be an ideal point (which correspond to the free vectors of PGA). Then the z-coordinates of the two points should be equal in order that the z-coordinate of \bf{V} is 0, i. e., \bf{V} is ideal.
- You can extend the value of the norm \| x\| in these cases to take on negative values also. For example, suppose you have the point \mathbf{P} = x \mathbf{e}_1 + y \mathbf{e}_2 + z \mathbf{e}_0. Then \| \mathbf{P}\| := z. You can think of this as the (possibly negative)
*weight*of \mathbf{P} to distinguish it from the (non-negative)*norm*. It combines the norm with the orientation, which is possible only when the norm depends on just 1 coordinate. If you’ve written your PGA implementation with this extension, then \|(1,2,-3)\| = -3.

**Note**: Obviously if you’re going to use this extension you have to be careful to document the API carefully so users know about it, or provide access to it through a different name.

**Note**: Remember, this only works in the very special case that the norm depends only on one coordinate.