#include <bits/stdc++.h>
long long x, y, p, q;
const int maxn = 1e9;
bool check(int t) {
  return (t * p >= x && t * q >= y && t * q - y >= t * p - x);
}
int binarysearch(int l, int r) {
  if (l >= r) return l;
  int mid = l + r >> 1;
  if (check(mid))
    return binarysearch(l, mid);
  else
    return binarysearch(mid + 1, r);
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    scanf("%I64d %I64d %I64d %I64d", &x, &y, &p, &q);
    if (p == q) {
      if (x == y)
        puts("0");
      else
        puts("-1");
      continue;
    }
    if (p == 0 && x > 0) {
      puts("-1");
      continue;
    }
    if (y * p == x * q) {
      puts("0");
      continue;
    }
    printf("%I64d\n", q * binarysearch(1, maxn) - y);
  }
}
