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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fixpoint.c

?? [Game.Programming].Academic - Graphics Gems (6 books source code)
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include <math.h>#include "fixpoint.h"/* A non-optimized fixpoint pkg, with some overflow checking. */#define TwosComplement(_x_)  (-(_x_))int fp_verbose;int fp_error = 0;        /* will contain error indicators for fp_multiply */int fp_print_error = 1;  /* if 1, print overflow errors *//* Return the largest (smallest) number representable in this format */fixpoint fp_max() {  return(~OVERFLOWMASK); }fixpoint fp_min() {  return(OVERFLOWMASK); }/* return integer part */int fp_integer(fixpoint x){  fixpoint floor = x >> LOBITS;  fixpoint bits = (x & LOMASK);  if (x < 0) {	 if (!bits) return(floor);	 return(floor+1);  }  else return (floor);}/* return fraction part, in bits */int fp_fraction(fixpoint x){  if (x < 0) return(TwosComplement(x) & LOMASK);  else return(x & LOMASK);}/* return fraction part, as a double */double fp_fraction_double(fixpoint x){  if (x < 0) return(-(TwosComplement(x) & LOMASK) / ((double) (1 << LOBITS)));  else return((x & LOMASK) / ((double) (1 << LOBITS)));}/* in 2s complement, integers have all lower order bits = 0,	and truncating the fraction = floor. */fixpoint fp_floor(fixpoint x){  fixpoint answer = x & HIMASK;  return (answer);}/* The std integer truncating divide does a floor operation,  but for negative numbers it does floor(abs(x/y)), so  we need to case on sign of x to fix that. if x%y has no remainder, then the divide is on an integerOverflow can't happen in fp_floor_div, since x/y <= x for y>=1, whichmust be the case since y is an integer and y>0.*/fixpoint fp_floor_div(fixpoint x, fixpoint y){  fixpoint answer;    if (y == 0) {	 printf("Error: fp_floor_div -- can't divide by 0!\n");	 return(fp_fix(0));  }  else if (y < 0) {	 printf("Sorry, fp_floor_div(a,b) doesn't currently work for b<0.\n");	 return(fp_fix(0));  }  else if (x >= 0) {	 fixpoint tmp = x/y;	 answer = tmp << LOBITS;  }  else {	 fixpoint tmp = ((x/y) + (((x % y) == 0) ? 0 : -1));	 answer = tmp << LOBITS;  }  return (answer);}fixpoint fp_multiply(fixpoint x, fixpoint y){  fixpoint answer;  unsigned int xhi, xlo, yhi, ylo, tmp;  fp_error = 0;  xhi = (x<0) ? -fp_integer(x) : fp_integer(x);  yhi = (y<0) ? -fp_integer(y) : fp_integer(y);  xlo = fp_fraction(x);  ylo = fp_fraction(y);  /* If xhi and yhi are both < 16 bits, this can't have machine overflow	  (overflow of the 32bit int). But it CAN get larger than HIBITS, or	  crush the sign bit, causing overflow of our fixpoint representation.	*/  tmp = (xhi * yhi);  if (tmp & (((int) OVERFLOWMASK) >> LOBITS)) {	 if (fp_print_error)		printf ("ERROR: fp_multiply() xhi*yhi = 0x%08x overflows by 0x%08x\n",				  tmp,				  (tmp & (((int) OVERFLOWMASK) >> LOBITS)));	 fp_error = -1;	 abort();	 return(0);  }  answer = (tmp << LOBITS) +           (xhi * ylo) + (xlo * yhi) +			  (((xlo * ylo) >> LOBITS) & LOMASK);  if (answer & ~(HIMASK | LOMASK)) { 	 if (fp_print_error)		printf ("ERROR: fp_multiply() answer = 0x%08x, overflow 0x%08x\n",				  answer, (answer & ~(HIMASK | LOMASK)));	 fp_error = -2;	 abort();	 return(0);  }  /* Also, it can fill up the high order (sign) bit, which is overflow. */  if (answer & SIGNBIT) {	 if (fp_print_error)		printf ("ERROR: fp_multiply() SIGNBIT overflow for answer = 0x%08x\n",				  answer);	 fp_error = -3;	 return(0);  }  /* "this should never happen" */  if ((xlo >> 16) && (ylo >> 16)) {	 if (fp_print_error)		printf("++++++++++++  ERROR -- OVERFLOW OF LOW BITS**********\n");	 fp_error = -4;	 abort();	 return(0);  }  if (((x<0) && (y>0)) || ((x>0) && (y<0))) answer = -answer;  return(answer);}/* Turn a double into a fixpoint number int two's complement. 	Negative numbers become:  ~a + 1 */fixpoint fp_fix(double x){  int negative = (x < 0);  double i;				/* integer part */  double fraction;	/* fraction part, positive only */  fixpoint p;			/* fixpoint version of abs(x) */  if ((x < fp_integer(fp_min())) || (x >= fp_integer(fp_max())))	 printf("sorry, %g doesn't fit in (%d hi, %d lo) bit fix point.\n",			  x, HIBITS, LOBITS);  x = fabs(x);  i = floor(x);  fraction = x - i;  p = (((int) i) << LOBITS) | ((int) ((x-i)*(1<<LOBITS)));  if (negative) return TwosComplement(p);  else return (p);}/* Print as a binary number */void fp_printb(fixpoint x){  int i;  unsigned int mask;  if (x<0) x = -x;  mask = 1 << (HIBITS + LOBITS - 1); /* start printing hi bit */  for(i=0; i<HIBITS; i++) {	 if (mask & x) putchar('1');	 else          putchar('0');	 mask = mask >> 1;  }  putchar('.');  for(i=0; i<LOBITS; i++) {	 if (mask & x) putchar('1');	 else          putchar('0');	 mask = mask >> 1;  }}/* Print as a hex number, but gets things a bit screwed	up unless HIBITS=LOBITS=16*/void fp_printx(fixpoint x){  printf("%4x.%04x", fp_integer(x) & LOMASK, fp_fraction(x));}double fp_double(fixpoint x){  return(((double) fp_integer(x)) + fp_fraction_double(x));}void fp_print(fixpoint x){  printf("%.11g", fp_double(x));}void printnbits(){  printf("HIBITS = %d, LOBITS = %d, OVERFLOWMASK = 0x%8x, SIGNBIT = 0x%08x\n",			HIBITS, LOBITS, OVERFLOWMASK, SIGNBIT);  printf("HIMASK = 0x%08x, LOMASK = 0x%08x\n", HIMASK, LOMASK);  printf("overflowmask >> lobits = 0x%08x\n", ((int) OVERFLOWMASK) >> LOBITS);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91对白在线观看九色| 欧美视频在线观看一区二区| 99re6这里只有精品视频在线观看| 欧美在线你懂得| 久久亚洲综合色| 日韩电影免费在线观看网站| www.成人网.com| 2020国产精品自拍| 午夜久久久久久| 99久久久久久| 久久久久久影视| 久久成人免费网| 欧美日韩国产美女| 亚洲精品日日夜夜| 成人avav影音| 国产色婷婷亚洲99精品小说| 石原莉奈在线亚洲二区| 91精彩视频在线| 亚洲欧美日本韩国| 色综合中文字幕国产 | 夜夜嗨av一区二区三区四季av | 国产校园另类小说区| 午夜精品久久久久久久久久久| 99视频有精品| 亚洲私人黄色宅男| 成人小视频免费在线观看| 2020国产精品自拍| 国产精品99久久不卡二区| 精品国产乱码久久久久久图片| 奇米综合一区二区三区精品视频| 欧美日韩你懂的| 亚洲成a人片综合在线| 欧美在线视频你懂得| 艳妇臀荡乳欲伦亚洲一区| 色欧美日韩亚洲| 亚洲一二三区不卡| 欧美群妇大交群中文字幕| 日韩不卡一区二区三区| 欧美大片拔萝卜| 国产精品系列在线播放| 日本一区二区不卡视频| 色综合久久综合| 亚洲第一会所有码转帖| 日韩午夜在线观看视频| 国产精品1区2区3区| 国产精品第一页第二页第三页| 91麻豆免费视频| 性做久久久久久免费观看| 91精品国产综合久久香蕉麻豆| 老司机免费视频一区二区| 国产亚洲一区二区三区四区 | 91福利小视频| 日韩精品国产欧美| 久久婷婷久久一区二区三区| 东方aⅴ免费观看久久av| 一区二区三区在线看| 91精品国产欧美一区二区18| 国产主播一区二区| 亚洲日本中文字幕区| 777精品伊人久久久久大香线蕉| 九九在线精品视频| 亚洲欧美一区二区三区久本道91| 欧美浪妇xxxx高跟鞋交| 国产九色精品成人porny| 亚洲色欲色欲www| 日韩欧美国产电影| 99精品久久久久久| 免费高清在线视频一区·| 国产精品久久国产精麻豆99网站 | 久久亚洲一区二区三区四区| 成人国产视频在线观看| 亚洲大片在线观看| 久久久九九九九| 欧美日韩视频不卡| av电影天堂一区二区在线观看| 亚洲国产乱码最新视频 | 欧美videofree性高清杂交| 波多野结衣中文字幕一区| 奇米影视在线99精品| 亚洲男人天堂av| 国产欧美日韩视频在线观看| 欧美人体做爰大胆视频| 91丝袜高跟美女视频| 激情成人综合网| 免费高清在线视频一区·| 一区二区三区四区蜜桃| 国产清纯在线一区二区www| 3d成人h动漫网站入口| 色婷婷久久久亚洲一区二区三区 | 欧美bbbbb| 亚洲激情在线激情| 国产精品第四页| 日本一区二区免费在线 | 国产精品乱码久久久久久| 日韩欧美一级精品久久| 欧美唯美清纯偷拍| 91色porny在线视频| 国产乱码精品1区2区3区| 蜜臀av亚洲一区中文字幕| 五月天精品一区二区三区| 一区二区视频免费在线观看| 国产精品久久久久影院老司| 国产午夜精品理论片a级大结局 | 欧美在线播放高清精品| 99久久综合狠狠综合久久| 国产东北露脸精品视频| 国产美女一区二区| 久久se精品一区精品二区| 日本成人超碰在线观看| 日韩福利视频导航| 老司机午夜精品| 国产原创一区二区| 国产成人精品一区二| 国产精品自拍三区| 成人精品免费看| a亚洲天堂av| 色先锋资源久久综合| 色综合久久中文字幕综合网| 色婷婷狠狠综合| 在线免费亚洲电影| 欧美日韩国产高清一区二区| 欧美日韩一级视频| 欧美一级日韩一级| 26uuu精品一区二区在线观看| 久久亚洲捆绑美女| 国产精品久久久久影院老司| 亚洲精品乱码久久久久久久久| 亚洲影院理伦片| 青椒成人免费视频| 国产成人久久精品77777最新版本| 粉嫩一区二区三区在线看| 91黄视频在线| 欧美欧美欧美欧美| 久久综合丝袜日本网| 中文字幕亚洲综合久久菠萝蜜| 最新国产精品久久精品| 亚洲国产一区在线观看| 久久精品99国产精品| 不卡一卡二卡三乱码免费网站| 在线亚洲+欧美+日本专区| 日韩视频一区二区三区在线播放| 久久久影院官网| 亚洲愉拍自拍另类高清精品| 久久99精品久久久久婷婷| 成人黄色在线看| 555www色欧美视频| 国产精品人成在线观看免费 | 欧美午夜在线观看| 精品88久久久久88久久久| 亚洲国产精品久久久久秋霞影院| 亚洲午夜免费视频| 国产伦精一区二区三区| 日本韩国欧美国产| 精品久久五月天| 亚洲精品乱码久久久久久日本蜜臀| 日韩综合小视频| 不卡一卡二卡三乱码免费网站| 欧美乱熟臀69xxxxxx| 久久婷婷国产综合国色天香 | 欧美色电影在线| 精品盗摄一区二区三区| 一区二区三区欧美日韩| 国产一区不卡视频| 欧美精品 日韩| 最新国产成人在线观看| 伦理电影国产精品| 欧美在线观看一区二区| 日本一二三不卡| 美女网站色91| 欧美日韩在线不卡| 成人欧美一区二区三区白人| 极品少妇一区二区| 欧美精品第一页| 最近日韩中文字幕| 国产91富婆露脸刺激对白| 欧美电影精品一区二区| 婷婷综合五月天| 在线视频一区二区免费| 综合色中文字幕| 大尺度一区二区| 日本一区二区视频在线| 黄色成人免费在线| 日韩一区二区在线看| 亚洲午夜精品17c| 91久久人澡人人添人人爽欧美| 国产精品你懂的在线欣赏| 韩国欧美一区二区| 日韩精品一区二区三区视频在线观看 | 精品国产免费一区二区三区香蕉 | 亚洲免费看黄网站| 国产91色综合久久免费分享| 2017欧美狠狠色| 国产伦精品一区二区三区免费迷 | 久久蜜桃一区二区| 九九国产精品视频| 欧美videos大乳护士334| 狠狠色狠狠色综合| 国产日韩欧美不卡在线| 国产成人在线色| 国产精品午夜春色av|