function JulianDay( theyear, themonth, theday) { # See Meeus page 60 Y= theyear; M= themonth; D= theday; if ( M < 3 ) { Y= Y - 1; M= M +12; } A= int( Y / 100 ); B= 2 - A + int( A / 4); return( int(365.25*(Y+4716)) + int(30.6001*(M+1)) + D + B - 1524.5); } function CarringtonRotation( thejulianday) { # See Meeus 29.1, page 191 # Meeus says this can be off by 0.16 days # there is a corrective formula (29.2) in the book, if this turns out to be a problem. return int((thejulianday - 2398140.227 ) / 27.2752316); } function cr2J( thecr) { return 2398140.2270 + 27.2752316 * thecr; } function J2cr( thejul) { return CarringtonRotation( thejul); } function J2date( thejul) { Z= int( thejul + 0.5 ); F= ( thejul + 0.5 ) - Z; if ( Z < 2299161 ) A= Z; else { alpha= int( ( Z - 1867216.25 ) / 36524.25 ); A= Z + 1 + alpha - int( alpha / 4); } B= A + 1524; C= int( ( B - 122.1 ) / 365.25 ); D= int( 365.25 * C ); E= int( ( B - D ) / 30.6001 ); theday= B - D - int(30.6001 * E ) + F; if ( E < 14 ) themonth= E - 1; else themonth= E - 13; if ( themonth > 2 ) theyear= C - 4716; else theyear= C - 4715; return sprintf( "%04d%02d%02d", theyear, themonth, theday); } { print CarringtonRotation( JulianDay( $1, $2, $3)) " " $1 " " $2 " " $3 }