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