code: final int getGregorianYearFromFixedDate(long fixedDate) {
          long d0;
          int  d1, d2, d3, d4;
          int  n400, n100, n4, n1;
          int  year;
  
          if (fixedDate > 0) {
              d0 = fixedDate - 1;
              n400 = (int)(d0 / 146097);
              d1 = (int)(d0 % 146097);
              n100 = d1 / 36524;
              d2 = d1 % 36524;
              n4 = d2 / 1461;
              d3 = d2 % 1461;
              n1 = d3 / 365;
              d4 = (d3 % 365) + 1;
          } else {
              d0 = fixedDate - 1;
              n400 = (int)CalendarUtils.floorDivide(d0, 146097L);
              d1 = (int)CalendarUtils.mod(d0, 146097L);
              n100 = CalendarUtils.floorDivide(d1, 36524);
              d2 = CalendarUtils.mod(d1, 36524);
              n4 = CalendarUtils.floorDivide(d2, 1461);
              d3 = CalendarUtils.mod(d2, 1461);
              n1 = CalendarUtils.floorDivide(d3, 365);
              d4 = CalendarUtils.mod(d3, 365) + 1;
          }
          year = 400 * n400 + 100 * n100 + 4 * n4 + n1;
          if (!(n100 == 4 || n1 == 4)) {
              ++year;
          }
          return year;
      }
docs: Returns the Gregorian year number of the given fixed date.