1195 return {v.x * inv, v.y * inv, v.z * inv, v.w * inv};
1753 int skips_leap[] = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
1754 int skips_nonleap[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
1755 const int *skips =
nullptr;
1757 if (JulianDay < 1 || JulianDay > 366) {
1758 throw(std::runtime_error(
"ERROR (Julian2Calendar): Julian day of " + std::to_string(
JulianDay) +
" is out of range (should be >0 and <367)."));
1761 if ((year - 2000) % 4 == 0) {
1764 skips = skips_nonleap;
1767 for (
int i = 1; i <= 12; i++) {
1775 assert(month > 0 && month < 13);
1779 assert(day > 0 && day < 32);
1781 return {day, month, year};
1791 int skips_leap[] = {0, 31, 60, 91, 121, 152, 182, 214, 244, 274, 305, 335};
1792 int skips_nonleap[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
1793 int *skips =
nullptr;
1795 if ((date.
year - 2000) % 4 == 0) {
1798 skips = skips_nonleap;
1801 int JD = skips[date.
month - 1] + date.
day;
1802 if (JD <= 0 || JD > 366) {
1803 throw(
"ERROR (Calendar2Julian): Julian day of " + std::to_string(JD) +
" is out of range (should be >0 and <=366).");
1910 if (second < 0 || second > 59) {
1911 throw(std::runtime_error(
"ERROR (make_Time): Second of " + std::to_string(second) +
" out of range (0-59)."));
1912 }
else if (minute < 0 || minute > 59) {
1913 throw(std::runtime_error(
"ERROR (make_Time): Minute of " + std::to_string(minute) +
" out of range (0-59)."));
1914 }
else if (hour < 0 || hour > 23) {
1915 throw(std::runtime_error(
"ERROR (make_Time): Hour of " + std::to_string(hour) +
" out of range (0-23)."));
1918 return {hour, minute, second};