⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 code.c

📁 有限元程序
💻 C
📖 第 1 页 / 共 5 页
字号:
         FatalError("In Mul() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    free((char *) d1.q);    Push(d3);}int Quantity_Div(){DATUM d1, d2, d;int      length;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    d.q        = (QUANTITY *) MyCalloc(1,sizeof(QUANTITY));    if(d2.q->value != 0)       d.q->value = d1.q->value/d2.q->value;    else       FatalError("In Quantity_Div() : Attempt to divide by zero",(char *)NULL);    switch(CheckUnits()) {      case ON:         d.q->dimen = UnitsDiv( d1.q->dimen, d2.q->dimen, NO );         free((char *) d1.q->dimen->units_name);         free((char *) d1.q->dimen);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         break;      case OFF:         break;      default:                   FatalError("In Div() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d1.q);    free((char *) d2.q);    Push(d);}int Quantity_Mod(){DATUM d1, d2, d;int      length;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    d.q        = (QUANTITY *) MyCalloc(1,sizeof(QUANTITY));    if(d2.q->value != 0) {       if( ( (double)(int)d1.q->value != d1.q->value ) ||           ( (double)(int)d2.q->value != d2.q->value ) )          FatalError("In Quantity_Mod() : operands of % (mod) must be integers",(char *)NULL);       else          d.q->value = ((int) d1.q->value) % ((int) d2.q->value);    }    else       FatalError("In Quantity_Mod() : Attempt to divide by zero",(char *)NULL);    switch(CheckUnits()) {      case ON:         d.q->dimen = UnitsDiv( d1.q->dimen, d2.q->dimen, NO );         free((char *) d1.q->dimen->units_name);         free((char *) d1.q->dimen);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         break;      case OFF:         break;      default:                   FatalError("In Mod() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d1.q);    free((char *) d2.q);    Push(d);}int Quantity_Negate(){DATUM d1;    d1 = Pop();    d1.q->value = -d1.q->value;    Push(d1);}#ifdef __STDC__int dComp_Le( double x, double y )#elseint dComp_Le(x, y)double x, y;#endif{static int FLAG;    FLAG = (x < y );   if(dComp_Eq(x,y)) FLAG = 1;   return (FLAG);}#ifdef __STDC__int dComp_Ge( double x, double y )#elseint dComp_Ge(x, y)double x, y;#endif{static int FLAG;    FLAG = (x > y );   if(dComp_Eq(x,y)) FLAG = 1;   return (FLAG);}#ifdef __STDC__int dComp_Eq( double x, double y )#elseint dComp_Eq(x,y)double x,y;#endif{static int FLAG; double ERROR;          ERROR = x - y;   if((ABS(ERROR) == 0.0) || (ABS(ERROR) != 0.0 && ABS(ERROR) < 1E-15))       FLAG = 1;   else       FLAG = 0;   return (FLAG);}#ifdef __STDC__dComp_Ne( double x, double y )#elsedComp_Ne(x,y)double x,y;#endif{static int FLAG; double ERROR;          ERROR = x - y;   if(ABS(ERROR) != 0.0 && ABS(ERROR) > 1E-15)       FLAG = 1;   else       FLAG = 0;   return (FLAG);}int Quantity_Gt(){DATUM d1, d2;    d2     = Pop();  /* 2nd quantity, d2.q */    d1     = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE)            d1.q->value = (double) (d1.q->value > d2.q->value);         else            FatalError("In Quantity_Gt() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) (d1.q->value > d2.q->value);         break;      default:                   FatalError("In Quantity_Gt() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_Lt(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE) {            d1.q->value = (double) (d1.q->value < d2.q->value);         }         else            FatalError("In Quantity_Lt() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) (d1.q->value < d2.q->value);         break;      default:                   FatalError("In Quantity_Lt() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_Ge(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE)            d1.q->value = (double) dComp_Ge(d1.q->value, d2.q->value);         else            FatalError("In Quantity_Ge() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) dComp_Ge(d1.q->value, d2.q->value);         break;      default:                   FatalError("In Quantity_Ge() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_Le(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE)            d1.q->value = (double) dComp_Le(d1.q->value, d2.q->value);         else            FatalError("In Quantity_Le() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) dComp_Le(d1.q->value, d2.q->value);         break;      default:                   FatalError("In Quantity_Le() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_Eq(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE)            d1.q->value = (double) dComp_Eq(d1.q->value, d2.q->value);         else            FatalError("In Quantity_Eq() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) dComp_Eq(d1.q->value, d2.q->value);         break;      default:                   FatalError("In Quantity_Eq() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_Ne(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    switch( CheckUnits() ) {      case ON:         if(SameUnits(d1.q->dimen, d2.q->dimen) == TRUE)            d1.q->value = (double) dComp_Ne(d1.q->value, d2.q->value);         else            FatalError("In Quantity_Ne() : Inconsistent Dimensions",(char *)NULL);         free((char *) d2.q->dimen->units_name);         free((char *) d2.q->dimen);         free((char *) d1.q->dimen->units_name);         d1.q->dimen->units_name = (char *)NULL;         break;      case OFF:         d1.q->value = (double) dComp_Ne(d1.q->value, d2.q->value);         break;      default:                   FatalError("In Quantity_Ne() : CheckUnits is not ON or OFF",(char *)NULL);         break;    }    free((char *) d2.q);    Push(d1);}int Quantity_And(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    d1.q->value = (double) (d1.q->value != 0 && d2.q->value != 0);    if(CheckUnits()==ON) {       free((char *) d2.q->dimen->units_name);       free((char *) d2.q->dimen);       free((char *) d1.q->dimen->units_name);       d1.q->dimen->units_name = (char *)NULL;    }    free((char *) d2.q);    Push(d1);}int Quantity_Or(){DATUM d1, d2;    d2 = Pop();  /* 2nd quantity, d2.q */    d1 = Pop();  /* 1st quantity, d1.q */    d1.q->value = (double) (d1.q->value != 0 || d2.q->value != 0);    if(CheckUnits()==ON) {       free((char *)d2.q->dimen->units_name);       free((char *)d2.q->dimen);       free((char *)d1.q->dimen->units_name);       d1.q->dimen->units_name = (char *)NULL;    }    free((char *) d2.q);    Push(d1);}int Quantity_Yes(){DATUM d1;     d1.q = (QUANTITY *) MyCalloc(1,sizeof(QUANTITY));     if(CheckUnits() == ON){        d1.q->dimen = (DIMENSIONS *) MyCalloc(1,sizeof(DIMENSIONS));        d1.q->dimen->units_name = (char *)NULL;     }     else        d1.q->dimen = (DIMENSIONS *)NULL;     d1.q->value = (double) (TRUE);     Push(d1);}int Quantity_Not(){DATUM d1;     d1 = Pop();     d1.q->value = (double) (d1.q->value == 0);     if( CheckUnits() == ON ) {        free((char *) d1.q->dimen->units_name);        d1.q->dimen->units_name = (char *)NULL;     }     Push(d1);}int Quantity_Power(){DATUM     d1, d2, d;int          length;  /* [a] : Pop quantities from stack and allocate memory for result */     d2  = Pop();  /* 2nd quantity, d2.q */     d1  = Pop();  /* 1st quantity, d1.q */     d.q = (QUANTITY *) MyCalloc(1,sizeof(QUANTITY));  /* [a] : Pop quantities from stack and allocate memory for result */     switch( CheckUnits() ) {       case ON:            if(((d1.q->dimen->length_expnt != 0) ||                (d1.q->dimen->mass_expnt   != 0) ||                (d1.q->dimen->time_expnt   != 0) ||                (d1.q->dimen->temp_expnt   != 0)) &&               ((d2.q->dimen->length_expnt == 0) &&                (d2.q->dimen->mass_expnt   == 0) &&                (d2.q->dimen->time_expnt   == 0) &&                (d2.q->dimen->temp_expnt   == 0))) {                  d.q->value = pow(d1.q->value, d2.q->value);                 d.q->dimen = UnitsPower( d1.q->dimen, d2.q->value, NO );            } else if (((d1.q->dimen->length_expnt == 0) &&                (d1.q->dimen->mass_expnt   == 0) &&                (d1.q->dimen->time_expnt   == 0) &&                (d1.q->dimen->temp_expnt   == 0)) &&               ((d2.q->dimen->length_expnt == 0) ||                (d2.q->dimen->mass_expnt   == 0) ||                (d2.q->dimen->time_expnt   == 0) ||                (d2.q->dimen->temp_expnt   == 0))) {                  d.q->value = pow(d1.q->value, d2.q->value);                 d.q->dimen = UnitsPower( d2.q->dimen, 1.0, NO );            } else if (((d1.q->dimen->length_expnt != 0) ||                (d1.q->dimen->mass_expnt   != 0) ||                (d1.q->dimen->time_expnt   != 0) ||                (d1.q->dimen->temp_expnt   != 0)) &&               ((d2.q->dimen->length_expnt != 0) ||                (d2.q->dimen->mass_expnt   != 0) ||                (d2.q->dimen->time_expnt   != 0) ||                (d2.q->dimen->temp_expnt   != 0))) {                  FatalError("In Quantity_Power() : Illegal Power Operation",                           (char *) NULL);            }            free((char *) d2.q->dimen->units_name);            free((char *) d2.q->dimen);            free((char *) d1.q->dimen->units_name);            free((char *) d1.q->dimen);            break;       case OFF:            d.q->value = pow(d1.q->value, d2.q->value);            break;       default:                      FatalError("In Quantity_Power() : CheckUnits is not ON or OFF",                        (char *)NULL);            break;     }     free((char *) d2.q);     free((char *) d1.q);     Push(d);}int Quantity_Affirm()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -