亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bmathfun.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*             BASIC MATH FUNCTIONS MODULE             */   /*******************************************************//*************************************************************//* Purpose: Contains the code for numerous basic math        *//*   functions including +, *, -, /, integer, float, div,    *//*   abs,set-auto-float-dividend, get-auto-float-dividend,   *//*   min, and max.                                           *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*      6.23: Correction for FalseSymbol/TrueSymbol. DR0859  *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _BMATHFUN_SOURCE_#include <stdio.h>#define _STDIO_INCLUDED_#include "setup.h"#include "argacces.h"#include "envrnmnt.h"#include "exprnpsr.h"#include "router.h"#include "bmathfun.h"#define BMATHFUN_DATA 6struct basicMathFunctionData  {    intBool AutoFloatDividend;  };#define BasicMathFunctionData(theEnv) ((struct basicMathFunctionData *) GetEnvironmentData(theEnv,BMATHFUN_DATA))/***************************************************************//* BasicMathFunctionDefinitions: Defines basic math functions. *//***************************************************************/globle void BasicMathFunctionDefinitions(  void *theEnv)  {      AllocateEnvironmentData(theEnv,BMATHFUN_DATA,sizeof(struct basicMathFunctionData),NULL);      BasicMathFunctionData(theEnv)->AutoFloatDividend = TRUE;#if ! RUN_TIME   EnvDefineFunction2(theEnv,"+", 'n',PTIEF AdditionFunction, "AdditionFunction", "2*n");   EnvDefineFunction2(theEnv,"*", 'n', PTIEF MultiplicationFunction, "MultiplicationFunction", "2*n");   EnvDefineFunction2(theEnv,"-", 'n', PTIEF SubtractionFunction, "SubtractionFunction", "2*n");       EnvDefineFunction2(theEnv,"/", 'n', PTIEF DivisionFunction, "DivisionFunction", "2*n");   EnvDefineFunction2(theEnv,"div", 'g', PTIEF DivFunction, "DivFunction", "2*n");   EnvDefineFunction2(theEnv,"set-auto-float-dividend", 'b',                   SetAutoFloatDividendCommand, "SetAutoFloatDividendCommand", "11");   EnvDefineFunction2(theEnv,"get-auto-float-dividend", 'b',                  GetAutoFloatDividendCommand, "GetAutoFloatDividendCommand", "00");   EnvDefineFunction2(theEnv,"integer", 'g', PTIEF IntegerFunction, "IntegerFunction", "11n");   EnvDefineFunction2(theEnv,"float", 'd', PTIEF FloatFunction, "FloatFunction", "11n");   EnvDefineFunction2(theEnv,"abs", 'n', PTIEF AbsFunction, "AbsFunction", "11n");   EnvDefineFunction2(theEnv,"min", 'n', PTIEF MinFunction, "MinFunction", "2*n");   EnvDefineFunction2(theEnv,"max", 'n', PTIEF MaxFunction, "MaxFunction", "2*n");#endif  }/**********************************//* AdditionFunction: H/L access   *//*   routine for the + function.  *//**********************************/globle void AdditionFunction(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {   double ftotal = 0.0;   long long ltotal = 0LL;   intBool useFloatTotal = FALSE;   EXPRESSION *theExpression;   DATA_OBJECT theArgument;   int pos = 1;   /*=================================================*/   /* Loop through each of the arguments adding it to */   /* a running total. If a floating point number is  */   /* encountered, then do all subsequent operations  */   /* using floating point values.                    */   /*=================================================*/   theExpression = GetFirstArgument();   while (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"+",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (useFloatTotal)        { ftotal += ValueToDouble(theArgument.value); }      else        {         if (theArgument.type == INTEGER)           { ltotal += ValueToLong(theArgument.value); }         else           {            ftotal = (double) ltotal + ValueToDouble(theArgument.value);            useFloatTotal = TRUE;           }        }      pos++;     }   /*======================================================*/   /* If a floating point number was in the argument list, */   /* then return a float, otherwise return an integer.    */   /*======================================================*/   if (useFloatTotal)     {      returnValue->type = FLOAT;      returnValue->value = (void *) EnvAddDouble(theEnv,ftotal);     }   else     {      returnValue->type = INTEGER;      returnValue->value = (void *) EnvAddLong(theEnv,ltotal);     }  }/****************************************//* MultiplicationFunction: CLIPS access *//*   routine for the * function.        *//****************************************/globle void MultiplicationFunction(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {   double ftotal = 1.0;   long long ltotal = 1LL;   intBool useFloatTotal = FALSE;   EXPRESSION *theExpression;   DATA_OBJECT theArgument;   int pos = 1;   /*===================================================*/   /* Loop through each of the arguments multiplying it */   /* by a running product. If a floating point number  */   /* is encountered, then do all subsequent operations */   /* using floating point values.                      */   /*===================================================*/   theExpression = GetFirstArgument();   while (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"*",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (useFloatTotal)        { ftotal *= ValueToDouble(theArgument.value); }      else        {         if (theArgument.type == INTEGER)           { ltotal *= ValueToLong(theArgument.value); }         else           {            ftotal = (double) ltotal * ValueToDouble(theArgument.value);            useFloatTotal = TRUE;           }        }      pos++;     }   /*======================================================*/   /* If a floating point number was in the argument list, */   /* then return a float, otherwise return an integer.    */   /*======================================================*/   if (useFloatTotal)     {      returnValue->type = FLOAT;      returnValue->value = (void *) EnvAddDouble(theEnv,ftotal);     }   else     {      returnValue->type = INTEGER;      returnValue->value = (void *) EnvAddLong(theEnv,ltotal);     }  }/*************************************//* SubtractionFunction: CLIPS access *//*   routine for the - function.     *//*************************************/globle void SubtractionFunction(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {   double ftotal = 0.0;   long long ltotal = 0LL;   intBool useFloatTotal = FALSE;   EXPRESSION *theExpression;   DATA_OBJECT theArgument;   int pos = 1;   /*=================================================*/   /* Get the first argument. This number which will  */   /* be the starting total from which all subsequent */   /* arguments will subtracted.                      */   /*=================================================*/   theExpression = GetFirstArgument();   if (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"-",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (theArgument.type == INTEGER)        { ltotal = ValueToLong(theArgument.value); }      else        {         ftotal = ValueToDouble(theArgument.value);         useFloatTotal = TRUE;        }      pos++;     }   /*===================================================*/   /* Loop through each of the arguments subtracting it */   /* from a running total. If a floating point number  */   /* is encountered, then do all subsequent operations */   /* using floating point values.                      */   /*===================================================*/   while (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"-",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (useFloatTotal)        { ftotal -= ValueToDouble(theArgument.value); }      else        {         if (theArgument.type == INTEGER)           { ltotal -= ValueToLong(theArgument.value); }         else           {            ftotal = (double) ltotal - ValueToDouble(theArgument.value);            useFloatTotal = TRUE;           }        }      pos++;     }   /*======================================================*/   /* If a floating point number was in the argument list, */   /* then return a float, otherwise return an integer.    */   /*======================================================*/   if (useFloatTotal)     {      returnValue->type = FLOAT;      returnValue->value = (void *) EnvAddDouble(theEnv,ftotal);     }   else     {      returnValue->type = INTEGER;      returnValue->value = (void *) EnvAddLong(theEnv,ltotal);     }  }/***********************************//* DivisionFunction:  CLIPS access *//*   routine for the / function.   *//***********************************/globle void DivisionFunction(  void *theEnv,  DATA_OBJECT_PTR returnValue)  {   double ftotal = 1.0;   long long ltotal = 1LL;   intBool useFloatTotal;   EXPRESSION *theExpression;   DATA_OBJECT theArgument;   int pos = 1;   useFloatTotal = BasicMathFunctionData(theEnv)->AutoFloatDividend;      /*===================================================*/   /* Get the first argument. This number which will be */   /* the starting product from which all subsequent    */   /* arguments will divide. If the auto float dividend */   /* feature is enable, then this number is converted  */   /* to a float if it is an integer.                   */   /*===================================================*/   theExpression = GetFirstArgument();   if (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"/",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (theArgument.type == INTEGER)        { ltotal = ValueToLong(theArgument.value); }      else        {         ftotal = ValueToDouble(theArgument.value);         useFloatTotal = TRUE;        }      pos++;     }   /*====================================================*/   /* Loop through each of the arguments dividing it     */   /* into a running product. If a floating point number */   /* is encountered, then do all subsequent operations  */   /* using floating point values. Each argument is      */   /* checked to prevent a divide by zero error.         */   /*====================================================*/   while (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"/",&theArgument,useFloatTotal,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if ((theArgument.type == INTEGER) ? (ValueToLong(theArgument.value) == 0L) :                                 ((theArgument.type == FLOAT) ? ValueToDouble(theArgument.value) == 0.0 : FALSE))        {         DivideByZeroErrorMessage(theEnv,"/");         SetHaltExecution(theEnv,TRUE);         SetEvaluationError(theEnv,TRUE);         returnValue->type = FLOAT;         returnValue->value = (void *) EnvAddDouble(theEnv,1.0);         return;        }      if (useFloatTotal)        { ftotal /= ValueToDouble(theArgument.value); }      else        {         if (theArgument.type == INTEGER)           { ltotal /= ValueToLong(theArgument.value); }         else           {            ftotal = (double) ltotal / ValueToDouble(theArgument.value);            useFloatTotal = TRUE;           }        }      pos++;     }   /*======================================================*/   /* If a floating point number was in the argument list, */   /* then return a float, otherwise return an integer.    */   /*======================================================*/   if (useFloatTotal)     {      returnValue->type = FLOAT;      returnValue->value = (void *) EnvAddDouble(theEnv,ftotal);     }   else     {      returnValue->type = INTEGER;      returnValue->value = (void *) EnvAddLong(theEnv,ltotal);     }  }/*************************************//* DivFunction: H/L access routine   *//*   for the div function.           *//*************************************/globle long long DivFunction(  void *theEnv)  {   long long total = 1LL;   EXPRESSION *theExpression;   DATA_OBJECT theArgument;   int pos = 1;   long long theNumber;   /*===================================================*/   /* Get the first argument. This number which will be */   /* the starting product from which all subsequent    */   /* arguments will divide.                            */   /*===================================================*/   theExpression = GetFirstArgument();   if (theExpression != NULL)     {      if (! GetNumericArgument(theEnv,theExpression,"div",&theArgument,FALSE,pos)) theExpression = NULL;      else theExpression = GetNextArgument(theExpression);      if (theArgument.type == INTEGER)        { total = ValueToLong(theArgument.value); }      else        { total = (long long) ValueToDouble(theArgument.value); }      pos++;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区5566日韩| av在线不卡电影| 91啪在线观看| 日韩精品影音先锋| 日韩你懂的在线播放| 国产精品久久精品日日| 国产成人精品亚洲777人妖| 欧美一区二区三区思思人 | 成人三级在线视频| 欧美日韩一区二区三区不卡| 国产亚洲精久久久久久| 美女网站色91| 欧美午夜精品一区二区三区| 国产欧美一区二区精品性| 日本网站在线观看一区二区三区| 一本在线高清不卡dvd| 亚洲国产高清不卡| 国内不卡的二区三区中文字幕 | 成人av小说网| 国产精品一区专区| 在线观看国产日韩| 中文字幕欧美区| 六月丁香综合在线视频| 欧美中文字幕一区二区三区| 91在线视频18| 欧美一区二区在线免费播放| 中文字幕不卡在线播放| 蜜臀91精品一区二区三区| 91免费看`日韩一区二区| 欧美一区二区三区在线观看视频| 亚洲国产精品v| 日韩国产欧美一区二区三区| 欧美性欧美巨大黑白大战| 久久精品视频一区二区| 美美哒免费高清在线观看视频一区二区| 99re热视频这里只精品| 国产偷国产偷精品高清尤物| 日韩成人精品视频| 欧美性大战久久久久久久蜜臀| 国产精品欧美久久久久无广告 | 亚洲蜜臀av乱码久久精品蜜桃| 麻豆91在线播放免费| 欧美日韩国产精品自在自线| 亚洲美女淫视频| 不卡的av中国片| 国产精品国产三级国产专播品爱网| 国产一区二区h| 精品人在线二区三区| 午夜精品福利在线| 欧美色图一区二区三区| 一区二区三区不卡视频| 日本伦理一区二区| 亚洲综合色丁香婷婷六月图片| av电影天堂一区二区在线| 日韩午夜激情视频| 精品在线一区二区三区| 日韩午夜在线观看视频| 激情图片小说一区| 久久在线观看免费| 国产原创一区二区| 久久精品亚洲麻豆av一区二区| 国产精品一区二区黑丝 | 丁香五精品蜜臀久久久久99网站| 久久久噜噜噜久噜久久综合| 国产盗摄精品一区二区三区在线 | 亚洲激情欧美激情| 欧美丝袜自拍制服另类| 午夜视频在线观看一区二区三区| 欧美日韩中文字幕一区| 亚洲综合久久久久| 7777精品伊人久久久大香线蕉完整版 | 久久疯狂做爰流白浆xx| 欧洲精品在线观看| 欧美视频日韩视频| 精品国产成人在线影院 | 99国产欧美久久久精品| 亚洲精品第1页| 欧美精品丝袜中出| 久久精品国产澳门| 欧美激情自拍偷拍| 欧美亚洲丝袜传媒另类| 日韩福利视频网| 日本一区二区三区在线观看| 91看片淫黄大片一级| 亚洲午夜精品网| 精品国产凹凸成av人导航| 成人免费高清在线观看| 亚洲一二三区视频在线观看| 日韩精品在线一区二区| 99久久777色| 免费观看在线综合色| 国产精品二三区| 制服.丝袜.亚洲.中文.综合| 精久久久久久久久久久| 中文字幕av一区 二区| 欧美久久久久久久久| 国产精品影音先锋| 亚洲国产精品久久久久秋霞影院 | 午夜激情久久久| 欧美麻豆精品久久久久久| 国产精品一区三区| 久久精品一级爱片| 国产成人8x视频一区二区| 成人黄色小视频| 日韩精品一区二区三区老鸭窝 | 九九九精品视频| 99精品热视频| 久久久久久毛片| 欧美一级在线视频| 一区二区三区精品在线观看| 欧美体内she精高潮| 精品一区二区三区蜜桃| 亚洲精品中文字幕乱码三区| 色综合久久六月婷婷中文字幕| 爽好多水快深点欧美视频| 国产亚洲精品福利| 69堂国产成人免费视频| 成人不卡免费av| 99久久免费视频.com| 日日摸夜夜添夜夜添亚洲女人| 精品成人免费观看| 欧美一级二级在线观看| 丝袜国产日韩另类美女| 国产精品国产三级国产| 久久在线免费观看| 日韩一区二区三区免费观看| 日本电影欧美片| 狠狠色综合色综合网络| 色狠狠综合天天综合综合| 国产白丝精品91爽爽久久| 蜜桃av一区二区三区电影| 亚洲1区2区3区视频| 一区二区三区小说| 中文字幕视频一区二区三区久| 久久久99精品免费观看| 欧美大片在线观看一区| 日韩精品一区二区在线观看| 欧美日本国产视频| 欧美色中文字幕| 欧美欧美午夜aⅴ在线观看| 成人激情开心网| 国产麻豆一精品一av一免费 | 欧美精品aⅴ在线视频| 91麻豆国产在线观看| 色香蕉久久蜜桃| 高清beeg欧美| 国内精品伊人久久久久av影院 | 蜜桃视频在线观看一区二区| 麻豆国产91在线播放| 精品一区二区久久| 国产乱码精品1区2区3区| 国产精品中文有码| av资源站一区| 日本精品一区二区三区高清 | 成人精品免费看| 91丨九色丨蝌蚪丨老版| 精品婷婷伊人一区三区三| 欧美日本乱大交xxxxx| 日韩亚洲欧美一区| 久久亚洲二区三区| 国产精品乱码一区二区三区软件| 国产亚洲制服色| 中文字幕中文乱码欧美一区二区| 国产精品三级av| 天堂va蜜桃一区二区三区 | 色综合天天综合网天天看片| 91麻豆精品在线观看| 欧美日韩视频在线第一区| 日韩精品一区二区三区四区视频 | 久久久久国产精品麻豆| 综合欧美一区二区三区| 亚洲一二三区在线观看| 久久精品国产免费| 99精品视频中文字幕| 欧美色涩在线第一页| 亚洲精品在线电影| 中文字幕一区二区5566日韩| 男女性色大片免费观看一区二区 | 国产成人av影院| 欧美亚洲动漫精品| 久久久久免费观看| 亚洲永久精品大片| 国产精品99久久久久久久vr| 91蜜桃网址入口| 久久久噜噜噜久久人人看 | 色婷婷综合在线| 欧美色视频在线观看| 亚洲国产高清不卡| 日韩国产一二三区| 99久久免费视频.com| 精品国产露脸精彩对白| 亚洲一区二区美女| 成人午夜激情影院| 精品国产乱码久久| 日日夜夜免费精品视频| 91免费看片在线观看| 国产三级久久久| 久草在线在线精品观看| 欧美日韩成人综合天天影院| 亚洲日本欧美天堂|