C++11标准模板(STL)- 常用数学函数 - 计算反正弦 (arcsin(x))(std::asin, std::asinf, std::asinl)

server/2024/10/19 15:43:43/

常用数学函数

计算反正弦 (arcsin(x))

std::asin, 
std::asinf, 
std::asinl

定义于头文件 <math.h>

float       asinf( float arg );

(1)(C99 起)

double      asin( double arg );

(2)

long double asinl( long double arg );

(3)(C99 起)

定义于头文件 <tgmath.h>

#define asin( arg )

(4)(C99 起)

1-3) 计算 arg 的弧(反)正弦主值。

4) 泛型宏:若参数拥有 long double 类型,则调用 asinl 。否则,若参数拥有整数类型或 double 类型,则调用 asin 。否则调用 asinf 。若参数为复数,则宏调用对应的复数函数( casinf 、 casin 、 casinl )。

参数

arg-浮点值

返回值

若不出现错误,则返回 arg 在范围 [-

π
2

 ; +

π
2

] 中的弧(反)正弦( arcsin(arg) )。

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

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

错误处理

报告 math_errhandling 中指定的错误。

arg 在范围 [-1.0; 1.0] 外则出现定义域错误。

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

  • 若参数为 ±0 ,则返回不修改的参数。
  • 若 |arg| > 1 ,则出现定义域错误并返回 NaN 。
  • 若参数为 NaN ,则返回 NaN 。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>
#include <math.h>
#include <tgmath.h>int main()
{//1-3) 计算 arg 的弧(反)正弦主值。const float fNumber = std::acos(-1);std::cout << "typeid(float).name():   " << typeid(float).name() << std::endl;for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << fNumber / i << "):   "<< std::asin(fNumber / i) << std::endl;}std::cout << std::endl;for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << - fNumber / i << "):   "<< std::asin(- fNumber / i) << std::endl;}std::cout << std::endl;const double dNumber = std::acos(-1);for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << dNumber / i << "):   "<< std::asin(dNumber / i) << std::endl;}std::cout << std::endl;for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << - dNumber / i << "):   "<< std::asin(- dNumber / i) << std::endl;}std::cout << std::endl;const long double ldNumber = std::acos(-1);std::cout << "typeid(long double).name():   " << typeid(long double).name() << std::endl;for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << ldNumber / i << "):   "<< std::asin(ldNumber / i) << std::endl;}std::cout << std::endl;for (int i = 1; i <= 10; i += 1){std::cout << "std::asin(" << - ldNumber / i << "):   "<< std::asin(- ldNumber / i) << std::endl;}std::cout << std::endl;return 0;
}

输出

typeid(float).name():   f
std::asin(3.14159):   nan
std::asin(1.5708):   nan
std::asin(1.0472):   nan
std::asin(0.785398):   0.903339
std::asin(0.628319):   0.67939
std::asin(0.523599):   0.55107
std::asin(0.448799):   0.465421
std::asin(0.392699):   0.403565
std::asin(0.349066):   0.356574
std::asin(0.314159):   0.319571std::asin(-3.14159):   nan
std::asin(-1.5708):   nan
std::asin(-1.0472):   nan
std::asin(-0.785398):   -0.903339
std::asin(-0.628319):   -0.67939
std::asin(-0.523599):   -0.55107
std::asin(-0.448799):   -0.465421
std::asin(-0.392699):   -0.403565
std::asin(-0.349066):   -0.356574
std::asin(-0.314159):   -0.319571std::asin(3.14159):   nan
std::asin(1.5708):   nan
std::asin(1.0472):   nan
std::asin(0.785398):   0.903339
std::asin(0.628319):   0.67939
std::asin(0.523599):   0.55107
std::asin(0.448799):   0.465421
std::asin(0.392699):   0.403565
std::asin(0.349066):   0.356574
std::asin(0.314159):   0.319571std::asin(-3.14159):   nan
std::asin(-1.5708):   nan
std::asin(-1.0472):   nan
std::asin(-0.785398):   -0.903339
std::asin(-0.628319):   -0.67939
std::asin(-0.523599):   -0.55107
std::asin(-0.448799):   -0.465421
std::asin(-0.392699):   -0.403565
std::asin(-0.349066):   -0.356574
std::asin(-0.314159):   -0.319571typeid(long double).name():   e
std::asin(3.14159):   nan
std::asin(1.5708):   nan
std::asin(1.0472):   nan
std::asin(0.785398):   0.903339
std::asin(0.628319):   0.67939
std::asin(0.523599):   0.55107
std::asin(0.448799):   0.465421
std::asin(0.392699):   0.403565
std::asin(0.349066):   0.356574
std::asin(0.314159):   0.319571std::asin(-3.14159):   nan
std::asin(-1.5708):   nan
std::asin(-1.0472):   nan
std::asin(-0.785398):   -0.903339
std::asin(-0.628319):   -0.67939
std::asin(-0.523599):   -0.55107
std::asin(-0.448799):   -0.465421
std::asin(-0.392699):   -0.403565
std::asin(-0.349066):   -0.356574
std::asin(-0.314159):   -0.319571


http://www.ppmy.cn/server/127429.html

相关文章

Elasticsearch学习笔记(3)

RestAPI Elasticsearch&#xff08;ES&#xff09;官方提供了多种语言的客户端库&#xff0c;用于与Elasticsearch进行交互。这些客户端库的主要功能是帮助开发者更方便地构建和发送DSL&#xff08;Domain Specific Language&#xff09;查询语句&#xff0c;并通过HTTP请求与…

Qt_QSS介绍与使用

目录 1、QSS的语法介绍 2、QSS的基本使用 3、QSS的全局设置 4、样式的叠加特性 5、样式的优先级 6、使用Qt Designer设置样式 7、选择器种类介绍 7.1 类选择器 7.2 ID选择器 7.3 并集选择器 8、子控件选择器 9、伪类选择器 10、盒子模型 10.1 设置边框和内…

在 VSCode IDE 中,使用 ESP32-S3 的 USB 接口进行调试

使用 USB 管脚进行 JTAG 调试&#xff0c;在 VSCode 环境中的使用请阅读官方说明&#xff1a;Configuration for Visual Studio Code Debug 1、先编译工程并烧录固件 2、打开 OpenOCD 环境&#xff1a; 键 F1 —> OpenOCD 板配置 —> USB-JTAG键 F1 —> OpenOCD 管理…

安全服务面试

118.什么叫脱壳? 而从技术的角度出发&#xff0c;壳是一段执行于原始程序前的代码。原始程序的代码在加 壳的过程中可能被压缩、加密……。当加壳后的文件执行时&#xff0c;壳&#xff0d;这段代码先于 原始程序运行&#xff0c;他把压缩、加密后的代码还原成原始程序代码…

MQTTnet.Extensions.ManagedClient客户端连接

一、MQTT客户端 代码如下&#xff08;示例&#xff09;&#xff1a; using MQTTnet; using MQTTnet.Client; using MQTTnet.Extensions.ManagedClient; using MQTTnet.Protocol; using MQTTnet.Server; using System; using System.Collections.Generic; using System.Linq…

Python办公自动化案例:批量修改Word文件中的段落格式

案例:Python实现批量修改Word文件中的段落格式。 在处理大量Word文档时,经常需要批量修改这些文档的格式,比如统一段落格式,以提升文档的一致性和专业性。使用Python来实现这一任务可以极大地提高工作效率,特别是当涉及到数百或数千个文档时。Python通过第三方库如python…

架构视图和视角

博文推荐 设计模式总览如何理解五级模型架构原则-业务原则快速集成开发框架——统一脱敏组件

从画质设置看游戏引擎(其一)

前往我的博客&#xff0c;获取无广告&#xff0c;更好的阅读体验 1. 抗锯齿&#xff08;Anti-Aliasing&#xff09; 1.1 锯齿问题的起因 在三维模型的世界中&#xff0c;模型是连续的&#xff0c;但是屏幕像素是不连续&#xff0c;是离散的&#xff1b; 即当一个圆形显示在显…