#include<iostream> #include<string> #include<algorithm> #include<vector> #include<queue> #include<map> #include<math.h> #include<iomanip> #include<set> #include<numeric> #include<cstring> #include<cstdio> #include<functional> #include<bitset> #include<limits.h> #include<cassert> #include<iterator> #include<complex> #include<stack> #include<sstream> #include<iterator> #include<list> using namespace std; typedef long long int lint; #define rep(i, n) for (lint i = 0; i < n; i++) #define sort(v) sort((v).begin(), (v).end()) #define reverse(v) reverse((v).begin(), (v).end()) #define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge) #define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge) #define mp make_pair #define enld endl int main() { double a, b, c, d; cin >> a >> b >> c >> d; double D = (a - c) * (a - c) - 8 * (b - d); if (D < 0) { cout << "No" << endl; } else if (D == 0) { cout << "Yes" << endl; } else { double x1 = ((c - a) + sqrt(D)) / 4; double x2 = ((c - a) - sqrt(D)) / 4; double y1 = x1 * x1 + a * x1 + b; double y2 = x2 * x2 + a * x2 + b; double p = (y1 - y2) / (x1 - x2); double q = y1 - p * x1; cout <<fixed<<setprecision(20)<< p << ' ' << q << endl; } }