📄 units.c
字号:
else if(d->length_expnt == 0 && d->time_expnt == 0 && d->mass_expnt == 0 && d->temp_expnt == 0 ) { free((char *)d->units_name); d->units_name = (char *)NULL; d->scale_factor = 1.0;#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [b] Check weather the units are LENGTH units */ if(d->length_expnt != 0 && d->time_expnt == 0 && d->mass_expnt == 0 && d->temp_expnt == 0 ) { if(d->units_type == SI) dp = DefaultUnits("m"); else dp = DefaultUnits("in"); if(d->length_expnt == 1) { if(strcmp(d->units_name, dp->units_name) != 0) { free((char *) d->units_name); d->units_name = SaveString(dp->units_name); d->scale_factor = dp->scale_factor; } return(d); } else if(d->length_expnt < 0) { d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS)); ZeroUnits(d1); d1->units_type = d->units_type; if(d->length_expnt == -1) { UnitsDivRep(d, d1, dp, NO); } else { d2 = UnitsPower( dp, ABS(d->length_expnt), NO ); UnitsDivRep(d, d1, d2, NO); free((char *) d2->units_name); free((char *) d2); } free((char *) d1->units_name); free((char *) d1); } else UnitsPowerRep(d, dp, d->length_expnt, NO); free((char *) dp->units_name); free((char *) dp);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [c] Check weather the units are MASS units */ if(d->length_expnt == 0 && d->time_expnt == 0 && d->mass_expnt != 0 && d->temp_expnt == 0 ) { if(d->units_type == SI) dp = DefaultUnits("kg"); else dp = DefaultUnits("lb"); if(d->mass_expnt == 1) { if(strcmp(d->units_name, dp->units_name) != 0) { free((char *) d->units_name); d->units_name = SaveString(dp->units_name); d->scale_factor = dp->scale_factor; } return(d); } else if(d->mass_expnt < 0) { d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS)); ZeroUnits(d1); d1->units_type = d->units_type; if(d->mass_expnt == -1) { UnitsDivRep(d, d1, dp, NO); } else { d2 = UnitsPower( dp, ABS(d->mass_expnt), NO ); UnitsDivRep(d, d1, d2, NO); free((char *) d2->units_name); free((char *) d2); } free((char *) d1->units_name); free((char *) d1); } else UnitsPowerRep(d, dp, d->mass_expnt, NO); free((char *) dp->units_name); free((char *) dp);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [d] Check weather the units are TIME units */ if(d->length_expnt == 0 && d->time_expnt != 0 && d->mass_expnt == 0 && d->temp_expnt == 0 ) { dp = DefaultUnits("sec"); if(d->time_expnt == 1) { if(strcmp(d->units_name, dp->units_name) != 0) { free((char *) d->units_name); d->units_name = SaveString(dp->units_name); d->scale_factor = dp->scale_factor; } return(d); } else if(d->time_expnt < 0) { d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS)); ZeroUnits(d1); d1->units_type = SI_US; if(d->time_expnt == -1) { UnitsDivRep(d, d1, dp, NO); } else { d2 = UnitsPower( dp, ABS(d->time_expnt), NO ); UnitsDivRep(d, d1, d2, NO); free((char *) d2->units_name); free((char *) d2); } free((char *) d1->units_name); free((char *) d1); } else UnitsPowerRep(d, dp, d->time_expnt, NO); free((char *) dp->units_name); free((char *) dp);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [e] Check weather the units are TEMPERATURE units */ if(d->length_expnt == 0 && d->time_expnt == 0 && d->mass_expnt == 0 && d->temp_expnt != 0 ) { if(d->units_type == SI) dp = DefaultUnits("deg_C"); else dp = DefaultUnits("deg_F"); if(d->temp_expnt == 1) { if(strcmp(d->units_name, dp->units_name) != 0) { free((char *) d->units_name); d->units_name = SaveString(dp->units_name); d->scale_factor = dp->scale_factor; } return(d); } else if(d->temp_expnt < 0) { d1 = (DIMENSIONS *)MyCalloc(1,sizeof(DIMENSIONS)); ZeroUnits(d1); d1->units_type = d->units_type; if(d->temp_expnt == -1) { UnitsDivRep(d, d1, dp, NO); } else { d2 = UnitsPower( dp, ABS(d->temp_expnt), NO ); UnitsDivRep(d, d1, d2, NO); free((char *) d2->units_name); free((char *) d2); } free((char *) d1->units_name); free((char *) d1); } else UnitsPowerRep(d, dp, d->temp_expnt, NO); free((char *) dp->units_name); free((char *) dp); return(d);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif } /* [f] Check weather the units are only two units related */ /* [f.1] Check weather the units are Length and Mass related */ else if(d->length_expnt != 0 && d->time_expnt == 0 && d->mass_expnt != 0 && d->temp_expnt == 0 ) { if(d->units_type == SI) { dp1 = DefaultUnits("m"); dp2 = DefaultUnits("kg"); } else { dp1 = DefaultUnits("in"); dp2 = DefaultUnits("lb"); } if(ABS(d->length_expnt) == 1) { d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d1,dp1); } else d1 = UnitsPower( dp1, ABS(d->length_expnt), NO ); if(ABS(d->mass_expnt) == 1) { d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d2,dp2); } else d2 = UnitsPower( dp2, ABS(d->mass_expnt), NO ); if(d->length_expnt > 0) { if(d->mass_expnt > 0) UnitsMultRep(d, d1, d2); else UnitsDivRep(d, d1, d2, NO); } else if(d->mass_expnt > 0) { UnitsDivRep(d, d2, d1, NO); } else { dd1 = UnitsPower( dp1, d->length_expnt, NO ); dd2 = UnitsPower( dp2, d->mass_expnt, NO ); UnitsMultRep(d, dd1, dd2); free((char *) dd1->units_name); free((char *) dd1); free((char *) dd2->units_name); free((char *) dd2); } free((char *) d1->units_name); free((char *) d1); free((char *) d2->units_name); free((char *) d2); free((char *) dp1->units_name); free((char *) dp1); free((char *) dp2->units_name); free((char *) dp2);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [f.2] Check weather the units are Length and Time related */ else if(d->length_expnt != 0 && d->time_expnt != 0 && d->mass_expnt == 0 && d->temp_expnt == 0 ) { if(d->units_type == SI) { dp1 = DefaultUnits("m"); dp2 = DefaultUnits("sec"); } else { dp1 = DefaultUnits("in"); dp2 = DefaultUnits("sec"); } if(ABS(d->length_expnt) == 1) { d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d1,dp1); } else d1 = UnitsPower( dp1, ABS(d->length_expnt), NO ); if(ABS(d->time_expnt) == 1) { d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d2,dp2); } else d2 = UnitsPower( dp2, ABS(d->time_expnt), NO ); if(d->length_expnt > 0) { if(d->time_expnt > 0) UnitsMultRep(d, d1, d2); else UnitsDivRep(d, d1, d2, NO); } else if(d->time_expnt > 0) { UnitsDivRep(d, d2, d1, NO); } else { dd1 = UnitsPower( dp1, d->length_expnt, NO ); dd2 = UnitsPower( dp2, d->time_expnt, NO ); UnitsMultRep(d, dd1, dd2); free((char *) dd1->units_name); free((char *) dd1); free((char *) dd2->units_name); free((char *) dd2); } free((char *) d1->units_name); free((char *) d1); free((char *) d2->units_name); free((char *) d2); free((char *) dp1->units_name); free((char *) dp1); free((char *) dp2->units_name); free((char *) dp2);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [f.3] Check weather the units are Length and Temperature related */ else if(d->length_expnt != 0 && d->time_expnt == 0 && d->mass_expnt == 0 && d->temp_expnt != 0 ) { if(d->units_type == SI) { dp1 = DefaultUnits("m"); dp2 = DefaultUnits("deg_C"); } else { dp1 = DefaultUnits("in"); dp2 = DefaultUnits("deg_F"); } if(ABS(d->length_expnt) == 1) { d1 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d1,dp1); } else d1 = UnitsPower( dp1, ABS(d->length_expnt), NO ); if(ABS(d->temp_expnt) == 1) { d2 = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS)); UnitsCopy(d2,dp2); } else d2 = UnitsPower( dp2, ABS(d->temp_expnt), NO ); if(d->length_expnt > 0) { if(d->temp_expnt > 0) UnitsMultRep(d, d1, d2); else UnitsDivRep(d, d1, d2, NO); } else if(d->temp_expnt > 0) { UnitsDivRep(d, d2, d1, NO); } else { dd1 = UnitsPower( dp1, d->length_expnt, NO ); dd2 = UnitsPower( dp2, d->temp_expnt, NO ); UnitsMultRep(d, dd1, dd2); free((char *) dd1->units_name); free((char *) dd1); free((char *) dd2->units_name); free((char *) dd2); } free((char *) d1->units_name); free((char *) d1); free((char *) d2->units_name); free((char *) d2); free((char *) dp1->units_name); free((char *) dp1); free((char *) dp2->units_name); free((char *) dp2);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [f.4] Check weather the units are Time and Mass related */ /* [f.4.a] Check weather the units are FORCE/LENGTH units */ else if(d->length_expnt == 0 && d->time_expnt == -2 && d->mass_expnt == 1 && d->temp_expnt == 0 ) { if(d->units_type == SI){ d1 = DefaultUnits("N"); d2 = DefaultUnits("m"); } else{ d1 = DefaultUnits("lbf"); d2 = DefaultUnits("in"); } UnitsDivRep(d, d1, d2, NO); free((char *) d1->units_name); free((char *) d1); free((char *) d2->units_name); free((char *) d2);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [f.4] Check weather the units are Time and Mass related */ /* [f.4.b] Check weather the units are LENGTH/FORCE units */ else if(d->length_expnt == 0 && d->time_expnt == 2 && d->mass_expnt == -1 && d->temp_expnt == 0 ) { if(d->units_type == SI){ d1 = DefaultUnits("m"); d2 = DefaultUnits("N"); } else{ d1 = DefaultUnits("in"); d2 = DefaultUnits("lbf"); } UnitsDivRep(d, d1, d2, NO); free((char *) d1->units_name); free((char *) d1); free((char *) d2->units_name); free((char *) d2);#ifdef DEBUG printf(" Leaving UnitsSimplify() \n");#endif return(d); } /* [f.4.c] Check weather the units are Time and Mass related */ else if(d->length_expnt == 0 && d->time_expnt != 0 && d->mass_expnt != 0 && d->temp_expnt == 0 ) { if(d->units_type == SI) { dp1 = DefaultUnits("sec");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -