3倍根号x加1分之一c语言,用C语言将一个数开根号后再取倒数的方法
在上學的時候,曾經看過有人寫過這樣的算法,就是將一個數開根號后再取倒數的算法,我本人也覺得十分巧妙,于是就將它積累了下來,讓我們來看看是怎么回事:
#include
#include
float mysqrt(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(void)
{
float x = 2.5 ;
float ret = mysqrt(x);
printf("%f\n",ret);
return 0 ;
}
它的作用是將一個數開平方并取倒,經測試這段代碼比(float)(1.0/sqrt(x))快4倍
算法的原理其實不復雜,就是牛頓迭代法,用x-f(x)/f'(x)來不斷的逼近f(x)=a的根。
簡單來說比如求平方根,f(x)=x^2=a ,f'(x)= 2*x,f(x)/f'(x)=x/2,把f(x)代入x-f(x)/f'(x)后有(x+a/x)/2,現在我們選a=5,選一個猜測值比如2,那么我們可以這么算
5/2 = 2.5;
(2.5+2)/2 = 2.25;
5/2.25 = xxx;
(2.25+xxx)/2 = xxxx
...
運行結果:
后端model傳入前端JSP頁面中的值判斷后再取值
所遇到的問題后端model傳入前端JSP頁面中的值通過foreach循環內要滿足條件才能取值給Div中,我們知道jsp頁面中可以直接用EL表達式取值,格式就是${"model中傳來的數據&q ...
[leetcode] 題型整理之數字加減乘除乘方開根號組合數計算取余
需要注意overflow,特別是Integer.MIN_VALUE這個數字. 需要掌握二分法. 不用除法的除法,分而治之的乘方 2. Add Two Numbers You are given two ...
vue在一個方法執行完后再執行另一個方法
vue在一個方法執行完后執行另一個方法 用Promise來實現.Promise是ES6的新特性,用于處理異步操作邏輯,用過給Promise添加then和catch函數,處理成功和失敗的情況 ES7中新 ...
JAVA設計方法思考之如何實現一個方法執行完畢后自動執行下一個方法
今天編程時,突然想起來在一些異步操作或Android原生庫的時候,需要我們實現一些方法, 這些方法只需要我們具體實現,然后他們會在適當的時候,自動被調用! 例如AsyncTask,執行玩doInBac ...
程序員之---C語言細節20(符號和有符號之間轉換、兩數相加溢出后數值計算)
主要內容:無符號和有符號之間轉換.兩數相加溢出后數值計算 #include /* 這個函數存在潛在漏洞 */ float sum_elements(float a[], ...
【C語言】編寫函數,將一個數的指定位置置0或置1
//編寫函數,將一個數的指定位置置0或置1 #include unsigned int set_bit(unsigned int num, int pos, int f ...
hdu 4027 Can you answer these queries? 線段樹區間開根號,區間求和
Can you answer these queries? Time Limit: 1 Sec??Memory Limit: 256 MB 題目連接 http://acm.hdu.edu.cn/sho ...
HDU 5828 Rikka with Sequence(線段樹 開根號)
Rikka with Sequence Time Limit: 6000/3000 MS (Java/Others)????Memory Limit: 65536/65536 K (Java/Othe ...
luogu P4145 上帝造題的七分鐘2 / 花神游歷各國 維護區間和&;&;區間開根號
因為開根號能使數字減小得非常快 所以開不了幾次(6次?)很大的數就會變成1..... 所以我們可以維護區間最大值,若最大值>1,則繼續遞歸子樹,暴力修改葉節點,否則直接return (好像也可以 ...
隨機推薦
mrjob 使用 mongodb 作為數據源
When using a mongoDB collection as input, add the arguments?-jobconf mongo.input.uri=
Find Minimum in Rotated Sorted Array問題的困惑
今天做了兩題,第二題沒解出來,發現太麻煩了,放棄了……明天腦子清楚的時候再做. 第一題就是標題中的這個問題.在一個旋轉排序數組中找出最小的值. 針對該問題出了兩道不同要求的題目,分別是不考慮重復元素的 ...
xcode6下使用autolayout+sizeclass實踐
歷史車輪滾滾向前,將autolayout配合sizeclass做布局的方式推上了主流,雖然有點晚,但最終還是進行了一次完整的實踐,特此記錄一下: 因為網上已經有很多博客介紹了autolayout配合s ...
移動Web開發小技巧
移動Web開發小技巧 添加到主屏后的標題(IOS) name="apple-mobile-web-app-title"?content="標題"> 啟用? ...
Android 檢測是否連接藍牙耳機
前言 ?????????歡迎大家我分享和推薦好用的代碼段~~ 聲明 ?????????歡迎轉載,但請保留文章原始出處: ?????????CSDN:http://www.csdn.net ?????? ...
javascript DOM對象(2)
訪問兄弟節點 1.?nextSibling 屬性可返回某個節點之后緊跟的節點(處于同一樹層級中). 語法: nodeObject.nextSibling 說明:如果無此節點,則該屬性返回 null. ...
【LeetCode每天一題】Add Two Numbers(兩鏈表相加)
You are given two?non-empty?linked lists representing two non-negative integers. The digits are stor ...
js代碼上的優化
例1??if ( config.url === '/web/teacher/classes'? || config.url === '/web/teacher/students || config.u ...
服務器FTP配置
一.如果沒有安裝FTP服務器,安裝如下: 二.添加SSL證書 三.給證書起一個有意義的名字就可以了 四.FTP ?SSL設置 五.FTP 身份驗證: 進入-如果開啟自己需要的-我這里是需要用戶輸入密碼 ...
總結
以上是生活随笔為你收集整理的3倍根号x加1分之一c语言,用C语言将一个数开根号后再取倒数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: stm32与micropython_在N
- 下一篇: Linux学习之后台运行进程