#include <bits/stdc++.h>
#define FO(i,a,b) for (int i = (a); i < (b); i++)
#define sz(v) int(v.size())
#define N 100000 // Num Points, each 1 Kg spaced equally on circle of radius 1 about origin
#define G 1 // We only care about direction of force so let G = 1 should be fine
double tests[ ] = { 0 ,0.5 ,0.8 ,0.9 ,0.99 ,1.1 ,1.2 ,1.3 ,2 ,3 ,4 } ;
using namespace std;
double y[ N] , x[ N] ;
int main( ) {
FO( i,0 ,N) y[ i] = sin ( i* 2 * M_PI/ N) , x[ i] = cos ( i* 2 * M_PI/ N) ;
FO( Z,0 ,sizeof ( tests) / sizeof ( double ) ) {
double py = tests[ Z] ;
// calculate direction of gravitational field at (0,py)
printf ( "FIELD from (0,%lf)\n " , py) ;
double fy = 0 ;
FO( i,0 ,N) {
if ( abs ( y[ i] - py) < 1e-6 ) continue ;
double r2 = pow ( y[ i] - py,2 ) + pow ( x[ i] ,2 ) ;
double F = G / r2;
double dy = abs ( y[ i] - py) ;
double DY = F * dy / sqrt ( r2) ;
if ( y[ i] < py) fy - = DY;
else fy + = DY;
}
if ( fy > 1e-6 ) printf ( "UP\n " ) ;
else if ( fy < - 1e-6 ) printf ( "DOWN\n " ) ;
else printf ( "NO NET FORCE\n " ) ;
printf ( "%lf\n " , fy) ;
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZPKGksYSxiKSBmb3IgKGludCBpID0gKGEpOyBpIDwgKGIpOyBpKyspCiNkZWZpbmUgc3oodikgaW50KHYuc2l6ZSgpKQoKI2RlZmluZSBOIDEwMDAwMCAvLyBOdW0gUG9pbnRzLCBlYWNoIDEgS2cgc3BhY2VkIGVxdWFsbHkgb24gY2lyY2xlIG9mIHJhZGl1cyAxIGFib3V0IG9yaWdpbgojZGVmaW5lIEcgMSAvLyBXZSBvbmx5IGNhcmUgYWJvdXQgZGlyZWN0aW9uIG9mIGZvcmNlIHNvIGxldCBHID0gMSBzaG91bGQgYmUgZmluZQoKZG91YmxlIHRlc3RzW10gPSB7MCwwLjUsMC44LDAuOSwwLjk5LDEuMSwxLjIsMS4zLDIsMyw0fTsKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgeVtOXSwgeFtOXTsKCmludCBtYWluKCkgewogICAgRk8oaSwwLE4pIHlbaV0gPSBzaW4oaSoyKk1fUEkvTiksIHhbaV0gPSBjb3MoaSoyKk1fUEkvTik7CiAgICBGTyhaLDAsc2l6ZW9mKHRlc3RzKS9zaXplb2YoZG91YmxlKSkgewogICAgICAgIGRvdWJsZSBweSA9IHRlc3RzW1pdOwogICAgICAgIC8vIGNhbGN1bGF0ZSBkaXJlY3Rpb24gb2YgZ3Jhdml0YXRpb25hbCBmaWVsZCBhdCAoMCxweSkKICAgICAgICBwcmludGYoIkZJRUxEIGZyb20gKDAsJWxmKVxuIiwgcHkpOwogICAgICAgIGRvdWJsZSBmeSA9IDA7CiAgICAgICAgRk8oaSwwLE4pIHsKICAgICAgICAgICAgaWYgKGFicyh5W2ldLXB5KSA8IDFlLTYpIGNvbnRpbnVlOwoKICAgICAgICAgICAgZG91YmxlIHIyID0gcG93KHlbaV0tcHksMikrcG93KHhbaV0sMik7CiAgICAgICAgICAgIGRvdWJsZSBGID0gRyAvIHIyOwogICAgICAgICAgICBkb3VibGUgZHkgPSBhYnMoeVtpXS1weSk7CiAgICAgICAgICAgIGRvdWJsZSBEWSA9IEYgKiBkeSAvIHNxcnQocjIpOwogICAgICAgICAgICBpZiAoeVtpXSA8IHB5KSBmeSAtPSBEWTsKICAgICAgICAgICAgZWxzZSBmeSArPSBEWTsKICAgICAgICB9CiAgICAgICAgaWYgKGZ5ID4gMWUtNikgcHJpbnRmKCJVUFxuIik7CiAgICAgICAgZWxzZSBpZiAoZnkgPCAtMWUtNikgcHJpbnRmKCJET1dOXG4iKTsKICAgICAgICBlbHNlIHByaW50ZigiTk8gTkVUIEZPUkNFXG4iKTsKICAgICAgICBwcmludGYoIiVsZlxuIiwgZnkpOwogICAgfQp9Cgo=
stdout
FIELD from (0,0.000000)
NO NET FORCE
-0.000000
FIELD from (0,0.500000)
UP
34487.720615
FIELD from (0,0.800000)
UP
123354.131333
FIELD from (0,0.900000)
UP
274897.896540
FIELD from (0,0.990000)
UP
3107579.097677
FIELD from (0,1.100000)
DOWN
-351745.140272
FIELD from (0,1.200000)
DOWN
-180130.010258
FIELD from (0,1.300000)
DOWN
-120211.142783
FIELD from (0,2.000000)
DOWN
-31140.515256
FIELD from (0,3.000000)
DOWN
-12145.187191
FIELD from (0,4.000000)
DOWN
-6561.246376