多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 一種快速開平方并取倒數算法

一種快速開平方并取倒數算法

來源:程序員人生   發布時間:2014-11-15 06:44:43 閱讀次數:2643次
       今天在查資料進程中,無意中看到這樣1段奇異的代碼,決定轉載到自己的csdn博客,但是找了半天,愣是沒找到csdn轉載功能,此前常常看到他人轉載文章,然后心里1直在想,是否是轉載是1個隱藏功能,或使用甚么命令就能夠了。因而特地谷歌了下,原來csdn的轉載功能,根本沒有甚么快速轉載、1鍵轉載,只有對著原文復制、粘貼,然后在自己的博客里面重新排版,最后在發布文章時選擇轉載,這樣該文章就成為1篇轉摘的文章了。這么設計也有道理,只有不嫌麻煩的人,才會耐心的完成轉載,算是提高了轉載的門坎,避免出現大量重復文章。不過,這么設計的副作用就是,浪費了很多時間和精力。吐槽就到這里,還是看看這段奇異的快速開平方并取倒數代碼:
float InvSqrt(float x ) { float xhalf = 0.5f * x; int i = *( int *)& x; i = 0x5f3759df - ( i>>1); x = *( float *)& i; x = x * (1.5f - xhalf * x * x); return x; }
關于該段代碼的更多說明,請參看這篇文章《0x5f3759df的數學原理》。
       下面為我編寫的簡單測試代碼:
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <math.h> // 開平方取倒數 float InvSqrt(float x ) { float xhalf = 0.5f * x; int i = *( int *)& x; i = 0x5f3759df - ( i>>1); x = *( float *)& i; x = x * (1.5f - xhalf * x * x); return x; } int main() { // 比較精度 float val = 0.0f; val = 1.0f; printf("計算精度比較: "); printf("輸入值: %f 快速算法: %f VC函數: %f ", val, InvSqrt(val), 1.0f / sqrt(val)); val = 16.0f; printf("輸入值: %f 快速算法: %f VC函數: %f ", val, InvSqrt(val), 1.0f / sqrt(val)); val = 25.0f; printf("輸入值: %f 快速算法: %f VC函數: %f ", val, InvSqrt(val), 1.0f / sqrt(val)); val = 100.0f; printf("輸入值: %f 快速算法: %f VC函數: %f ", val, InvSqrt(val), 1.0f / sqrt(val)); printf(" 計算性能比較: "); int count = 1000000; DWORD timeStart = 0, timeEnd = 0; timeStart = GetTickCount(); for (int i = 0; i < count; i++) { val = InvSqrt(100.0f); } timeEnd = GetTickCount(); printf("快速算法耗時: %f ", (timeEnd - timeStart) * 0.001); timeStart = GetTickCount(); for (int i = 0; i < count; i++) { val = 1.0f / sqrt(100.0f); } timeEnd = GetTickCount(); printf("VC函數耗時: %f ", (timeEnd - timeStart) * 0.001); printf(" "); system("pause"); return 0; }
       這里與sqrt()分別比較了計算精度及計算性能,測試環境為vs2005,普通pc筆記本(實際上是1臺年久的、玩的了游戲、寫得了代碼的小黑)。從對照結果看,該快速算法在計算結果上有1點點誤差,但是計算性能上很可觀。下圖為對照結果:

                               



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品无码久久久久久久动漫 | 日本高清一区二区三区不卡免费 | 中文字幕第一页在线播放 | 美xxxx| 国产精品一区二区久久 | 欧美xxxx极品流血 | 国产午夜精品不卡观看 | 亚洲成年人在线 | 亚洲色图吧 | 久久五月网 | 久久久久久久亚洲精品一区 | 日本janpanese护士| 亚洲欧洲国产综合 | 欧美成人精品福利在线视频 | 日韩欧美三区 | 美国毛片亚洲社区在线观看 | 欧美日韩综合网 | www.中文字幕在线观看 | 99精品国产一区二区三区 | 高清一级做a爱过程免费视频 | 久草在线免费福利资源 | 国产成人资源 | 中文国产成人精品久久久 | 欧美h视频在线观看 | 日韩爱爱 | 国产欧美另类性视频 | 波多野结衣手机在线视频 | 欧美video粗暴高清免费 | 国产精品久久久精品三级 | 国产v精品成人免费视频71sao | 欧美日韩国产另类一区二区三区 | 一区二区三区四区视频 | 日本一二区视频 | 亚洲福利 | 国产国语一级毛片全部 | 亚洲欧美国产精品专区久久 | 又粗又大又黄又爽的免费视频 | 日本在线观看不卡免费视频 | h视频在线播放 | 中文字幕精品一区二区三区视频 | 免费网站在线看 |