Hello, this is a function I dont understand.

This is what I am having trouble with.
suppose that a=4 and b=7

Code:
int f(int a, int b) {
  int c;
  c = 2*a%b;
  a = c + (2*b%a);
  b = c - (2*b%a);
  printf("a = %d, b = %d\n",a,b);
  return c;
}
Once you plug in the initial a and b values, the correct answer is a=3 b=0. I dont get how it is achieved.

This is my logic and why I dont understand it:

c=2*a%b = 2*4%7 =1
a=c+(2*b%a) =1+(2*7%4) =3
b=c - (2*b%a)=1- (2*7%4)= -1

So I got a=3 and b=-1 which is wrong. Can someone please explain the logic behind the correct answer?