Like I said, for a fixed location I'd use a lookup table instead of expensive and complicated computations at runtime.
For example, in the southern part of Sweden (Malmö to be precise) the sunrise occurs between 04:23 and 08:37 (a window of 4h14min or 254 minutes). Sunset occurs between 15:35 and 21:55 (a window of 6h20min or 380min).

If we can accept 2 minute resolution then we can store sunrise and sunset as "2 minute ticks from 04:20 for sunrise and 2 minute ticks from 15:30 for sunset using 8bits for each day using only 16bits so 730bytes worth of flash memory. I'd be surprised if you can get better resolution and/or smaller code doing it at runtime.

The drawback, obviously, is that you need to adapt and encode the data for your specific location and changing it is not as simple as punching in GPS coordinates. But for a one-off wall clock it's certainly means to an end IMHO.