I’m having trouble however with two of the functions complaining about the modulo operator.

long mSA = (357.5291 + 0.98560028 * (jSNoon - 2451545)) % 360.0;
long Y = (mSA + 102.9372 + C + 180) % 360.0;

sketch_dec24a.ino: In function 'int getSunrise()':
sketch_dec24a.ino:33:61: error: invalid operands of types 'double' and 'double' to binary 'operator%'
sketch_dec24a.ino:35:41: error: invalid operands of types 'double' and 'double' to binary 'operator%'
Error compiling.

I originally had the variable set to float before reading online that modulo didn’t handle float variables, so I changed it to double and now long, but I still receive the same error. Is there a way around this?

I'm looking into it now. Hopefully it'll help more than the equation I'm using. Apparently I can't get it accurate since float only supports 6-7 digits and I need more. Is there anyway to get a better precision?

Endevor:
I'm looking into it now. Hopefully it'll help more than the equation I'm using. Apparently I can't get it accurate since float only supports 6-7 digits and I need more. Is there anyway to get a better precision?

As the math I referred to uses less operations it is fairly accurate.
What is the precision you are after?

As stated before, an Arduino (AVR proc) 8 bit only has support for 32 bit float. Think the DUE (arm proc) has 64 bit double support, and probably the YUN too