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

📄 prdctfun.c

📁 clips源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
   /* predecessor. If any is greater, then return FALSE. */   /*====================================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,"<=",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) > ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) > ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) > (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) > ValueToDouble(rv2.value))              { return(FALSE); }           }        }      rv1.type = rv2.type;      rv1.value = rv2.value;     }   /*======================================*/   /* Each argument was less than or equal */   /* to it predecessor. Return TRUE.      */   /*======================================*/   return(TRUE);  }/********************************************//* GreaterThanOrEqualFunction: H/L access   *//*   routine for the >= function.           *//********************************************/globle intBool GreaterThanOrEqualFunction(  void *theEnv)  {   EXPRESSION *theArgument;   DATA_OBJECT rv1, rv2;   int pos = 1;   /*=========================*/   /* Get the first argument. */   /*=========================*/   theArgument = GetFirstArgument();   if (theArgument == NULL) { return(TRUE); }   if (! GetNumericArgument(theEnv,theArgument,">=",&rv1,FALSE,pos)) return(FALSE);   pos++;   /*===================================================*/   /* Compare each of the subsequent arguments to its   */   /* predecessor. If any is lesser, then return FALSE. */   /*===================================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,">=",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) < ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) < ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) < (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) < ValueToDouble(rv2.value))              { return(FALSE); }           }        }      rv1.type = rv2.type;      rv1.value = rv2.value;     }   /*=========================================*/   /* Each argument was greater than or equal */   /* to its predecessor. Return TRUE.        */   /*=========================================*/   return(TRUE);  }/**********************************//* LessThanFunction: H/L access   *//*   routine for the < function.  *//**********************************/globle intBool LessThanFunction(  void *theEnv)  {   EXPRESSION *theArgument;   DATA_OBJECT rv1, rv2;   int pos = 1;   /*=========================*/   /* Get the first argument. */   /*=========================*/   theArgument = GetFirstArgument();   if (theArgument == NULL) { return(TRUE); }   if (! GetNumericArgument(theEnv,theArgument,"<",&rv1,FALSE,pos)) return(FALSE);   pos++;   /*==========================================*/   /* Compare each of the subsequent arguments */   /* to its predecessor. If any is greater or */   /* equal, then return FALSE.                */   /*==========================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,"<",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) >= ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) >= ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) >= (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) >= ValueToDouble(rv2.value))              { return(FALSE); }           }        }      rv1.type = rv2.type;      rv1.value = rv2.value;     }   /*=================================*/   /* Each argument was less than its */   /* predecessor. Return TRUE.       */   /*=================================*/   return(TRUE);  }/*************************************//* GreaterThanFunction: H/L access   *//*   routine for the > function.     *//*************************************/globle intBool GreaterThanFunction(  void *theEnv)  {   EXPRESSION *theArgument;   DATA_OBJECT rv1, rv2;   int pos = 1;   /*=========================*/   /* Get the first argument. */   /*=========================*/   theArgument = GetFirstArgument();   if (theArgument == NULL) { return(TRUE); }   if (! GetNumericArgument(theEnv,theArgument,">",&rv1,FALSE,pos)) return(FALSE);   pos++;   /*==========================================*/   /* Compare each of the subsequent arguments */   /* to its predecessor. If any is lesser or  */   /* equal, then return FALSE.                */   /*==========================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,">",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) <= ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) <= ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) <= (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) <= ValueToDouble(rv2.value))              { return(FALSE); }           }        }      rv1.type = rv2.type;      rv1.value = rv2.value;     }   /*================================*/   /* Each argument was greater than */   /* its predecessor. Return TRUE.  */   /*================================*/   return(TRUE);  }/**************************************//* NumericEqualFunction: H/L access   *//*   routine for the = function.      *//**************************************/globle intBool NumericEqualFunction(  void *theEnv)  {   EXPRESSION *theArgument;   DATA_OBJECT rv1, rv2;   int pos = 1;   /*=========================*/   /* Get the first argument. */   /*=========================*/   theArgument = GetFirstArgument();   if (theArgument == NULL) { return(TRUE); }   if (! GetNumericArgument(theEnv,theArgument,"=",&rv1,FALSE,pos)) return(FALSE);   pos++;   /*=================================================*/   /* Compare each of the subsequent arguments to the */   /* first. If any is unequal, then return FALSE.    */   /*=================================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,"=",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) != ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) != ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) != (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) != ValueToDouble(rv2.value))              { return(FALSE); }           }        }     }   /*=================================*/   /* All arguments were equal to the */   /* first argument. Return TRUE.    */   /*=================================*/   return(TRUE);  }/*****************************************//* NumericNotEqualFunction: H/L access   *//*   routine for the <> function.        *//*****************************************/globle intBool NumericNotEqualFunction(  void *theEnv)  {   EXPRESSION *theArgument;   DATA_OBJECT rv1, rv2;   int pos = 1;   /*=========================*/   /* Get the first argument. */   /*=========================*/   theArgument = GetFirstArgument();   if (theArgument == NULL) { return(TRUE); }   if (! GetNumericArgument(theEnv,theArgument,"<>",&rv1,FALSE,pos)) return(FALSE);   pos++;   /*=================================================*/   /* Compare each of the subsequent arguments to the */   /* first. If any is equal, then return FALSE.      */   /*=================================================*/   for (theArgument = GetNextArgument(theArgument);        theArgument != NULL;        theArgument = GetNextArgument(theArgument), pos++)     {      if (! GetNumericArgument(theEnv,theArgument,"<>",&rv2,FALSE,pos)) return(FALSE);      if (rv1.type == INTEGER)        {         if (rv2.type == INTEGER)           {            if (ValueToLong(rv1.value) == ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if ((double) ValueToLong(rv1.value) == ValueToDouble(rv2.value))              { return(FALSE); }           }        }      else        {         if (rv2.type == INTEGER)           {            if (ValueToDouble(rv1.value) == (double) ValueToLong(rv2.value))              { return(FALSE); }           }         else           {            if (ValueToDouble(rv1.value) == ValueToDouble(rv2.value))              { return(FALSE); }           }        }     }   /*===================================*/   /* All arguments were unequal to the */   /* first argument. Return TRUE.      */   /*===================================*/   return(TRUE);  }/**************************************//* OddpFunction: H/L access routine   *//*   for the oddp function.           *//**************************************/globle intBool OddpFunction(  void *theEnv)  {   DATA_OBJECT item;   long long num, halfnum;   if (EnvArgCountCheck(theEnv,"oddp",EXACTLY,1) == -1) return(FALSE);   if (EnvArgTypeCheck(theEnv,"oddp",1,INTEGER,&item) == FALSE) return(FALSE);   num = DOToLong(item);   halfnum = (num / 2) * 2;   if (num == halfnum) return(FALSE);   return(TRUE);  }/***************************************//* EvenpFunction: H/L access routine   *//*   for the evenp function.           *//***************************************/globle intBool EvenpFunction(  void *theEnv)  {   DATA_OBJECT item;   long long num, halfnum;   if (EnvArgCountCheck(theEnv,"evenp",EXACTLY,1) == -1) return(FALSE);   if (EnvArgTypeCheck(theEnv,"evenp",1,INTEGER,&item) == FALSE) return(FALSE);   num = DOToLong(item);   halfnum = (num / 2) * 2;   if (num != halfnum) return(FALSE);   return(TRUE);  }

⌨️ 快捷键说明

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