-
-
Notifications
You must be signed in to change notification settings - Fork 3
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Description
It's not clear what's causing this infinite loop, but given specific coordinates and time data, we are running into infinite loops computing observation events for moon phases. I could only reproduce this for Nov 10, 2024, with longitudes in the western hemisphere.
Reproduction Steps
lat = 41.02054
lon = -72.15608
date = Date.new(2024, 11, 10)
observer = Astronoby::Observer.new(
latitude: Astronoby::Angle.from_degrees(lat),
longitude: Astronoby::Angle.from_degrees(lon)
)
moon = Astronoby::Moon.new(time: date.to_time)
moon_events = moon.observation_events(observer: observer) # <-- infinite loop hitExpected behavior
Results returned
Actual behavior
Infinite Loop in ObservationEvents line 95.
def iterate(initial_rising, initial_transit, initial_setting)
delta = 1
corrected_rising = initial_rising
corrected_transit = initial_transit
corrected_setting = initial_setting
until delta < ITERATION_PRECISION <--- delta oscillates between two values > `ITERATION_PRECISION`
iterate = RiseTransitSetIteration.new(
observer: @observer,
date: @date,
coordinates_of_the_next_day: @coordinates_of_the_next_day,
coordinates_of_the_day: @coordinates_of_the_day,
coordinates_of_the_previous_day: @coordinates_of_the_previous_day,
shift: shift,
initial_rising: corrected_rising,
initial_transit: corrected_transit,
initial_setting: corrected_setting
).iterate
delta = iterate.sum
puts delta
corrected_rising = rationalize_decimal_time corrected_rising + iterate[0]
corrected_transit = rationalize_decimal_time corrected_transit + iterate[1]
corrected_setting = rationalize_decimal_time corrected_setting + iterate[2]
end
[corrected_rising, corrected_transit, corrected_setting]
endOutput of delta value:
Delta: 1 | ITERATION_PRECISION 0.0001
Delta: 0.05579327610748758 | ITERATION_PRECISION 0.0001
Delta: 0.9685195308025412 | ITERATION_PRECISION 0.0001
Delta: 0.03219316342944962 | ITERATION_PRECISION 0.0001
Delta: 0.9678321976156058 | ITERATION_PRECISION 0.0001
Delta: 0.03216888120673453 | ITERATION_PRECISION 0.0001
Delta: 0.9678311688422382 | ITERATION_PRECISION 0.0001
Delta: 0.03216883356000096 | ITERATION_PRECISION 0.0001
Delta: 0.9678311665568381 | ITERATION_PRECISION 0.0001
Delta: 0.032168833448871344 | ITERATION_PRECISION 0.0001
Delta: 0.9678311665514086 | ITERATION_PRECISION 0.0001
Delta: 0.03216883344860502 | ITERATION_PRECISION 0.0001
Delta: 0.9678311665513957 | ITERATION_PRECISION 0.0001
Delta: 0.03216883344860461 | ITERATION_PRECISION 0.0001
Delta: 0.9678311665513954 | ITERATION_PRECISION 0.0001
Delta: 0.03216883344860461 | ITERATION_PRECISION 0.0001
......
Delta: 0.9678311665513957 | ITERATION_PRECISION 0.0001
Delta: 0.03216883344860461 | ITERATION_PRECISION 0.0001
Delta: 0.9678311665513954 | ITERATION_PRECISION 0.0001
Delta: 0.03216883344860461 | ITERATION_PRECISION 0.0001System configuration
astronoby version: 0.5.0
ruby version: ruby 3.1.4p223
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working