I like the new definition of fixed point. Its quite crisp.

Building on the definition we can now argue that any integer number representation is: integer value/2^N

With N being a positive integer. N=0 is basically a regular INT, and N>0 is a fixed point number.

If we accept this definition we can ask ourselves how 13.2 and 13.3 fit into our new definition. This as both are built on the assumption that N=1, which goes against our more open-ended definition.

Arguably, 13.3 is just short hand for a vmul followed by vnclip.

Similarly, 13.2 is just short hand for vadd/vsub followed by vssra.

Utilizing this more crisp definition we can now semantically define fixed point math operations as:

#inner loop

vmul of SEW*SEW -> 2xSEW [N.(SEW-N) -> 2N.2(SEW-N)]

vssra of 2xSEW -> 2xSEW >> needed guarding for the expected math operation

vadd of guarded 2xSEW with guarded running sum vector

#roll out

vnclip of guarded running sum vector 2xSEW >> SEW-guard bits+N to convert back to N.(SEW-N)

#or if we want to utilize a 2N.2(SEW-N) double precision fixed point

#note this construct is currently not feasible

#vnclip_shift_left guarded 2xSEW << guard bits