设为首页收藏本站

ISO/IEC C++ China Unofficial

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 437|回复: 6

测试排版

[复制链接]

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
发表于 2016-1-11 23:02:00 | 显示全部楼层 |阅读模式
水水
#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
 楼主| 发表于 2016-1-11 23:03:38 | 显示全部楼层
本帖最后由 moecmks 于 2016-2-6 18:11 编辑

复制代码
  1. #include "n3_type.h"

  2. /**
  3. * __pu_get_list_base:
  4. * @info: get object list instance
  5. *
  6. * Returns: if fail, arg0 return NULL
  7. */
  8. void_t
  9. __pu_get_list_base (voidpp_t __pp_)
  10. {
  11.     __pp_[0] = dlmalloc (TYPE_SIZE * 2); /* alloc instance */
  12. if (__pp_[0])
  13. {
  14.     TYPE_CAST(intp, __pp_)[0] = 0; /* reset object ptr */
  15.     TYPE_CAST(intp, __pp_)[1] = 0; /* reset next node */
  16. }
  17. }
  18. /**
  19. * __pu_raise_list_:
  20. * @info: insert list
  21. *
  22. * Returns: if fail, return NULL
  23. */
  24. voidp_t
  25. __pu_raise_list_ (voidp_t root,
  26.                   voidp_t obrp,
  27.                   uint32_t size)
  28. {
  29.     /* alloc block, object ptr blank*/
  30.     voidp_t obtp = dlmalloc (size);
  31.     voidp_t blkp = dlmalloc (TYPE_SIZE * 2);
  32.          
  33.     if (!obtp || !blkp) {      
  34.      if (obtp)
  35. dlfree (obtp); /* free */
  36.      if (blkp)
  37. dlfree (blkp); /* free */
  38. return NULL;
  39. }   
  40.     TYPE_CAST(intp, blkp)[0] = TYPE_CAST(int, obtp); /* pick object ptr */
  41.     TYPE_CAST(intp, blkp)[1] = 0; /* reset next node */

  42. while (size--) /* memcpy instance *.*/
  43.    *TYPE_CAST(int8p, obtp)++ = *TYPE_CAST(int8p, obrp)++;

  44.     /* loop-entry */
  45.     for ( TYPE_CAST(int, obrp) = TYPE_CAST(intp, root)[1];
  46.         obrp != NULL; root = obrp,
  47.         obrp = TYPE_CAST(int8pp, obrp)[1] ) {;}
  48.    
  49.     TYPE_CAST(intp, root)[1] = TYPE_CAST(int, blkp); /* insert tail */

  50.     return TYPE_CAST(intp, blkp)[0];
  51. }
  52. /**
  53. * __pu_destroy_list_:
  54. * @info: destroy list
  55. *
  56. * Returns: NONE
  57. */
  58. void_t
  59. __pu_destroy_list_ (voidp_t root)
  60. {
  61.     voidp_t prev = root;
  62.     voidp_t next = TYPE_CAST(uint8pp, prev)[1];
  63.     /* first */
  64.     dlfree (root);

  65. while (1)
  66.     if (!next) return;
  67. else {
  68. dlfree ( TYPE_CAST(uint8pp, next)[0] ); /* release object */
  69.   prev = TYPE_CAST(uint8pp, next)[1]; /* save next node */
  70.                     dlfree (next); /* release block */
  71.                             next = prev; /* thaw node */
  72. }
  73. }
  74. /**
  75. * __pu_stack_push_:
  76. * @info: push into stack
  77. *
  78. * Returns: bool
  79. */
  80. static
  81. bool push (struct pu_stack *stack, voidp_t data)
  82. {
  83. if (stack->vernier >= (stack->numb - 1)) /* out ? */
  84. {      
  85. voidpp_t
  86. temp_ = stack->__alloc__;   
  87.         stack->numb += stack->realloc_numb;
  88.         stack->__alloc__ = dlrealloc (temp_, stack->numb);  
  89.    if (!stack->__alloc__) /* fail ? */
  90.    {  
  91.    dlfree (temp_);
  92.    
  93.    return false;
  94.         }
  95. }   stack->__alloc__[++stack->vernier] = data; /* push data */
  96. return true;
  97. }
  98. /**
  99. * __pu_stack_pull_:
  100. * @info: pull object from stack
  101. *
  102. * Returns: object ptr
  103. */
  104. static
  105. voidp_t pull (struct pu_stack *stack) {
  106. return stack->__alloc__[stack->vernier--];
  107.         }      
  108. /**
  109. * __pu_stack_get_max_:
  110. * @info: same as pull, but no hack stack pointer
  111. *
  112. * Returns: object ptr
  113. */     
  114. static
  115. voidp_t get_max (struct pu_stack *stack) {
  116. return stack->__alloc__[stack->vernier];
  117.         }
  118. /**
  119. * __pu_stack_destroy_:
  120. * @info: destroy stack
  121. *
  122. * Returns: NONE
  123. */         
  124. static
  125. void_t destroy (struct pu_stack *stack) {
  126.    
  127.     dlfree (stack->__alloc__);
  128.             stack->__alloc__ = NULL;
  129.             stack->push = NULL;
  130.             stack->pull = NULL;
  131.             stack->destroy = NULL;
  132.             stack->get_max = NULL;      
  133. }
  134. /**
  135. * __pu_stack_init_:
  136. * @info: stack init
  137. *
  138. * Returns: bool
  139. */
  140. bool
  141. __pu_stack_init_ (struct pu_stack *stack, int numb) {
  142.    
  143.     stack->__alloc__ = dlmalloc (numb);
  144. if(!stack->__alloc__)
  145.     return false;
  146.    
  147.     stack->vernier = 0;
  148.     stack->numb = numb;
  149.     stack->realloc_numb = 32;
  150.     stack->push = push;
  151.     stack->pull = pull;
  152.     stack->destroy = destroy;
  153.     stack->get_max = get_max;
  154.    
  155.     return true;
  156. }
复制代码

#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
 楼主| 发表于 2016-1-11 23:05:01 | 显示全部楼层
本帖最后由 moecmks 于 2016-2-3 20:14 编辑
  1. <font face="Tahoma">#include "tokenStream.h"
  2. #include <stdio.h>

  3. static int
  4. forceinline strlen_0a0d (char *c, uint limit) {
  5.    
  6.     uint n = 0;
  7.    
  8.     while (1) {
  9.         if (n >= limit)
  10.             return -1;
  11.         if (s16p(&c[n])[0] == 0x0A0D)
  12.             return n;
  13.         n++;
  14.     }
  15. }

  16. struct line_attr *get_line_from_token_stream (struct token_stream *token_stream__, int line_numb) {
  17.    
  18.     struct line_attr_list *line_attr_list__ = token_stream__->line_attr_chain->next;
  19.    
  20.     if (line_numb == 0 || line_numb > token_stream__->line_count)
  21.         return NULL;
  22.     while (line_attr_list__->attr->numb != line_numb)
  23.            line_attr_list__ = line_attr_list__->next;
  24.     return line_attr_list__;
  25. }

  26. void release_token_stream_nogc (struct token_stream *token_stream__) {
  27.    
  28.     struct line_attr_list *line_attr_list__ = token_stream__->line_attr_chain->next;
  29.    
  30.     dlfree (token_stream__->content); /* free main token stream *.*/
  31. // dlfree (token_stream__->line_attr_chain); /* free head ..*.*/
  32.    
  33.     while (1)
  34.         if (!line_attr_list__) return;
  35.         else {
  36.             dlfree (line_attr_list__->attr->vernier); /* release vernier */
  37. line_attr_list__ = line_attr_list__->next;
  38.         }   
  39. }
  40. boolean_t init_token_stream (struct token_stream *token_stream__, char *file_name) {

  41.     struct line_attr line_attr__;
  42.     struct line_attr *line_attr_prev__;

  43.     /* try open file */
  44.     FILE *crt_file_handle = fopen (file_name, "rb");
  45.    
  46.     if (crt_file_handle == NULL)
  47.         return FALSE;
  48.    
  49.     /* get list */   
  50.     __get_list_base (&token_stream__->line_attr_chain);
  51.     if (token_stream__->line_attr_chain == NULL)
  52.         goto __final0;
  53.    
  54.     /* get file size */
  55.     if (-1 == fseek (crt_file_handle, 0, SEEK_END))
  56.         goto __final1;
  57.     token_stream__->byte_count = ftell (crt_file_handle);
  58.    
  59.     if (token_stream__->byte_count == 0 || -1 == fseek (crt_file_handle, 0, SEEK_SET))
  60.         goto __final1;
  61.    
  62.     /* alloc memory */
  63.     token_stream__->content = dlmalloc (token_stream__->byte_count + 8);
  64.     if (NULL == token_stream__->content)
  65.         goto __final1;
  66.    
  67.     /* read stream */
  68.     fread (token_stream__->content, token_stream__->byte_count, 1, crt_file_handle);
  69.    
  70.     /* close handle */
  71.     fclose(crt_file_handle);

  72.     line_attr__.vernier = token_stream__->content;
  73.     line_attr__.numb = 1;
  74.     line_attr__.length = strlen_0a0d (line_attr__.vernier, token_stream__->byte_count);
  75.     if (line_attr__.length == -1) {
  76.     /* only one line */
  77.         line_attr__.ntl_attr = LINE_NULL;
  78.         line_attr__.length = token_stream__->byte_count;
  79. __raise_list_ ( token_stream__->line_attr_chain, &line_attr__, sizeof(struct line_attr) );
  80.                 token_stream__->line_count = 1;
  81.         return TRUE;
  82.     } else {
  83.         token_stream__->line_vernier = line_attr__.length + 2;
  84. line_attr_prev__ = __raise_list_ ( token_stream__->line_attr_chain, &line_attr__, sizeof(struct line_attr) );
  85.     }
  86.     while (1) {
  87.          if (token_stream__->content[token_stream__->line_vernier + 0] == 0x0D
  88.          &&  token_stream__->content[token_stream__->line_vernier + 1] == 0x0A) {
  89.          
  90.              line_attr_prev__->ntl_attr = LINE_ENTER;
  91.          } else {
  92.              line_attr_prev__->ntl_attr = LINE_REMAIN;
  93.          }
  94.          line_attr__.numb = line_attr_prev__->numb + 1;
  95.          line_attr__.vernier = &token_stream__->content[token_stream__->line_vernier];
  96.          line_attr__.length = strlen_0a0d (&line_attr__.vernier[0], token_stream__->byte_count - token_stream__->line_vernier);
  97. token_stream__->line_vernier += (line_attr__.length + 2);
  98.          if (line_attr__.length == -1) {
  99.              line_attr__.ntl_attr = LINE_NULL;
  100.              line_attr__.length = token_stream__->byte_count - token_stream__->line_vernier + 1;               
  101. __raise_list_ ( token_stream__->line_attr_chain, &line_attr__, sizeof(struct line_attr) );
  102.                 token_stream__->line_count = line_attr__.numb;
  103.             return TRUE;
  104.          }                                 
  105. line_attr_prev__ = __raise_list_ ( token_stream__->line_attr_chain, &line_attr__, sizeof(struct line_attr) );
  106.     }
  107. __final1:
  108.     __destroy_list_ (token_stream__->line_attr_chain);
  109. __final0:
  110.     fclose (crt_file_handle);
  111.     return FALSE;
  112. }</font>
复制代码

#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

3

主题

74

帖子

283

积分

中级会员

Rank: 3Rank: 3

威望
9
经验
182
贡献
9
 楼主| 发表于 2016-1-11 23:12:38 | 显示全部楼层
本帖最后由 moecmks 于 2016-2-7 22:34 编辑
  1. #define _HEAP_ALLOC_ROUNTINE_ malloc
  2. #define _HEAP_FREE_ROUNTINE_ free
  3. #define __ALLOC_ _HEAP_ALLOC_ROUNTINE_
  4. #define __FREE_ _HEAP_FREE_ROUNTINE_
  5. #define _SIZE1_  (sizeof(int *)*1)
  6. #define _SIZE2_ (sizeof(int *)*2)
  7. #define _BYTE_(x) ((unsigned char)(x))
  8. #define _BYTEP_(x) ((unsigned char *)(x))
  9. #define _BYTEPP_(x) ((unsigned char **)(x))
  10. #define _SIZE_(x) ((unsigned int)(x))
  11. #define _SIZEP_(x) ((unsigned int *)(x))
  12. #define _SIZEPP_(x) ((unsigned int **)(x))
  13. #define _VOIDP_(x) ((void *)(x))
  14. #define _VOIDPP_(x) ((void **)(x))
  15. #define _uint_t unsigned int
  16. #define _void_t void
  17. #define _voidp_t void *
  18. #define _voidpp_t void **
  19. #define _bool_t int
  20. #define true 1
  21. #define false 0
  22. #define NULL ((void *)0)

  23. extern void *malloc (unsigned int size);
  24. extern void free (void *ptr);

  25. // ======================================================
  26. // n3_slist_get_nogc:
  27. // @info: get object slist instance
  28. //
  29. // Returns: if fail, __pp_ = NULL
  30. // ======================================================
  31. _void_t
  32. n3_slist_get_nogc (_voidpp_t __pp_)
  33. {
  34.     __pp_[0] = __ALLOC_ (_SIZE2_); // alloc instance
  35. if (__pp_[0])
  36. {
  37.     _VOIDPP_(__pp_[0])[0] = NULL; // reset object ptr
  38.     _VOIDPP_(__pp_[0])[1] = NULL; // reset next node
  39. }
  40. }
  41. // ======================================================
  42. // n3_slist_insert_head:
  43. // @info: insert list
  44. //
  45. // Returns: if fail, return -1 else return next node
  46. // ======================================================
  47. _voidp_t
  48. n3_slist_insert_head (_voidp_t root,
  49.                       _voidp_t obrp,
  50.                       _uint_t size,
  51.                       _bool_t replace)
  52. {
  53.     if (replace && _VOIDPP_(root)[1])
  54.     {  
  55. while (size--) // copy instance
  56.    *_BYTEP_(_VOIDPP_(_VOIDPP_(root)[1])[0])++ =*_BYTEP_(obrp)++;
  57.     return
  58.     _VOIDPP_(_VOIDPP_(root)[1])[1];
  59.     }
  60.     else
  61.     {
  62. _voidp_t blkp = __ALLOC_ (_SIZE2_ + size);
  63. _voidp_t obtp;
  64.          
  65.    if (!blkp)      
  66.      return -1;

  67.         obtp = &_BYTEP_(blkp)[_SIZE2_];
  68.                 _VOIDPP_(blkp)[0] = _VOIDP_(obtp); // pick object ptr into block
  69.                 _VOIDPP_(blkp)[1] = _VOIDPP_(root)[1]; // link first node
  70.                 _VOIDPP_(root)[1] = _VOIDP_(blkp); // link root->next
  71.                
  72. while (size--) // copy instance
  73.    *_BYTEP_(obtp)++ =*_BYTEP_(obrp)++;
  74.     return
  75.     _VOIDPP_(blkp)[1];
  76.     }   
  77. }
  78. // ======================================================
  79. // n3_slist_insert_tail:
  80. // @info: insert list
  81. //
  82. // Returns: if fail, return -1 else return front node
  83. // ======================================================
  84. _voidp_t
  85. n3_slist_insert_tail (_voidp_t root,
  86.                       _voidp_t obrp,
  87.                       _uint_t size,
  88.                       _bool_t replace)
  89. {
  90.     _voidp_t m0 = NULL; // base
  91.     _voidp_t m1 = root; // middle
  92.     _voidp_t m2 = _VOIDPP_(root)[1];
  93.    
  94.     if (replace && m2)
  95.     {  
  96. while (m2)
  97.   m0 = m1,
  98.        m1 = m2,
  99.        m2 = _VOIDPP_(m2)[1];      
  100. while (size--) // copy instance      
  101.    *_BYTEP_(_VOIDPP_(m1)[0])++ =*_BYTEP_(obrp)++;
  102.     }
  103.     else
  104.     {
  105. _voidp_t blkp = __ALLOC_ (_SIZE2_ + size);
  106. _voidp_t obtp;
  107.          
  108.    if (!blkp)      
  109.      return -1;

  110.         obtp = &_BYTEP_(blkp)[_SIZE2_];
  111.                 _VOIDPP_(blkp)[0] = _VOIDP_(obtp); // pick object ptr into block
  112.                 _VOIDPP_(blkp)[1] = NULL; // null node
  113.                
  114. while (size--) // copy instance
  115.    *_BYTEP_(obtp)++ =*_BYTEP_(obrp)++;
  116. while (m2)
  117.   m0 = m1,
  118.        m1 = m2,
  119.        m2 = _VOIDPP_(m2)[1];
  120.             _VOIDPP_(m1)[1] = blkp;
  121.     }
  122. return m0 == root ? NULL
  123.      : m0;
  124. }
  125. // ======================================================
  126. // n3_slist_insert_node:
  127. // @info: insert list
  128. //
  129. // Returns: if fail, return -1 else return front node
  130. // ======================================================
  131. _voidp_t
  132. n3_slist_insert_node (_voidp_t root,
  133.                       _voidp_t obrp,
  134.                       _uint_t size,
  135.                       _bool_t replace
  136.                       _uint_t pos)
  137. {
  138.     if (+0 == pos) // head
  139.       return n3_slist_insert_head (root, obrp, size, replace);
  140.     if (-1 == pos) // tail
  141.       return n3_slist_insert_tail (root, obrp, size, replace);
  142.   
  143.   
  144.   
  145.   
  146.   
  147.     _voidp_t m0 = NULL; // base
  148.     _voidp_t m1 = root; // middle
  149.     _voidp_t m2 = _VOIDPP_(root)[1];
  150.    
  151.     if (replace && m2)
  152.     {  
  153. while (m2)
  154.   m0 = m1,
  155.        m1 = m2,
  156.        m2 = _VOIDPP_(m2)[1];      
  157. while (size--) // copy instance      
  158.    *_BYTEP_(_VOIDPP_(m1)[0])++ =*_BYTEP_(obrp)++;
  159.     }
  160.     else
  161.     {
  162. _voidp_t blkp = __ALLOC_ (_SIZE2_ + size);
  163. _voidp_t obtp;
  164.          
  165.    if (!blkp)      
  166.      return -1;

  167.         obtp = &_BYTEP_(blkp)[_SIZE2_];
  168.                 _VOIDPP_(blkp)[0] = _VOIDP_(obtp); // pick object ptr into block
  169.                 _VOIDPP_(blkp)[1] = NULL; // null node
  170.                
  171. while (size--) // copy instance
  172.    *_BYTEP_(obtp)++ =*_BYTEP_(obrp)++;
  173. while (m2)
  174.   m0 = m1,
  175.        m1 = m2,
  176.        m2 = _VOIDPP_(m2)[1];
  177.             _VOIDPP_(m1)[1] = blkp;
  178.     }
  179. return m0 == root ? NULL
  180.      : m0;
  181. }
  182. // ======================================================
  183. // n3_slist_remove_head:
  184. // @info: remove head node
  185. //
  186. // Returns: if empty, return -1. else return next node
  187. // ======================================================
  188. _voidp_t
  189. n3_slist_remove_head (_voidp_t root)
  190. {
  191. _voidp_t x0 = root
  192.    = _VOIDPP_(root)[1]; // first
  193.    
  194.    if (!x0) // empty list ?
  195.     return -1;
  196.    
  197.    root = _VOIDPP_(x0)[1]; // second

  198.    __FREE_ (x0); // free object, block
  199. return
  200.    root;
  201. }
  202. // ======================================================
  203. // n3_slist_remove_tail:
  204. // @info: remove tail node
  205. //
  206. // Returns: if empty, return -1. else return final node
  207. // ======================================================
  208. _voidp_t
  209. n3_slist_remove_tail (_voidp_t root)
  210. {
  211.     _voidp_t m0 = root; // base
  212.     _voidp_t m1 = _VOIDPP_(m0)[1]; // middle
  213.     _voidp_t m2 = NULL; // fastest
  214.    
  215.     if (!m1) // empty list ?
  216.         return -1;
  217.    
  218.     // loop-entry
  219.     for ( m2 = _VOIDPP_(m1)[1];
  220.           m2!= NULL; m0 = m1,
  221.                      m1 = m2,
  222.                      m2 = _VOIDPP_(m2)[1] ) {;}
  223.        m2 = m1;
  224.    __FREE_ (m1); // free object and block
  225.    
  226. if (_VOIDPP_(m2)[1]== NULL)
  227. return NULL;
  228.     _VOIDPP_(m0)[1] = NULL;
  229. return
  230.     _VOIDPP_(m0)[0];
  231. }
  232. // ======================================================
  233. // n3_slist_get_count:
  234. // @info: get list's object number
  235. //
  236. // Returns: object number
  237. // ======================================================
  238. _uint_t
  239. n3_slist_get_count (_voidp_t root)
  240. {
  241. _uint_t n;
  242.   for ( n = 0; _VOIDPP_(root)[1] != NULL;
  243.         n+= 1,           
  244.     root  =    _VOIDPP_(root)[1]
  245.   ) {;}
  246. return n;
  247. }
  248. // ======================================================
  249. // n3_slist_get_node:
  250. // @info: get specify number list's object
  251. //
  252. // Returns: if fail, return NULL
  253. // ======================================================
  254. _voidp_t
  255. n3_slist_get_node (_voidp_t root, _uint_t pos)
  256. {
  257. _uint_t n = 0;
  258.   for ( pos += 1;
  259.        (pos && _VOIDPP_(root)[1] != NULL);
  260.         n+= 1,
  261.         pos -= 1,
  262.     root  =    _VOIDPP_(root)[1]
  263.   ) {;}
  264. if (!pos && root)
  265.    return _VOIDPP_(root)[0];
  266. return NULL;
  267. }
  268. // ======================================================
  269. // n3_slist_get_head:
  270. // @info: remove head node
  271. //
  272. // Returns: return first node
  273. // ======================================================
  274. _voidp_t
  275. n3_slist_get_head (_voidp_t root)
  276. {
  277. return
  278.    _VOIDPP_(root)[1];
  279. }
  280. // ======================================================
  281. // n3_slist_get_tail:
  282. // @info: get tail node
  283. //
  284. // Returns: return final node
  285. // ======================================================
  286. _voidp_t
  287. n3_slist_get_tail (_voidp_t root)
  288. {
  289.     _voidp_t m0 = root; // base
  290.     _voidp_t m1 = _VOIDPP_(m0)[1]; // middle
  291.     _voidp_t m2 = NULL; // fastest
  292.    
  293.     if (!m1) // empty list ?
  294.         return NULL;
  295.    
  296.     // loop-entry
  297.     for ( m2 = _VOIDPP_(m1)[1];
  298.           m2!= NULL; m0 = m1,
  299.                      m1 = m2,
  300.                      m2 = _VOIDPP_(m2)[1] ) {;}
  301.    return m1;
  302. }
  303. // ======================================================
  304. // n3_slist_destroy_nogc:
  305. // @info: destroy list
  306. //
  307. // Returns: NONE
  308. // ======================================================
  309. _voidp_t
  310. n3_slist_destroy_nogc (_voidp_t root)
  311. {
  312.     _voidp_t prev = _VOIDP_(root);
  313.     _voidp_t next = _VOIDPP_(root)[1];
  314.     // first
  315.     __FREE_ (root);

  316. while (1)
  317.     if (!next) return;
  318. else {
  319.     prev = _VOIDPP_(next)[1];
  320.            __FREE_ (next); // release block, object ptr
  321.                     next = prev; // thaw node
  322. }
  323. }
  324. #undef _HEAP_ALLOC_ROUNTINE_
  325. #undef _HEAP_FREE_ROUNTINE_  
  326. #undef __ALLOC_
  327. #undef __FREE_
  328. #undef _SIZE1_
  329. #undef _SIZE2_
  330. #undef _BYTE_
  331. #undef _BYTEP_
  332. #undef _BYTEPP_
  333. #undef _SIZE_
  334. #undef _SIZEP_
  335. #undef _SIZEPP_
  336. #undef _VOIDP_
  337. #undef _VOIDPP_
  338. #undef _uint_t
  339. #undef _void_t
  340. #undef _voidp_t
  341. #undef _voidpp_t
  342. #undef _bool_t
  343. #undef true  
  344. #undef false
  345. #undef NULL
复制代码

#if !idppc
/*
** float q_rsqrt( float number )
*/
float Q_rsqrt( float number )
{
        long i;
        float x2
回复 支持 反对

使用道具 举报

10

主题

108

帖子

461

积分

超级版主

RA2DIY 特别行政区行政长官

Rank: 8Rank: 8

威望
4
经验
342
贡献
3
发表于 2016-1-12 01:40:49 这篇帖子是使用手机发表的! | 显示全部楼层
(叉腰)鼠辈,竟敢水经验!
回复 支持 反对

使用道具 举报

8

主题

64

帖子

269

积分

超级版主

Rank: 8Rank: 8

威望
12
经验
169
贡献
12
发表于 2016-1-12 09:14:55 | 显示全部楼层
Z80

点评

对  发表于 2016-1-12 16:29
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ISO/IEC C++ China Unofficial    

GMT+8, 2017-6-27 01:08 , Processed in 0.074999 second(s), 31 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表