Re: [閒聊] 現實世界有哪些原理不明的科技
※ 引述《Gwaewluin (神無月 孝臣)》之銘言:
: x2 = number * 0.5F;
: y = number;
: i = * ( long * ) &y; // evil floating point bit level hacking
: (對邪惡浮點數的位元hack)
: i = 0x5f3759df - ( i >> 1 ); // what the fuck?
: y = * ( float * ) &i;
: y = y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration (第一次迭代)
→
12/10 18:38,
12/10 18:38
OK
一般而言如果要做平方根計算要怎麼辦? 最爛的辦法就是從1開始算
例如121的平方根 就從1平方 2平方 開始算到11之後得到解答
更好一點的算法就是用/2的
先算121/2也就是60的平方
發現太大了就再/2算30依序下去->15->7->11就會得到答案了
計算量從11次變成5次
但是當我們要計算各種大數字的平方根就會浪費更多時間
而上面的神奇數字就能直接把計算量減低許多
開根號是蠻基礎的數學計算 電腦就是各種數字計算
用越高的效率得到平方根 程式的效能就越好
所以這個神奇數字超屌的
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.108.52 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1607597641.A.B96.html
推
12/10 18:58,
3年前
, 1F
12/10 18:58, 1F
你是說根號101這種無理數嗎?如果是/2這種方法就連小數點一起算
50.5->25.25->12.125->6.062->9.093->10.858
看你想算到多精準 電腦本來就沒有辦法完整表示無理數 只能給近似值
※ 編輯: ZooseWu (111.243.108.52 臺灣), 12/10/2020 19:03:51
推
12/10 19:04,
3年前
, 2F
12/10 19:04, 2F
→
12/10 19:07,
3年前
, 3F
12/10 19:07, 3F
→
12/10 19:08,
3年前
, 4F
12/10 19:08, 4F
→
12/10 19:08,
3年前
, 5F
12/10 19:08, 5F
推
12/10 19:09,
3年前
, 6F
12/10 19:09, 6F
推
12/10 19:10,
3年前
, 7F
12/10 19:10, 7F
11的例子不太好 剛好除在中間就是答案 通常都會在答案附近繞
推
12/10 19:12,
3年前
, 8F
12/10 19:12, 8F
不清楚欸 前篇推文有說道是雷神3的引擎
推
12/10 19:14,
3年前
, 9F
12/10 19:14, 9F
→
12/10 19:15,
3年前
, 10F
12/10 19:15, 10F
→
12/10 19:15,
3年前
, 11F
12/10 19:15, 11F
不對 這個魔術數字是給平方根專用的 所以才會是魔術數字
它沒有其他地方可以用 所以沒有太多其他的線索可以找出來
→
12/10 19:17,
3年前
, 12F
12/10 19:17, 12F
以前電腦效能差的時候工程師真的是無所不用其極的在減少電腦負擔
更少的負擔=更多資源可以做更好的效果/遊戲/畫面
還有一個是以前的引擎用簡單的內差法算三角函數近似值 就可以避免效能消耗
→
12/10 19:44,
3年前
, 13F
12/10 19:44, 13F
有機會一窺底層函式庫的時候 都覺得我自己到底在寫什麼狗屎
以前看C語言的STL學習書 真的覺得那些程式實在太精妙了
推
12/12 02:47,
3年前
, 14F
12/12 02:47, 14F
/2也可以 只是常常會忘記
※ 編輯: ZooseWu (111.243.108.52 臺灣), 12/12/2020 04:24:10
討論串 (同標題文章)