// #includes {{{
#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)(n);++i)
#define RREP(i,a,b) for(int i=(int)(a);i<(int)(b);++i)
#define FOR(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();++i)
#define LET(x,a) __typeof(a) x(a)
//#define IFOR(i,it,c) for(__typeof((c).begin())it=(c).begin();it!=(c).end();++it,++i)
#define ALL(c) (c).begin(), (c).end()
#define MP make_pair

#define EXIST(e,s) ((s).find(e)!=(s).end())

#define RESET(a) memset((a),0,sizeof(a))
#define SET(a) memset((a),-1,sizeof(a))
#define PB push_back
#define DEC(it,command) __typeof(command) it=command

//debug
#define dump(x)  cerr << #x << " = " << (x) << endl;
#define debug(x) cerr << #x << " = " << (x) << " (L" << __LINE__ << ")" << " " << __FILE__ << endl;
#define debug_v(x) cerr << #x << " = [";REP(__ind,(x).size()){cerr << (x)[__ind] << ", ";}cerr << "] (L" << __LINE__ << ")" << endl;

#define whole(f,x,...) ([&](decltype((x)) whole) { return (f)(begin(whole), end(whole), ## __VA_ARGS__); })(x)

typedef long long Int;
typedef unsigned long long uInt;
typedef long double rn;

template<class T>
T inf(){
	return numeric_limits<T>::has_infinity?numeric_limits<T>::infinity():(numeric_limits<T>::max()/2);
}

typedef pair<int,int> pii;

/*
#ifdef MYDEBUG
#include"debug.h"
#include"print.h"
#endif
*/
// }}}

//{{{ io
FILE *file_in=stdin,*file_out=stdout;
#define fin normal_in
#define fout normal_out
//const char fname[]="";
//FILE *fin=fopen(fname,"r"),*fout=fopen(fname,"w");
#ifdef __MINGW32__
#define LLD "%I64d"
#define LLU "%I64u"
#else
#define LLD "%lld"
#define LLU "%llu"
#endif
struct NORMAL_IN{
	bool cnt;
	NORMAL_IN():cnt(true){}
	operator int() const {return cnt;}
#define endl "\n"
	NORMAL_IN& operator>>(int &n){cnt=fscanf(file_in,"%d",&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(unsigned int &n){cnt=fscanf(file_in,"%u",&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(long long &n){cnt=fscanf(file_in,LLD,&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(unsigned long long &n){cnt=fscanf(file_in,LLU,&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(double &n){cnt=fscanf(file_in,"%lf",&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(long double &n){cnt=fscanf(file_in,"%Lf",&n)!=EOF;return *this;}
	NORMAL_IN& operator>>(char *c){cnt=fscanf(file_in,"%s",c)!=EOF;return *this;}
	NORMAL_IN& operator>>(string &s){
		s.clear();
		for(bool r=false;;){
			const char c=getchar();
			if(c==EOF){ cnt=false; break;}
			const int t=isspace(c);
			if(!r and !t)r=true;
			if(r){
				if(!t)s.push_back(c);
				else break;
			}
		}
		return *this;
	}
	template<class T>
		NORMAL_IN& operator>>(vector<T> &v){
			int n;fscanf(file_in,"%d",&n);
			REP(i,n){
				T t;*this>>t;
				v.push_back(t);
			}
			return *this;
		}
} normal_in;

struct NORMAL_OUT{
	NORMAL_OUT& operator<<(const int &n){fprintf(file_out,"%d",n);return *this;}
	NORMAL_OUT& operator<<(const unsigned int &n){fprintf(file_out,"%u",n);return *this;}
	NORMAL_OUT& operator<<(const long long &n){fprintf(file_out,LLD,n);return *this;}
	NORMAL_OUT& operator<<(const unsigned long long &n){fprintf(file_out,LLU,n);return *this;}
	NORMAL_OUT& operator<<(const double &n){fprintf(file_out,"%lf",n);return *this;}
	NORMAL_OUT& operator<<(const long double &n){fprintf(file_out,"%Lf",n);return *this;}
	NORMAL_OUT& operator<<(const char c[]){fprintf(file_out,"%s",c);return *this;}
	NORMAL_OUT& operator<<(const string &s){fprintf(file_out,"%s",s.c_str());return *this;}
} normal_out;
struct ERR_OUT{
	template<class T>
		ERR_OUT& operator<<(const T &a){
			cerr<<"\x1b[7m"<<a<<"\x1b[m";
			return *this;
		}
} ferr;
//}}}

//{{{ Geometry Components
#include<complex>
const rn PI=3.141592653589793238462643383279L;
const rn EPS=1e-10,INF=inf<rn>();

inline int signum(rn x) { return (abs(x) < EPS ? 0 : x > 0 ? 1 : -1); }

// point
typedef complex<rn> P;

namespace std {
	bool operator < (const P& a, const P& b) {
		return real(a) != real(b) ? real(a) < real(b) : imag(a) < imag(b);
	}
}
// line
struct L {
	P pos, dir; 
	L(const P &pos,const P &dir):pos(pos),dir(dir){}
	P operator[](int i)const {
		if(i==0)return pos;
		else return pos + dir;
	}
};
L line_PP(const P &p,const P &q){
	return L(p,q-p);
}
// polygon
typedef vector<P> G;
// circle
struct C { 
	P p; rn r;
	C(const P &p,const rn r):p(p),r(r){}
};
G triangle(const P &p,const P &q,const P &r){
	G g;
	g.push_back(p);
	g.push_back(q);
	g.push_back(r);
	return g;
}

P unit_vector(const P &p){
	return p/abs(p);
}
//}}}

//{{{ convex_hull(vector<P> &v)
struct XY_LESS{
	bool operator ()(const pair<P,int>& a, const pair<P,int>& b) {
		if (abs(a.first.imag()-b.first.imag()) < EPS) return (a.first.real() < b.first.real());
		return (a.first.imag() < b.first.imag());
	}
};
rn my_ccw(P a, P b, P c) {
	return (conj(b-a)*(c-a)).imag();
}

template<class IN>
void walk_rightside(IN begin, IN end, vector<int>& v, vector<P> &p) {
	IN cur = begin;
	p.push_back(cur->first);v.push_back(cur->second);
	cur++;
	vector<int>::size_type s = v.size();
	p.push_back(cur->first);v.push_back(cur->second);
	cur++;
	while(cur != end) {
		if (v.size() == s || my_ccw(p[v.size()-2], p.back(), cur->first) > EPS){
			v.push_back(cur->second);p.push_back(cur->first);
			cur++;
		}else{
			v.pop_back();p.pop_back();
		}
	}
	v.pop_back();p.pop_back();
}
vector<int> convex_hull(const vector<P> &v) {
	vector<int> cv;
	if (v.size() <= 1){
		cv.push_back(0);
		return cv; // EXCEPTIONAL
	}
	vector<pair<P,int> > vp;
	REP(i,v.size())vp.push_back(MP(v[i],i));
	sort(ALL(vp), XY_LESS());
	vector<P> p;
	walk_rightside(vp.begin(), vp.end(), cv, p);
	walk_rightside(vp.rbegin(), vp.rend(), cv, p);
	return cv;
}
//}}}

void solve(Int N, vector<Int> x, vector<Int> y){
	vector<P> v;
	REP(i,N)v.push_back(P(x[i],y[i]));
	vector<int> id = convex_hull(v);
	vector<rn> ans(N,0.0);
	if(id.size()==2){
		for(auto &&i:id)ans[i] = 0.5L;
	}else{
		REP(i,id.size()){
			int prev_i = (i-1+id.size())%id.size(), next_i = (i+1)%id.size();
			rn p = arg((v[id[next_i]]-v[id[i]])/(v[id[i]]-v[id[prev_i]]));
			ans[id[i]] = p/(PI*2.0L);
		}
	}
	REP(i,ans.size()){
		printf("%.10Lf\n",ans[i]);
	}
}

int main(){	
	Int N;
	fin >> N;
	vector<Int> x(N-1+1);
	vector<Int> y(N-1+1);
	for(int i = 0 ; i <= N-1 ; i++){
		fin >> x[i];
		fin >> y[i];
	}
	solve(N, x, y);
	return 0;
}


Measured memory_bytes: 384