func_code_string: #include <bits/stdc++.h>   using namespace std;   const long double inf = 1e18 + 7;   const long double eps = 1e-18;   long long gcd(long long a, long long b) {     while (a || b) a %= b, swap(a, b);     return a + b;   }   int main() {     ios_base::sync_with_stdio(0);     long long t;     cin >> t;     for (long long tt = 0; tt < t; ++tt) {       long long x, y, p, q;       cin >> x >> y >> p >> q;       long long ok = y - x;       long long wa = y - ok;       long long nok = q - p;       long long nwa = q - nok;       if (nok == nwa) {         cout << abs(ok - wa) << endl;         continue;       }       if (nok == 0) {         if (ok != 0) {           cout << -1 << endl;           continue;         } else {           cout << 0 << endl;           continue;         }       }       if (nwa == 0) {         if (wa != 0) {           cout << -1 << endl;           continue;         } else {           cout << 0 << endl;           continue;         }       }       if (nok < nwa) {         long long xx = ok + nok - 1;         xx /= nok;         xx *= nok;         long long l = -1;         long long r = 1e10;         while (l != r - 1) {           long long m = (l + r) / 2ll;           long long lx = xx + nok * m;           long long rx = lx / nok * nwa;           if (rx >= wa)             r = m;           else             l = m;         }         long long lx = xx + nok * r;         long long rx = lx / nok * nwa;         long long ans = lx - ok;         ans += rx - wa;         cout << ans << endl;       } else {         long long xx = wa + nwa - 1;         xx /= nwa;         xx *= nwa;         long long l = -1;         long long r = 1e10;         while (l != r - 1) {           long long m = (l + r) / 2;           long long lx = xx + m * nwa;           long long rx = lx / nwa * nok;           if (rx >= ok)             r = m;           else             l = m;         }         long long lx = xx + r * nwa;         long long rx = lx / nwa * nok;         long long ans = (lx - wa) + (rx - ok);         cout << ans << endl;       }     }     return 0;   }   