I wonder how often actual code uses these patterns. Is there anyone who would write (-x)/(-y) instead of x/y?
Also, some of these patterns claim to eliminate something, but they actually just move it around. For example, -(x/y) -> (-x)/y doesn't eliminate negation, so it's not clear to me that the latter form is faster than the former.