def OSGB36toWGS84(E, N):
<EOL>a, b = <NUM_LIT>, <NUM_LIT><EOL>F0 = <NUM_LIT>  <EOL>lat0 = <NUM_LIT>*pi/<NUM_LIT><EOL>lon0 = -<NUM_LIT:2>*pi/<NUM_LIT>  <EOL>N0, E0 = -<NUM_LIT>, <NUM_LIT><EOL>e2 = <NUM_LIT:1> - (b*b)/(a*a)  <EOL>n = (a-b)/(a+b)<EOL>lat, M = lat0, <NUM_LIT:0><EOL>while N-N0-M >= <NUM_LIT>:  <EOL><INDENT>lat = (N-N0-M)/(a*F0) + lat<EOL>M1 = (<NUM_LIT:1> + n + (<NUM_LIT>/<NUM_LIT:4>)*n**<NUM_LIT:2> + (<NUM_LIT>/<NUM_LIT:4>)*n**<NUM_LIT:3>) * (lat-lat0)<EOL>M2 = (<NUM_LIT:3>*n + <NUM_LIT:3>*n**<NUM_LIT:2> + (<NUM_LIT>/<NUM_LIT:8>)*n**<NUM_LIT:3>) * sin(lat-lat0) * cos(lat+lat0)<EOL>M3 = ((<NUM_LIT>/<NUM_LIT:8>)*n**<NUM_LIT:2> + (<NUM_LIT>/<NUM_LIT:8>)*n**<NUM_LIT:3>) * sin(<NUM_LIT:2>*(lat-lat0)) * cos(<NUM_LIT:2>*(lat+lat0))<EOL>M4 = (<NUM_LIT>/<NUM_LIT>)*n**<NUM_LIT:3> * sin(<NUM_LIT:3>*(lat-lat0)) * cos(<NUM_LIT:3>*(lat+lat0))<EOL>M = b * F0 * (M1 - M2 + M3 - M4)<EOL><DEDENT>nu = a*F0/sqrt(<NUM_LIT:1>-e2*sin(lat)**<NUM_LIT:2>)<EOL>rho = a*F0*(<NUM_LIT:1>-e2)*(<NUM_LIT:1>-e2*sin(lat)**<NUM_LIT:2>)**(-<NUM_LIT>)<EOL>eta2 = nu/rho-<NUM_LIT:1><EOL>sec_lat = <NUM_LIT:1.>/cos(lat)<EOL>VII = tan(lat)/(<NUM_LIT:2>*rho*nu)<EOL>VIII = tan(lat)/(<NUM_LIT>*rho*nu**<NUM_LIT:3>)*(<NUM_LIT:5>+<NUM_LIT:3>*tan(lat)**<NUM_LIT:2>+eta2-<NUM_LIT:9>*tan(lat)**<NUM_LIT:2>*eta2)<EOL>IX = tan(lat)/(<NUM_LIT>*rho*nu**<NUM_LIT:5>)*(<NUM_LIT>+<NUM_LIT>*tan(lat)**<NUM_LIT:2>+<NUM_LIT>*tan(lat)**<NUM_LIT:4>)<EOL>X = sec_lat/nu<EOL>XI = sec_lat/(<NUM_LIT:6>*nu**<NUM_LIT:3>)*(nu/rho+<NUM_LIT:2>*tan(lat)**<NUM_LIT:2>)<EOL>XII = sec_lat/(<NUM_LIT>*nu**<NUM_LIT:5>)*(<NUM_LIT:5>+<NUM_LIT>*tan(lat)**<NUM_LIT:2>+<NUM_LIT>*tan(lat)**<NUM_LIT:4>)<EOL>XIIA = sec_lat/(<NUM_LIT>*nu**<NUM_LIT:7>)*(<NUM_LIT>+<NUM_LIT>*tan(lat)**<NUM_LIT:2>+<NUM_LIT>*tan(lat)**<NUM_LIT:4>+<NUM_LIT>*tan(lat)**<NUM_LIT:6>)<EOL>dE = E-E0<EOL>lat_1 = lat - VII*dE**<NUM_LIT:2> + VIII*dE**<NUM_LIT:4> - IX*dE**<NUM_LIT:6><EOL>lon_1 = lon0 + X*dE - XI*dE**<NUM_LIT:3> + XII*dE**<NUM_LIT:5> - XIIA*dE**<NUM_LIT:7><EOL>H = <NUM_LIT:0>  <EOL>x_1 = (nu/F0 + H)*cos(lat_1)*cos(lon_1)<EOL>y_1 = (nu/F0 + H)*cos(lat_1)*sin(lon_1)<EOL>z_1 = ((<NUM_LIT:1>-e2)*nu/F0 + H)*sin(lat_1)<EOL>s = -<NUM_LIT>*<NUM_LIT:10>**-<NUM_LIT:6>  <EOL>tx, ty, tz = <NUM_LIT>, -<NUM_LIT>, + <NUM_LIT><EOL>rxs, rys, rzs = <NUM_LIT>, <NUM_LIT>, <NUM_LIT><EOL>def sec_to_rad(x): return x*pi/(<NUM_LIT>*<NUM_LIT>)<EOL>rx, ry, rz = [sec_to_rad(x) for x in (rxs, rys, rzs)]  <EOL>x_2 = tx + (<NUM_LIT:1>+s)*x_1 + (-rz)*y_1 + (ry)*z_1<EOL>y_2 = ty + (rz)*x_1 + (<NUM_LIT:1>+s)*y_1 + (-rx)*z_1<EOL>z_2 = tz + (-ry)*x_1 + (rx)*y_1 + (<NUM_LIT:1>+s)*z_1<EOL>a_2, b_2 = <NUM_LIT>, <NUM_LIT><EOL>e2_2 = <NUM_LIT:1> - (b_2*b_2)/(a_2*a_2)  <EOL>p = sqrt(x_2**<NUM_LIT:2> + y_2**<NUM_LIT:2>)<EOL>lat = atan2(z_2, (p*(<NUM_LIT:1>-e2_2)))  <EOL>latold = <NUM_LIT:2>*pi<EOL>while abs(lat - latold) > <NUM_LIT:10>**-<NUM_LIT:16>:<EOL><INDENT>lat, latold = latold, lat<EOL>nu_2 = a_2/sqrt(<NUM_LIT:1>-e2_2*sin(latold)**<NUM_LIT:2>)<EOL>lat = atan2(z_2+e2_2*nu_2*sin(latold), p)<EOL><DEDENT>lon = atan2(y_2, x_2)<EOL>H = p/cos(lat) - nu_2<EOL>lat = lat*<NUM_LIT>/pi<EOL>lon = lon*<NUM_LIT>/pi<EOL>return lat, lon<EOL>
Accept The Ordnance Survey National Grid eastings and northings.
    Return latitude and longitude coordinates.

    Usage:
    >>> from bng_to_latlon import OSGB36toWGS84
    >>> OSGB36toWGS84(538890, 177320)
    (51.47779538331092, -0.0014016837826672265)
    >>> OSGB36toWGS84(352500.2, 401400)
    (53.507129843104195, -2.7176599627343263)