#include

#include

#include

#include

/**

*

* @brief 牛顿迭代法求解

* @param [in]要开方的数

* @return 开方后的结果

*

*/

double sqrt_1(double dNum)

{

double dVal, dLastVal;

assert(dNum > 1e-12);

dVal = 1.0;

do {

dLastVal = dVal;

dVal = (dLastVal + dNum / dLastVal) / 2.0;

} while (dVal != dLastVal);

return dVal;

}

/**

*

* @brief 暴力

* @param [in]要开方的数

* @return 开方后的结果

*

*/

double sqrt_2(double dNum)

{

double i;

assert(dNum > 1e-12);

for (i = 0.0; fabs(i * i - dNum) >= 1e-4; i += 1e-6) ;

return i;

}

/**

*

* @brief 雷神之锤中底层代码

* @param [in]要开方的数

* @return 开方后的结果

*

*/

double sqrt_3(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 1.0 / (double)x;

}

/**

*

* @brief 二分法找到合适解

* @param [in]要开方的数

* @return 开方后的结果

*

*/

double sqrt_4(double x)

{

double l = 0.0;

double r = x;

double m;

assert(x > 1e-12);

while (fabs(m * m - x) > 1e-4) {

m = (l + r) / 2.0;

if (m * m - x < 1e-12) {

l = m;

} else {

r = m;

}

}

return l;

}

int main(void)

{

double num;

while (scanf("%lf", &num) != EOF) {

printf("1. %.4f\n", sqrt_1(num));/* 牛顿迭代法 */

printf("2. %.4f\n", sqrt_2(num));/* 暴力*/

printf("3. %.4f\n", sqrt_3((float)num));/* 神奇算法*/

printf("4. %.4f\n", sqrt_4(num));/* 二分*/

}

return 0;

}

牛顿迭代法求平方根(Newton's Method)

/**

* 求平方根

* @param d 待开方数

* @param precision 算术平方根的精度

* @return

*/

double sqrt(double d,double precision) {

double x1 = d/2, x2 =(x1 + d/x1)/2;

while(Math.abs(x2 -x1)>precision) {

x1 = x2;

x2 =(x1 + d/x1)/2;

}

return x1;

}

c语言sqrt是double,实现double sqrt(double num)相关推荐

  1. C语言在中math.h中sqrt()函数的使用

    C语言在中<math.h>中sqrt()函数的使用: 功 能: 计算一个非负实数的平方根 函数原型: 在VC6.0中的 math.h头文件的函数原型为double sqrt(double) ...

  2. c语言sqrt多个重载函数,“sqrt”: 对重载函数的调用不明确——解决方法

    #include #include using namespace std; int main(){ int i,j,k,flag; i = 2; while(i <= 100){ flag = ...

  3. c语言程序sqrt显示错误,错误提示sqrt没有定义,不知道怎么修改,请指教

    错误提示sqrt没有定义,不知道怎么修改,请指教 #include #include #include #include int main() { char    comments[256]; int ...

  4. double fun在c语言中是什么意思,编写函数 double fun(double x,double y),计算两参数平方差的绝对值,做为函数返回值....

    编写函数fun,函数首部为double fun(int n),其功能是计算S=1!+2!+3!... 6个答案 - 提问时间: 2011-10-13 - 6个赞 问题说明:"S=1!+2!+3!+.. ...

  5. c语言 判断float无穷大,C++ 浮点数(double float)如何定义NaN 正无穷 负无穷,以及如何判断是否是NaN...

    NaN :阶码的每个二进制位全为1  并且  尾数不为0: 无穷:阶码的每个二进制位全为1  并且  尾数为0:符号位为0,是正无穷,符号位为1是负无穷. 所以NaN.正无穷.负无穷可以如此定义,可以 ...

  6. c++ double 截取_c++ double 截取_C/C++ double取余函数

    数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数 double sin (double); double cos (double); double tan (doub ...

  7. java 正确的表达式_JAVA程序设计课程作业,二、多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou...

    JAVA程序设计课程作业,二.多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou JAVA程序设计课程作业, 二.多选题 1.指出正确的表达式 A.double ...

  8. decimal double java_Java BigDecimal和double BigDecimal类

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...

  9. 用gson得JSON,数值变为double类型 ,去掉double值中的小数位(3.0改为3)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 项目中有个接口的数据是从缓存中读取再组成JSON 格式返出,原本缓存中数据是这样的: 用Gso ...

  10. 8.编写程序,要求如下: 定义名为VolumeArea的抽象类,在其中定义圆周率的值为3.14159,并定义两个抽象方法volume(double r)和area(double r),它们的返回

    8.编写程序,要求如下: 定义名为VolumeArea的抽象类,在其中定义圆周率p的值为3.14159,并定义两个抽象方法volume(double  r)和area(double  r),它们的返回 ...

最新文章

  1. 401 - 未授权: 由于凭据无效,访问被拒绝。
  2. 【Android 电量优化】电量优化 ( 耗电量测试 | Battery Historian 简介 | apt 源更新 | Docker 安装 | Battery Historian 安装 )
  3. linux中的fork方法(python)
  4. 阿里云杨敬宇:四层技术构建基于城市场景的边缘计算
  5. LeetCode - Easy - Excel Sheet Column Title
  6. php hashids思路,使用composer添加hashids加密数字
  7. ZYNQ ZCU102视频编码开发
  8. 年度总结—2019-2020
  9. 多玩网总裁李学凌:在腾讯阴影下
  10. android 强制竖排,[Android]实现文字竖排
  11. 代沐研:渡尽劫波非农在,空头有望脱苦海
  12. 【笔记】excel预加载word引用
  13. ahri8.php,松鼠症仓库自行更新规则后无法获取正确的title
  14. Python OpenCV学习笔记之:图像直方图均衡化
  15. 跨考计算机复试自我介绍,复试之自我介绍_跨考网
  16. commvault xtrabackup全实例备份失败 处于未决状态
  17. 视频转接芯片方案IT6251FN:LVDS转EDP
  18. 【我是学生,可以送我么】搭建树莓派4bJTAG调试平台jlink平替版
  19. 上班族薪酬计算方法变更 节假日加班费降低
  20. JZOJ1241. Number

热门文章

  1. qtablewidget控件居中_单元格Edi期间QTableWidgetItem中的文本居中
  2. ai钢笔工具怎么描线_ps钢笔工具怎么用——绘制直线、平滑曲线、转折曲线
  3. 医院子母钟时钟系统方案
  4. 逆流而上:阿里巴巴技术成长之路
  5. 无法处理类型为text html,types – 解释为Font但使用MIME类型text / html传输的资源将无法修复...
  6. 使用Excel 2007绘制甘特图
  7. 计算机桌面性能3.3,显卡天梯图2018年3月最新版 三月桌面显卡性能排行
  8. 垃圾分类数据集(垃圾图片数据集)
  9. TSC2046EIPWR 德州TI 具有低压数字 I/O 和扩展 ESD 保护的 4 线触摸屏控制器
  10. 分析DuxCms之AdminUserModel