code: static DiscordianDate ofEpochDay(final long epochDay) {
          DiscordianChronology.EPOCH_DAY_RANGE.checkValidValue(epochDay, EPOCH_DAY);
  
          // use of Discordian 1167 makes leap year at end of long cycle
          long discordianEpochDay = epochDay + DISCORDIAN_1167_TO_ISO_1970;
  
          long longCycle = Math.floorDiv(discordianEpochDay, DAYS_PER_LONG_CYCLE);
          long daysInLongCycle = Math.floorMod(discordianEpochDay, DAYS_PER_LONG_CYCLE);
          if (daysInLongCycle == DAYS_PER_LONG_CYCLE - 1) {
              int year = (int) (longCycle * 400) + 400;
              return ofYearDay(year + OFFSET_FROM_ISO_0000, 366);
          }
  
          int cycle = (int) daysInLongCycle / DAYS_PER_CYCLE;
          int dayInCycle = (int) daysInLongCycle % DAYS_PER_CYCLE;
          int shortCycle = dayInCycle / DAYS_PER_SHORT_CYCLE;
          int dayInShortCycle = dayInCycle % DAYS_PER_SHORT_CYCLE;
  
          if (dayInShortCycle == DAYS_PER_SHORT_CYCLE - 1) {
              int year = (int) (longCycle * 400) + (cycle * 100) + (shortCycle * 4) + 4;
              return ofYearDay(year + OFFSET_FROM_ISO_0000, 366);
          }
  
          int year = (int) (longCycle * 400) + (cycle * 100) + (shortCycle * 4) + (dayInShortCycle / 365) + 1;
          int dayOfYear = (dayInShortCycle % 365) + 1;
  
          return ofYearDay(year + OFFSET_FROM_ISO_0000, dayOfYear);
      }
docs: Obtains a {@code DiscordianDate} representing a date in the Discordian calendar
  system from the epoch-day.
  
  @param epochDay  the epoch day to convert based on 1970-01-01 (ISO)
  @return the date in Discordian calendar system, not null
  @throws DateTimeException if the epoch-day is out of range