I think you are probably correct. Lets try a set of simple cases.
( 4 % 3) == 1
( 4 %% 3) == 1
Are these two correct answers? (-4 % 3) == -2 ??
(-4 %% 3) == 1 ??
Lets assume I got that correct and plug in some numbers. a %% b == (( a % b) + **b** ) % b
-4 %% 3 == ((-4 % 3) + 3 ) % 3
-4 %% 3 == (-2 + 3) % 3
-4 %% 3 == 1
However I think it would be clearer for maintenance if the extra operator wasn't used and instead some 'math.absolute()' function were used.PS: Hopefully those are short enough to not die on mobile
It's definitely a typo.
Conceptually I prefer looking at them as
a % b = a - trunc(a / b) * b
a %% b = a - floor(a / b) * b
The latter is even used as % in languages such as Python, which further compounds any syntactical confusion. :D
Perhaps it's a typo for
a %% b == ((a % b) + b) % b
Which brings a negative modulus into the range [0, b)