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

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

?? poly_atan.c

?? 內(nèi)核是系統(tǒng)的心臟
?? C
字號:
/*---------------------------------------------------------------------------+
 |  p_atan.c                                                                 |
 |                                                                           |
 | Compute the tan of a FPU_REG, using a polynomial approximation.           |
 |                                                                           |
 | Copyright (C) 1992,1993                                                   |
 |                       W. Metzenthen, 22 Parker St, Ormond, Vic 3163,      |
 |                       Australia.  E-mail   billm@vaxc.cc.monash.edu.au    |
 |                                                                           |
 |                                                                           |
 +---------------------------------------------------------------------------*/

#include "exception.h"
#include "reg_constant.h"
#include "fpu_emu.h"
#include "control_w.h"


#define	HIPOWERon	6	/* odd poly, negative terms */
static unsigned const oddnegterms[HIPOWERon][2] =
{
  { 0x00000000, 0x00000000 }, /* for + 1.0 */
  { 0x763b6f3d, 0x1adc4428 },
  { 0x20f0630b, 0x0502909d },
  { 0x4e825578, 0x0198ce38 },
  { 0x22b7cb87, 0x008da6e3 },
  { 0x9b30ca03, 0x00239c79 }
} ;

#define	HIPOWERop	6	/* odd poly, positive terms */
static unsigned const	oddplterms[HIPOWERop][2] =
{
  { 0xa6f67cb8, 0x94d910bd },
  { 0xa02ffab4, 0x0a43cb45 },
  { 0x04265e6b, 0x02bf5655 },
  { 0x0a728914, 0x00f280f7 },
  { 0x6d640e01, 0x004d6556 },
  { 0xf1dd2dbf, 0x000a530a }
};

static unsigned long long const denomterm = 0xea2e6612fc4bd208LL;


/*--- poly_atan() -----------------------------------------------------------+
 |                                                                           |
 +---------------------------------------------------------------------------*/
void	poly_atan(FPU_REG *arg)
{
  char		recursions = 0;
  short		exponent;
  FPU_REG       odd_poly, even_poly, pos_poly, neg_poly, ratio;
  FPU_REG       argSq;
  unsigned long long     arg_signif, argSqSq;
  

#ifdef PARANOID
  if ( arg->sign != 0 )	/* Can't hack a number < 0.0 */
    { arith_invalid(arg); return; }  /* Need a positive number */
#endif PARANOID

  exponent = arg->exp - EXP_BIAS;
  
  if ( arg->tag == TW_Zero )
    {
      /* Return 0.0 */
      reg_move(&CONST_Z, arg);
      return;
    }
  
  if ( exponent >= -2 )
    {
      /* argument is in the range  [0.25 .. 1.0] */
      if ( exponent >= 0 )
	{
#ifdef PARANOID
	  if ( (exponent == 0) && 
	      (arg->sigl == 0) && (arg->sigh == 0x80000000) )
#endif PARANOID
	    {
	      reg_move(&CONST_PI4, arg);
	      return;
	    }
#ifdef PARANOID
	  EXCEPTION(EX_INTERNAL|0x104);	/* There must be a logic error */
	  return;
#endif PARANOID
	}

      /* If the argument is greater than sqrt(2)-1 (=0.414213562...) */
      /* convert the argument by an identity for atan */
      if ( (exponent >= -1) || (arg->sigh > 0xd413ccd0) )
	{
	  FPU_REG numerator, denom;

	  recursions++;

	  arg_signif = significand(arg);
	  if ( exponent < -1 )
	    {
	      if ( shrx(&arg_signif, -1-exponent) >= 0x80000000U )
		arg_signif++;	/* round up */
	    }
	  significand(&numerator) = -arg_signif;
	  numerator.exp = EXP_BIAS - 1;
	  normalize(&numerator);                       /* 1 - arg */

	  arg_signif = significand(arg);
	  if ( shrx(&arg_signif, -exponent) >= 0x80000000U )
	    arg_signif++;	/* round up */
	  significand(&denom) = arg_signif;
	  denom.sigh |= 0x80000000;                    /* 1 + arg */

	  arg->exp = numerator.exp;
	  reg_u_div(&numerator, &denom, arg, FULL_PRECISION);

	  exponent = arg->exp - EXP_BIAS;
	}
    }

  arg_signif = significand(arg);

#ifdef PARANOID
  /* This must always be true */
  if ( exponent >= -1 )
    {
      EXCEPTION(EX_INTERNAL|0x120);	/* There must be a logic error */
    }
#endif PARANOID

  /* shift the argument right by the required places */
  if ( shrx(&arg_signif, -1-exponent) >= 0x80000000U )
    arg_signif++;	/* round up */
  
  /* Now have arg_signif with binary point at the left
     .1xxxxxxxx */
  mul64(&arg_signif, &arg_signif, &significand(&argSq));
  mul64(&significand(&argSq), &significand(&argSq), &argSqSq);

  /* will be a valid positive nr with expon = 0 */
  *(short *)&(pos_poly.sign) = 0;
  pos_poly.exp = EXP_BIAS;

  /* Do the basic fixed point polynomial evaluation */
  polynomial(&pos_poly.sigl, (unsigned *)&argSqSq,
	     (unsigned short (*)[4])oddplterms, HIPOWERop-1);
  mul64(&significand(&argSq), &significand(&pos_poly),
	&significand(&pos_poly));

  /* will be a valid positive nr with expon = 0 */
  *(short *)&(neg_poly.sign) = 0;
  neg_poly.exp = EXP_BIAS;

  /* Do the basic fixed point polynomial evaluation */
  polynomial(&neg_poly.sigl, (unsigned *)&argSqSq,
	     (unsigned short (*)[4])oddnegterms, HIPOWERon-1);

  /* Subtract the mantissas */
  significand(&pos_poly) -= significand(&neg_poly);

  reg_move(&pos_poly, &odd_poly);
  poly_add_1(&odd_poly);

  /* will be a valid positive nr with expon = 0 */
  *(short *)&(even_poly.sign) = 0;

  mul64(&significand(&argSq), &denomterm, &significand(&even_poly));

  poly_add_1(&even_poly);

  reg_div(&odd_poly, &even_poly, &ratio, FULL_PRECISION);

  reg_u_mul(&ratio, arg, arg, FULL_PRECISION);

  if ( recursions )
    reg_sub(&CONST_PI4, arg, arg, FULL_PRECISION);

}


/* The argument to this function must be polynomial() compatible,
   i.e. have an exponent (not checked) of EXP_BIAS-1 but need not
   be normalized.
   This function adds 1.0 to the (assumed positive) argument. */
void poly_add_1(FPU_REG *src)
{
/* Rounding in a consistent direction produces better results
   for the use of this function in poly_atan. Simple truncation
   is used here instead of round-to-nearest. */

#ifdef OBSOLETE
char round = (src->sigl & 3) == 3;
#endif OBSOLETE

shrx(&src->sigl, 1);

#ifdef OBSOLETE
if ( round ) significand(src)++;   /* Round to even */
#endif OBSOLETE

src->sigh |= 0x80000000;

src->exp = EXP_BIAS;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲色图20p| 色天使色偷偷av一区二区| 国产精品1024| 色哟哟一区二区| 久久美女艺术照精彩视频福利播放 | 成人avav影音| 91精品国产综合久久久久久久久久| 久久久亚洲精华液精华液精华液| 亚洲成人av福利| 成人国产免费视频| 久久女同性恋中文字幕| 亚洲一区二区三区影院| 懂色av一区二区三区免费看| 日韩写真欧美这视频| 一区二区免费看| 成人激情视频网站| 亚洲男人的天堂在线观看| 奇米精品一区二区三区在线观看| 色呦呦一区二区三区| 国产欧美视频一区二区三区| 狠狠网亚洲精品| 日韩一区二区三| 免费在线一区观看| 7777精品伊人久久久大香线蕉| 亚洲视频你懂的| 成人久久18免费网站麻豆| 精品欧美一区二区在线观看| 天天色综合天天| 4438亚洲最大| 午夜精品aaa| 欧美一级在线观看| 美国三级日本三级久久99| 欧美一卡二卡三卡| 久久成人18免费观看| 欧美视频在线播放| 天堂在线亚洲视频| 91精品国产综合久久久久久漫画| 日韩av电影天堂| 日韩女优av电影| 国产精品88888| 国产日本亚洲高清| 成人国产在线观看| 一区二区三区四区视频精品免费| 色综合视频一区二区三区高清| 亚洲日本一区二区| 欧美亚洲国产一卡| 青青草97国产精品免费观看无弹窗版| 9191久久久久久久久久久| 日韩黄色一级片| 久久只精品国产| 99精品欧美一区二区三区小说| 亚洲精品高清在线观看| 欧美肥妇free| 国产麻豆精品95视频| 国产精品视频看| 日本道色综合久久| 五月婷婷色综合| 精品久久久久久最新网址| 国产精品一级片| 亚洲欧美一区二区三区国产精品| 欧美日韩国产一级片| 国产自产视频一区二区三区| 亚洲欧洲精品成人久久奇米网| 在线观看日韩一区| 国内精品嫩模私拍在线| 亚洲欧洲在线观看av| 欧美久久高跟鞋激| 成人美女视频在线观看18| 亚洲无人区一区| 久久久久久久一区| 欧美视频完全免费看| 国内久久婷婷综合| 亚洲电影一区二区三区| 久久综合久久99| 欧美做爰猛烈大尺度电影无法无天| 蜜臀久久99精品久久久画质超高清| 国产日韩高清在线| 欧美一区二区三区四区五区| 国产成人av一区| 无吗不卡中文字幕| 国产精品第五页| 欧美电影免费观看高清完整版在| 色先锋久久av资源部| 久久国产夜色精品鲁鲁99| 亚洲人成在线播放网站岛国| 日韩三级高清在线| 欧美在线制服丝袜| 国产高清精品网站| 老司机精品视频线观看86| 一区二区三区精品在线| 亚洲国产成人在线| 91麻豆精品国产91| 色网综合在线观看| thepron国产精品| 国产美女精品人人做人人爽| 亚洲福利电影网| 一级中文字幕一区二区| 欧美国产1区2区| 欧美v国产在线一区二区三区| 91一区一区三区| 高清shemale亚洲人妖| 日本人妖一区二区| 香蕉乱码成人久久天堂爱免费| 亚洲人被黑人高潮完整版| 精品国产免费人成电影在线观看四季 | 美国十次综合导航| 石原莉奈在线亚洲二区| 亚洲一区二区在线观看视频| 国产精品毛片久久久久久久| 久久网这里都是精品| 亚洲精品一区二区三区在线观看| 日韩午夜激情视频| 欧美精品在线视频| 91麻豆精品国产91久久久资源速度| 欧美日韩高清影院| 欧美性受极品xxxx喷水| 在线免费av一区| 欧美日韩日本视频| 欧美日韩一区二区在线观看视频 | 美日韩一区二区三区| 午夜电影网亚洲视频| 午夜精品久久久久久久久| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区四区亚洲| 亚洲一区二区偷拍精品| 亚洲成a人片在线观看中文| 亚洲高清视频在线| 日本午夜精品一区二区三区电影| 亚洲高清免费观看高清完整版在线观看| 亚洲国产日韩一级| 免费看黄色91| 国产一区二区久久| 成人h精品动漫一区二区三区| 99re视频精品| 欧美久久久久久蜜桃| 精品久久久三级丝袜| 国产精品国产三级国产普通话蜜臀 | 成人的网站免费观看| 99久久久免费精品国产一区二区| 99久久er热在这里只有精品15| 欧美中文字幕亚洲一区二区va在线| 777亚洲妇女| 国产亚洲一区字幕| 亚洲精品中文在线观看| 污片在线观看一区二区| 国产自产v一区二区三区c| 91美女福利视频| 91精品国产福利在线观看| 久久精品欧美日韩| 亚洲综合久久av| 国产乱码精品一区二区三区忘忧草| 成人av午夜影院| 日韩三级免费观看| 中文字幕在线观看不卡视频| 依依成人精品视频| 国产精品一区二区久久不卡| 色婷婷久久一区二区三区麻豆| 制服丝袜亚洲播放| 亚洲欧美自拍偷拍| 久久国产综合精品| 在线视频一区二区三区| 精品国产一区二区三区四区四| 中国av一区二区三区| 日日夜夜免费精品| 国产精品自产自拍| 欧美三级乱人伦电影| 国产日产精品一区| 久久精品久久精品| 色婷婷激情一区二区三区| 日韩一本二本av| 亚洲精品久久7777| 成人网在线播放| 欧美成人性战久久| 亚洲欧洲综合另类| 国产精品一区二区久久不卡| 欧美日韩另类一区| 精品国产乱码久久久久久牛牛 | av一区二区三区黑人| 777xxx欧美| 亚洲精品乱码久久久久久日本蜜臀| 极品瑜伽女神91| 91精品国产麻豆| 亚洲观看高清完整版在线观看| 不卡的av网站| 日本一区免费视频| 韩日av一区二区| 日韩亚洲欧美成人一区| 视频在线观看一区| 欧美在线色视频| 一区二区三区四区国产精品| 粉嫩av一区二区三区在线播放| 精品剧情v国产在线观看在线| 热久久一区二区| 日韩一区二区三区视频在线| 午夜激情综合网| 欧美一级艳片视频免费观看| 天天操天天综合网| 欧美视频日韩视频在线观看| 亚洲最大成人网4388xx| 91国在线观看|