Changeset 2179
- Timestamp:
- Oct 20, 2004, 10:05:58 AM (22 years ago)
- Location:
- trunk/psLib/src
- Files:
-
- 4 edited
-
astro/psTime.c (modified) (11 diffs)
-
astro/psTime.h (modified) (2 diffs)
-
astronomy/psTime.c (modified) (11 diffs)
-
astronomy/psTime.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/astro/psTime.c
r2151 r2179 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1.3 4$ $Name: not supported by cvs2svn $14 * @date $Date: 2004-10- 15 19:10:50$13 * @version $Revision: 1.35 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2004-10-20 20:05:51 $ 15 15 * 16 16 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 482 482 483 483 return out; 484 } 485 486 psTime* psTimeAlloc(psTimeType type) 487 { 488 psTime *outTime = NULL; 489 490 if(type!=PS_TIME_TAI && type!=PS_TIME_UTC) { 491 psError(__func__, " : Line %d - Incorrect type. Type: %d", __LINE__, type); 492 return NULL; 493 } 494 495 outTime = (psTime*)psAlloc(sizeof(psTime)); 496 if(outTime == NULL) { 497 psAbort(__func__, " : Line %d - Failed to allocate memory", __LINE__); 498 } 499 500 outTime->sec = 0; 501 outTime->usec = 0; 502 outTime->type = type; 503 504 return outTime; 484 505 } 485 506 … … 1004 1025 psTime* psTimeAdd(const psTime *tai1, const psTime *tai2) 1005 1026 { 1027 psF64 deltaSec = 0; 1006 1028 long deltaUsec = 0; 1007 1029 psTime *outTime = NULL; … … 1010 1032 if(tai1->type != tai2->type) { 1011 1033 psError(__func__, " : Line %d - Argument types inconsistent for time addition", __LINE__); 1034 return NULL; 1035 } else if(tai1->usec >= 1e6) { 1036 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1037 return NULL; 1038 } else if(tai2->usec >= 1e6) { 1039 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1012 1040 return NULL; 1013 1041 } … … 1018 1046 deltaUsec = tai1->usec + tai2->usec; 1019 1047 1020 // Adjust time in case of microsecond overflow after subtraction 1021 if(deltaUsec > 1e6) { 1022 outTime->sec++; 1023 outTime->usec = 2e6 - deltaUsec; 1048 // Adjust time in case of microsecond overflow after addition 1049 if(deltaUsec >= 1e6) { 1050 if(deltaSec < 0 ) { 1051 outTime->sec--; // Negative seconds - make more negative 1052 } else { 1053 outTime->sec++; // Positive seconds - make more positive 1054 } 1055 outTime->usec = deltaUsec - 1e6; 1024 1056 } else { 1025 1057 outTime->usec = deltaUsec; … … 1031 1063 psTime* psTimeSubtract(const psTime *tai1, const psTime *tai2) 1032 1064 { 1065 psS64 deltaSec = 0; 1033 1066 long deltaUsec = 0; 1034 1067 psTime *outTime = NULL; … … 1038 1071 psError(__func__, " : Line %d - Argument types inconsistent for time subtraction", __LINE__); 1039 1072 return NULL; 1073 } else if(tai1->usec >= 1e6) { 1074 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1075 return NULL; 1076 } else if(tai2->usec >= 1e6) { 1077 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1078 return NULL; 1040 1079 } 1041 1080 1042 1081 ALLOC_TIME(outTime); 1043 1082 outTime->type = tai1->type; 1044 outTime->sec = tai1->sec - tai2->sec;1083 deltaSec = tai1->sec - tai2->sec; 1045 1084 deltaUsec = (long)tai1->usec - (long)tai2->usec; 1046 1085 1047 1086 // Adjust time in case of microsecond underflow after subtraction 1048 1087 if(deltaUsec < 0) { 1049 outTime->sec--; 1088 if(deltaSec < 0) { 1089 deltaSec++; // Negative seconds - make less negative 1090 } else { 1091 deltaSec--; // Positive seconds - make less positive 1092 } 1050 1093 outTime->usec = 1e6+deltaUsec; 1051 1094 } else { … … 1053 1096 } 1054 1097 1098 outTime->sec = deltaSec; 1099 1055 1100 return outTime; 1056 1101 } … … 1058 1103 psTime* psTimeDelta(const psTime *tai1, const psTime *tai2) 1059 1104 { 1105 psS64 deltaSec = 0; 1060 1106 long deltaUsec = 0; 1061 1107 psTime *outTime = NULL; … … 1065 1111 psError(__func__, " : Line %d - Argument types inconsistent for time subtraction", __LINE__); 1066 1112 return NULL; 1113 } else if(tai1->usec >= 1e6) { 1114 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1115 return NULL; 1116 } else if(tai2->usec >= 1e6) { 1117 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1118 return NULL; 1067 1119 } 1068 1120 1069 1121 ALLOC_TIME(outTime); 1070 1122 outTime->type = tai1->type; 1071 outTime->sec = tai1->sec - tai2->sec;1072 deltaUsec = tai1->usec -tai2->usec;1123 deltaSec = tai1->sec - tai2->sec; 1124 deltaUsec = (long)tai1->usec - (long)tai2->usec; 1073 1125 1074 1126 // Adjust time in case of microsecond underflow after subtraction 1075 1127 if(deltaUsec < 0) { 1076 outTime->sec--; 1128 if(deltaSec < 0) { 1129 deltaSec++; // Negative seconds - make less negative 1130 } else { 1131 deltaSec--; // Positive seconds - make less positive 1132 } 1077 1133 outTime->usec = 1e6+deltaUsec; 1078 1134 } else { … … 1080 1136 } 1081 1137 1082 outTime->sec = abs( outTime->sec);1138 outTime->sec = abs(deltaSec); 1083 1139 1084 1140 return outTime; -
trunk/psLib/src/astro/psTime.h
r2048 r2179 54 54 * @author Ross Harman, MHPCC 55 55 * 56 * @version $Revision: 1.1 5$ $Name: not supported by cvs2svn $57 * @date $Date: 2004-10- 12 01:34:09$56 * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $ 57 * @date $Date: 2004-10-20 20:05:58 $ 58 58 * 59 59 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 100 100 psTime; 101 101 102 /** Allocate time struct. 103 * 104 * Allocates an empty time struct. User must specify the psTimeType (PS_TIME_TAI or PS_TIME_UTC) in the argument. 105 * The seconds and microseconds members of the struct are set to zero. 106 * 107 * @return psTime*: Struct with empty time. 108 */ 109 psTime* psTimeAlloc( 110 psTimeType type ///< Type of time to create (UTC or TAI). 111 ); 112 102 113 /** Get current time. 103 114 * -
trunk/psLib/src/astronomy/psTime.c
r2151 r2179 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1.3 4$ $Name: not supported by cvs2svn $14 * @date $Date: 2004-10- 15 19:10:50$13 * @version $Revision: 1.35 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2004-10-20 20:05:51 $ 15 15 * 16 16 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 482 482 483 483 return out; 484 } 485 486 psTime* psTimeAlloc(psTimeType type) 487 { 488 psTime *outTime = NULL; 489 490 if(type!=PS_TIME_TAI && type!=PS_TIME_UTC) { 491 psError(__func__, " : Line %d - Incorrect type. Type: %d", __LINE__, type); 492 return NULL; 493 } 494 495 outTime = (psTime*)psAlloc(sizeof(psTime)); 496 if(outTime == NULL) { 497 psAbort(__func__, " : Line %d - Failed to allocate memory", __LINE__); 498 } 499 500 outTime->sec = 0; 501 outTime->usec = 0; 502 outTime->type = type; 503 504 return outTime; 484 505 } 485 506 … … 1004 1025 psTime* psTimeAdd(const psTime *tai1, const psTime *tai2) 1005 1026 { 1027 psF64 deltaSec = 0; 1006 1028 long deltaUsec = 0; 1007 1029 psTime *outTime = NULL; … … 1010 1032 if(tai1->type != tai2->type) { 1011 1033 psError(__func__, " : Line %d - Argument types inconsistent for time addition", __LINE__); 1034 return NULL; 1035 } else if(tai1->usec >= 1e6) { 1036 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1037 return NULL; 1038 } else if(tai2->usec >= 1e6) { 1039 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1012 1040 return NULL; 1013 1041 } … … 1018 1046 deltaUsec = tai1->usec + tai2->usec; 1019 1047 1020 // Adjust time in case of microsecond overflow after subtraction 1021 if(deltaUsec > 1e6) { 1022 outTime->sec++; 1023 outTime->usec = 2e6 - deltaUsec; 1048 // Adjust time in case of microsecond overflow after addition 1049 if(deltaUsec >= 1e6) { 1050 if(deltaSec < 0 ) { 1051 outTime->sec--; // Negative seconds - make more negative 1052 } else { 1053 outTime->sec++; // Positive seconds - make more positive 1054 } 1055 outTime->usec = deltaUsec - 1e6; 1024 1056 } else { 1025 1057 outTime->usec = deltaUsec; … … 1031 1063 psTime* psTimeSubtract(const psTime *tai1, const psTime *tai2) 1032 1064 { 1065 psS64 deltaSec = 0; 1033 1066 long deltaUsec = 0; 1034 1067 psTime *outTime = NULL; … … 1038 1071 psError(__func__, " : Line %d - Argument types inconsistent for time subtraction", __LINE__); 1039 1072 return NULL; 1073 } else if(tai1->usec >= 1e6) { 1074 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1075 return NULL; 1076 } else if(tai2->usec >= 1e6) { 1077 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1078 return NULL; 1040 1079 } 1041 1080 1042 1081 ALLOC_TIME(outTime); 1043 1082 outTime->type = tai1->type; 1044 outTime->sec = tai1->sec - tai2->sec;1083 deltaSec = tai1->sec - tai2->sec; 1045 1084 deltaUsec = (long)tai1->usec - (long)tai2->usec; 1046 1085 1047 1086 // Adjust time in case of microsecond underflow after subtraction 1048 1087 if(deltaUsec < 0) { 1049 outTime->sec--; 1088 if(deltaSec < 0) { 1089 deltaSec++; // Negative seconds - make less negative 1090 } else { 1091 deltaSec--; // Positive seconds - make less positive 1092 } 1050 1093 outTime->usec = 1e6+deltaUsec; 1051 1094 } else { … … 1053 1096 } 1054 1097 1098 outTime->sec = deltaSec; 1099 1055 1100 return outTime; 1056 1101 } … … 1058 1103 psTime* psTimeDelta(const psTime *tai1, const psTime *tai2) 1059 1104 { 1105 psS64 deltaSec = 0; 1060 1106 long deltaUsec = 0; 1061 1107 psTime *outTime = NULL; … … 1065 1111 psError(__func__, " : Line %d - Argument types inconsistent for time subtraction", __LINE__); 1066 1112 return NULL; 1113 } else if(tai1->usec >= 1e6) { 1114 psError(__func__, " : Line %d - Argument 1 microseconds too big. Value %u", __LINE__, tai1->usec); 1115 return NULL; 1116 } else if(tai2->usec >= 1e6) { 1117 psError(__func__, " : Line %d - Argument 2 microseconds too big. Value %u", __LINE__, tai2->usec); 1118 return NULL; 1067 1119 } 1068 1120 1069 1121 ALLOC_TIME(outTime); 1070 1122 outTime->type = tai1->type; 1071 outTime->sec = tai1->sec - tai2->sec;1072 deltaUsec = tai1->usec -tai2->usec;1123 deltaSec = tai1->sec - tai2->sec; 1124 deltaUsec = (long)tai1->usec - (long)tai2->usec; 1073 1125 1074 1126 // Adjust time in case of microsecond underflow after subtraction 1075 1127 if(deltaUsec < 0) { 1076 outTime->sec--; 1128 if(deltaSec < 0) { 1129 deltaSec++; // Negative seconds - make less negative 1130 } else { 1131 deltaSec--; // Positive seconds - make less positive 1132 } 1077 1133 outTime->usec = 1e6+deltaUsec; 1078 1134 } else { … … 1080 1136 } 1081 1137 1082 outTime->sec = abs( outTime->sec);1138 outTime->sec = abs(deltaSec); 1083 1139 1084 1140 return outTime; -
trunk/psLib/src/astronomy/psTime.h
r2048 r2179 54 54 * @author Ross Harman, MHPCC 55 55 * 56 * @version $Revision: 1.1 5$ $Name: not supported by cvs2svn $57 * @date $Date: 2004-10- 12 01:34:09$56 * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $ 57 * @date $Date: 2004-10-20 20:05:58 $ 58 58 * 59 59 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 100 100 psTime; 101 101 102 /** Allocate time struct. 103 * 104 * Allocates an empty time struct. User must specify the psTimeType (PS_TIME_TAI or PS_TIME_UTC) in the argument. 105 * The seconds and microseconds members of the struct are set to zero. 106 * 107 * @return psTime*: Struct with empty time. 108 */ 109 psTime* psTimeAlloc( 110 psTimeType type ///< Type of time to create (UTC or TAI). 111 ); 112 102 113 /** Get current time. 103 114 *
Note:
See TracChangeset
for help on using the changeset viewer.
