C++11标准模板(STL)- 常用数学函数 - 计算平方根 (√x)(std::sqrt, std::sqrtf, std::sqrtl)

常用数学函数

计算平方根 (√x)

std::sqrt, 
std::sqrtf, 
std::sqrtl

float       sqrtf( float arg );

(1)(C99 起)

double      sqrt( double arg );

(2)

long double sqrtl( long double arg );

(3)(C99 起)

定义于头文件 <tgmath.h>

#define sqrt( arg )

(4)(C99 起)

1-3) 计算 arg 的平方根。

4) 泛型宏:若 arg 拥有 long double 类型,则调用 sqrtl 。否则,若 arg 拥有整数类型或 double 类型,则调用 sqrt 。否则调用 sqrtf 。若 arg 为复数或虚数,则宏调用对应复数函数( csqrtf 、 csqrt 、 csqrtl )。

参数

arg-浮点值

返回值

若不出现错误,则返回 arg 的平方根( √arg )。

若出现定义域错误,则返回实现定义值(支持的平台上为 NaN )。

若出现下溢所致的值域错误,则返回(舍入后的)正确结果。

错误处理

报告 math_errhandling 中指定的错误。

arg 小于零则出现定义域错误。

若实现支持 IEEE 浮点算术( IEC 60559 ),则

  • 若参数小于 -0 ,则引发 FE_INVALID 并返回 NaN 。
  • 若参数为 +∞ 或 ±0 ,则返回不修改的参数。
  • 若参数为 NaN ,则返回 NaN 。

注意

IEEE 标准要求 sqrt 为准确。其他要求为准确的运算只有算术运算符和函数 fma 。舍入到返回类型后(用默认舍入模式), sqrt 的结果与无限精度结果不可辨别。换言之,误差小于 0.5 ulp 。其他函数,包含 pow ,不受如此的制约。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>int main()
{//1-3) 计算 arg 的平方根。const float fNumber = 0.1314;std::cout << "typeid(float).name():   " << typeid(float).name() << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << fNumber + i << "):   "<< std::sqrt(fNumber + i) << std::endl;}std::cout << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << -fNumber - i << "):   "<< std::sqrt(-fNumber - i) << std::endl;}std::cout << std::endl;const double dNumber = 0.01314;std::cout << "typeid(double).name():   " << typeid(double).name() << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << dNumber + i << "):   "<< std::sqrt(dNumber + i) << std::endl;}std::cout << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << -dNumber - i << "):   "<< std::sqrt(-dNumber - i) << std::endl;}std::cout << std::endl;const long double ldNumber = 0.001314;std::cout << "typeid(long double).name():   " << typeid(long double).name() << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << ldNumber + i << "):   "<< std::sqrt(ldNumber + i) << std::endl;}std::cout << std::endl;for (int i = 0; i < 1000; i += 100){std::cout << "std::sqrt(" << -ldNumber - i << "):   "<< std::sqrt(-ldNumber - i) << std::endl;}std::cout << std::endl;return 0;
}

输出

typeid(float).name():   f
std::sqrt(0.1314):   0.362491
std::sqrt(100.131):   10.0066
std::sqrt(200.131):   14.1468
std::sqrt(300.131):   17.3243
std::sqrt(400.131):   20.0033
std::sqrt(500.131):   22.3636
std::sqrt(600.131):   24.4976
std::sqrt(700.131):   26.46
std::sqrt(800.131):   28.2866
std::sqrt(900.131):   30.0022std::sqrt(-0.1314):   nan
std::sqrt(-100.131):   nan
std::sqrt(-200.131):   nan
std::sqrt(-300.131):   nan
std::sqrt(-400.131):   nan
std::sqrt(-500.131):   nan
std::sqrt(-600.131):   nan
std::sqrt(-700.131):   nan
std::sqrt(-800.131):   nan
std::sqrt(-900.131):   nantypeid(double).name():   d
std::sqrt(0.01314):   0.11463
std::sqrt(100.013):   10.0007
std::sqrt(200.013):   14.1426
std::sqrt(300.013):   17.3209
std::sqrt(400.013):   20.0003
std::sqrt(500.013):   22.361
std::sqrt(600.013):   24.4952
std::sqrt(700.013):   26.4578
std::sqrt(800.013):   28.2845
std::sqrt(900.013):   30.0002std::sqrt(-0.01314):   nan
std::sqrt(-100.013):   nan
std::sqrt(-200.013):   nan
std::sqrt(-300.013):   nan
std::sqrt(-400.013):   nan
std::sqrt(-500.013):   nan
std::sqrt(-600.013):   nan
std::sqrt(-700.013):   nan
std::sqrt(-800.013):   nan
std::sqrt(-900.013):   nantypeid(long double).name():   e
std::sqrt(0.001314):   0.0362491
std::sqrt(100.001):   10.0001
std::sqrt(200.001):   14.1422
std::sqrt(300.001):   17.3205
std::sqrt(400.001):   20
std::sqrt(500.001):   22.3607
std::sqrt(600.001):   24.4949
std::sqrt(700.001):   26.4575
std::sqrt(800.001):   28.2843
std::sqrt(900.001):   30std::sqrt(-0.001314):   nan
std::sqrt(-100.001):   nan
std::sqrt(-200.001):   nan
std::sqrt(-300.001):   nan
std::sqrt(-400.001):   nan
std::sqrt(-500.001):   nan
std::sqrt(-600.001):   nan
std::sqrt(-700.001):   nan
std::sqrt(-800.001):   nan
std::sqrt(-900.001):   nan

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1549927.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

快递单号物流跟踪管理快速筛选出已签收单号

看着满屏的单号&#xff0c;是不是感觉眼前一黑要查询到什么时候&#xff1f;别灰心&#xff0c;这不快递批量查询高手来了&#xff01;这神器就是用来查询物流的好帮手。一键筛选已签收件单号&#xff0c;并导出表格。有了它&#xff0c;你也能轻松查询大量的单号物流。一起试…

生信初学者教程(十五):差异结果的热图

文章目录 介绍加载R包导入数据画图函数热图输出结果总结介绍 热图是一种数据可视化工具,用于展示矩阵数据中的数值大小,通过颜色的深浅或色调变化来表示不同的数值。通常用于生物信息学、统计学和数据分析等领域,以便直观地比较和分析大量数据。 热图展示的是一个二维的数据…

图神经网络实战——分层自注意力网络

图神经网络实战——分层自注意力网络 0. 前言1. 分层自注意力网络1.1 模型架构1.2 节点级注意力1.3 语义级注意力1.4 预测模块 2. 构建分层自注意力网络相关链接 0. 前言 在异构图数据集上&#xff0c;异构图注意力网络的测试准确率为 78.39%&#xff0c;比之同构版本有了较大…

信息安全工程师(26)物理安全概念与要求

前言 物理安全是网络安全体系中的重要组成部分&#xff0c;它关注于保护物理环境、设备和资源免受未经授权的访问、破坏、损坏或盗窃。 一、物理安全概念 物理安全&#xff0c;也称为实体安全&#xff0c;是指通过采取各种物理措施来保护支持网络信息系统运行的硬件&#xff08…

你还在用Java8吗?

Java 11 在企业中&#xff0c;Java的不同版本使用情况随着时间在不断变化。根据最新的数据报告&#xff0c;以下是一些关键点&#xff1a; Java 11 和 Java 17 成为企业中最常用的长期支持&#xff08;LTS&#xff09;版本&#xff0c;使用率分别为 48% 和 45%&#xff0c;而 …

1Panel安装部署证书(httpsok.com)

1Panel安装部署证书(httpsok.com) 购买服务器 推荐购买香港服务器&#xff0c;这样通过域名访问就不需要备案。 创建静态站点 申请SSL证书 进入 httpsok.com&#xff0c;点击申请证书 输入站点域名 根据提示&#xff0c;添加DNS解析记录 添加成功后&#xff0c;提示域名验证…

免费送源码:Javaspringboot++MySQL springboot 社区互助服务管理系统小程序 计算机毕业设计原创定制

摘 要 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受居民的喜爱&#xff0c;社区互助服务管理系统小程序被居民普遍使用&#xff0c;为…

【二叉平衡搜索树】Treap

前置 本篇是平衡树-treap的补充学习笔记。 Treap - 树堆 学习基础&#xff1a;适合一定基础的&#xff1a;比如&#xff0c;实现了经典二叉搜索树&#xff08;常用的几个函数写过&#xff09;&#xff0c; 和二叉堆&#xff08;数组的上浮下沉会写吗&#xff1f;&#xff09;&a…

Win11右键默认显示更多设置教程

Win11最大的变化之一莫过于右键菜单发生了变化&#xff0c;最大的问题是什么&#xff0c;是右键菜单很多时候需要点两次&#xff0c;实在是反人类&#xff0c;太麻烦了。 简直是反人类&#xff01; 必须使用“显示更多选项”的右键菜单。 以管理员方式运行CMD 复制以下命令直…

IP6537_C_30W20V--移动设备快充的得力助手,集成 14 种快充协议的降压 SoC

IP6537_C_30W20V是一款集成同步开关的降压转换器、支 持 14 种输出快充协议、支持 Type-C 输出和 USB PD2.0/PD3.0(PPS)协议的 SoC&#xff0c;为车载充电器、 快充适配器、智能排插提供完整的解决方案。 IP6537_C_30W20V支持 USB Type-C 或者 USB A 输出&#xff0c; 5V 输出功…

C++的STL标准模板库容器--vector类

前言&#xff1a;vector类也可以叫作顺序表&#xff0c;他同样也在STL库中的容器模块中&#xff0c;我还是主要讲常用的几个成员函数和成员变量&#xff0c;同时它晚于string类&#xff0c;所以在设计上没有string冗余。 vector类是一个和数组类似的容器&#xff0c;它属于随机…

插上网线无法连接网络,控制面板以太网消失 | 如何重装网络驱动

如果你确定你的网线没问题&#xff0c;网线插口没问题&#xff0c;那你大概率就是驱动问题&#xff0c;可以试一下本方法。 0 以太网消失 事情是这样的&#xff0c;我工作时候需要接内网&#xff0c;插网线&#xff0c;摸鱼时候连外网&#xff0c;我就把网线关了。 每次插网线…

【Python大语言模型系列】开源机器人对话系统框架RASA介绍与使用(案例分析)

这是我的第361篇原创文章。 一、引言 Rasa是一个开源的对话式 AI 框架&#xff0c;用于构建自定义的对话式 AI 助手。它可以处理自然语言理解&#xff08;NLU&#xff09;和对话管理&#xff08;DM&#xff09;&#xff0c;使得开发者能够轻松地创建功能丰富的对话式 AI 应用。…

番外篇 | 应对遮挡挑战,北航提出新型模型YOLOv5-FFM表现优异

前言:Hello大家好,我是小哥谈。在本文中,作者提出了一种改进的轻量级YOLOv5-FFM模型来解决行人检测遮挡问题。为了实现目标,作者在YOLOv5模型框架基础上进行了改进,并引入了Ghost模块和SE模块。此外,作者还设计了一个局部特征融合模块(FFM)来处理行人检测中的遮挡问题。…

I/O中断处理过程

中断控制器位于CPU和外设之间&#xff0c;用于处理I/O中断请求。以下是一个简化的中断控制器&#xff1a; 现在有A,B,C三个中断源。中断响应优先级&#xff1a;A>B>C&#xff0c;中断处理优先级&#xff1a;C>B>A 假设CPU正在处理A中断源的中断请求&#xff0c;此时…

Mixture-of-Experts (MoE): 条件计算的诞生与崛起【上篇】

大型语言模型&#xff08;LLM&#xff09;的现代进步主要是缩放定律的产物[6]。 假设模型是在足够大的数据集上训练出来的&#xff0c;那么随着底层模型规模的增加&#xff0c;我们会看到性能的平滑提升。 这种扩展规律最终促使我们创建了 GPT-3 以及随后的其他&#xff08;更强…

Excel技巧:Excel批量提取文件名

Excel是大家经常用来制作表格的文件&#xff0c;比如输入文件名&#xff0c;如果有大量文件需要输入&#xff0c;用张贴复制或者手动输入的方式还是很费时间的&#xff0c;今天和大家分享如何批量提取文件名。 打开需要提取文件名的文件夹&#xff0c;选中所有文件&#xff0c…

在线翻译器工具横评:性能、准确率大比拼

无论是旅行者在异国他乡探寻风土人情&#xff0c;学者研究国外的前沿学术成果&#xff0c;还是商务人士与国际伙伴洽谈合作&#xff0c;都离不开一种高效、准确的语言沟通工具。而翻译器在线翻译能很好的帮我们解决这个问题。今天我们一起来探讨有那些好用的翻译工具。 1.福昕…

Golang | Leetcode Golang题解之第443题压缩字符串

题目&#xff1a; 题解&#xff1a; func compress(chars []byte) int {write, left : 0, 0for read, ch : range chars {if read len(chars)-1 || ch ! chars[read1] {chars[write] chwritenum : read - left 1if num > 1 {anchor : writefor ; num > 0; num / 10 {…

【题解】2022ICPC杭州-K

翻译 原题链接   简述一下就是每次询问重新定义一个字母排序表&#xff0c;问在这个顺序下n个字符串的序列的逆序数是多少。 字典树计算逆序数 先考虑初始状况下&#xff0c;即 a < b < . . . < z a<b<...<z a<b<...<z的情况下&#xff0c;逆序…