C++11标准模板(STL)- 常用数学函数 - 计算自然对数(底为e) (ln(x))(std::log, std::logf, std::logl)

news2024/9/24 10:19:44

常用数学函数

计算自然对数(底为e)(ln(x))

std::log, 
std::logf, 
std::logl

定义于头文件 <math.h>

float       logf( float arg );

(1)(C99 起)

double      log( double arg );

(2)

long double logl( long double arg );

(3)(C99 起)

定义于头文件 <tgmath.h>

#define log( arg )

(4)(C99 起)

1-3) 计算 arg 的自然(底 e )对数。

4) 泛型宏:若 arg 拥有 long double 类型,则调用 logl 。否则,若 arg 拥有整数类型或 double 类型,则调用 log 。否则,调用 logf 。若 arg 为复数或序数,则宏调用对应的复数函数( clogf 、 clog 、 clogl )。

参数

arg-浮点值

返回值

若不出现错误,则返回 arg 的自然(底 e )对数( ln(arg) 或log
e(arg) )。

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

若出现极点错误,则返回 -HUGE_VAL-HUGE_VALF-HUGE_VALL

错误处理

报告 math_errhandling 中指定的错误。

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

arg 为零则可能出现极点错误。

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

  • 若参数为 ±0 ,则返回 -∞ 并引发 FE_DIVBYZERO 。
  • 若参数为 1 ,则返回 +0 。
  • 若参数为负数,则返回 NaN 并引发 FE_INVALID 。
  • 若参数为 +∞ ,则返回 +∞ 。
  • 若参数为 NaN ,则返回 NaN 。

调用示例

#include <iostream>
#include <cstdlib>
#include <typeinfo>
#include <cinttypes>
#include <cmath>

int main()
{
    //计算浮点值 arg 的绝对值。
    const float fNumber = 0.1314;
    std::cout << "typeid(float).name():   " << typeid(float).name() << std::endl;
    for (int i = 0; i < 100; i += 10)
    {
        std::cout << "std::log(" << fNumber + i << "):   "
                  << std::log(fNumber + i) << std::endl;
    }
    std::cout << std::endl;

    for (int i = 0; i < 100; i += 10)
    {
        std::cout << "std::log(" << -fNumber - i << "):   "
                  << std::log(-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 < 100; i += 10)
    {
        std::cout << "std::log(" << dNumber + i << "):   "
                  << std::log(dNumber + i) << std::endl;
    }
    std::cout << std::endl;

    for (int i = 0; i < 100; i += 10)
    {
        std::cout << "std::log(" << -dNumber - i << "):   "
                  << std::log(-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 < 100; i += 10)
    {
        std::cout << "std::log(" << ldNumber + i << "):   "
                  << std::log(ldNumber + i) << std::endl;
    }
    std::cout << std::endl;

    for (int i = 0; i < 100; i += 10)
    {
        std::cout << "std::log(" << -ldNumber - i << "):   "
                  << std::log(-ldNumber - i) << std::endl;
    }
    std::cout << std::endl;

    return 0;
}

输出

typeid(float).name():   f
std::log(0.1314):   -2.02951
std::log(10.1314):   2.31564
std::log(20.1314):   3.00228
std::log(30.1314):   3.40557
std::log(40.1314):   3.69216
std::log(50.1314):   3.91465
std::log(60.1314):   4.09653
std::log(70.1314):   4.25037
std::log(80.1314):   4.38367
std::log(90.1314):   4.50127

std::log(-0.1314):   nan
std::log(-10.1314):   nan
std::log(-20.1314):   nan
std::log(-30.1314):   nan
std::log(-40.1314):   nan
std::log(-50.1314):   nan
std::log(-60.1314):   nan
std::log(-70.1314):   nan
std::log(-80.1314):   nan
std::log(-90.1314):   nan

typeid(double).name():   d
std::log(0.01314):   -4.33209
std::log(10.0131):   2.3039
std::log(20.0131):   2.99639
std::log(30.0131):   3.40164
std::log(40.0131):   3.68921
std::log(50.0131):   3.91229
std::log(60.0131):   4.09456
std::log(70.0131):   4.24868
std::log(80.0131):   4.38219
std::log(90.0131):   4.49996

std::log(-0.01314):   nan
std::log(-10.0131):   nan
std::log(-20.0131):   nan
std::log(-30.0131):   nan
std::log(-40.0131):   nan
std::log(-50.0131):   nan
std::log(-60.0131):   nan
std::log(-70.0131):   nan
std::log(-80.0131):   nan
std::log(-90.0131):   nan

typeid(long double).name():   e
std::log(0.001314):   -6.63468
std::log(10.0013):   2.30272
std::log(20.0013):   2.9958
std::log(30.0013):   3.40124
std::log(40.0013):   3.68891
std::log(50.0013):   3.91205
std::log(60.0013):   4.09437
std::log(70.0013):   4.24851
std::log(80.0013):   4.38204
std::log(90.0013):   4.49982

std::log(-0.001314):   nan
std::log(-10.0013):   nan
std::log(-20.0013):   nan
std::log(-30.0013):   nan
std::log(-40.0013):   nan
std::log(-50.0013):   nan
std::log(-60.0013):   nan
std::log(-70.0013):   nan
std::log(-80.0013):   nan
std::log(-90.0013):   nan

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

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

相关文章

软件测试面试八股文(含文档)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一般软件测试的面试分为三轮&#xff1a;笔试&#xff0c;HR面试&#xff0c;技术面试。 前两轮&#xff0c;根据不同企业&#xff0c;或有或无&#xff0c;但最…

建立分支提交代码

git分支 git branch 产看当前分支 git branch -a 查看所有分支 git checkout 分支名 切换分支 git checkout -b 分支名 建立分支&#xff08;仅仅是在本地建立了&#xff0c;并没有关联线上&#xff09; git push --set-upstream origin 分支名 把本地分支推到先线上 建立分支…

3、SRGAN

3、SRGAN SRGAN论文链接&#xff1a;SRGAN SRGAN&#xff08;超分辨率生成对抗网络&#xff09;是在2017年由Christian Ledig等人在论文《Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network》中提出的。该模型引入了基于GAN&#xff08;…

9.5HSV体系进行颜色分割

基本概念 inRange() 函数是 OpenCV 中用于图像处理的一个非常有用的函数&#xff0c;即从图像中提取出介于指定范围内的像素值。这个函数在图像处理中特别有用&#xff0c;比如颜色检测、背景去除等应用。它主要用于图像的阈值处理&#xff0c;但与其他阈值方法&#xff08;如…

AOT源码解析4.1-model主体解析

1 输入数据 VOS的数据集处理操作可见数据集操作&#xff0c;这里是进行数据集提取完毕后的操作。 图2&#xff1a;如图所示&#xff0c;使用datasets提取出数据之后&#xff0c;在模型训练阶段对数据做图中操作。即&#xff1a;将batch_size大小的ref_imgs、prev_imgs&#x…

【JavaEE】——线程“饿死问题” wait notify

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯&#xff0c;你们的点赞收藏是我前进最大的动力&#xff01;&#xff01;希望本文内容能够帮助到你&#xff01; 目录 引子&#xff1a; 一&#xff1a;情景引入 二&#xff1a;线程饿死问题 1&#xff1a;线程饿死 2&a…

24 C 语言常用的字符串处理函数详解:strlen、strcat、strcpy、strcmp、strchr、strrchr、strstr、strtok

目录 1 strlen 1.1 函数原型 1.2 功能说明 1.3 案例演示 1.4 注意事项 2 strcat 2.1 函数原型 2.2 功能说明 2.3 案例演示 2.4 注意事项 3 strcpy 3.1 函数原型 3.2 功能说明 3.3 案例演示 3.4 注意事项 4 strcmp 4.1 函数原型 4.2 功能说明 4.3 案例演示 …

在 VS Code 中调试 C++ 项目

选择调试器环境 从预定义的调试配置中进行选择&#xff0c;生成预定义launch.json文件,可能是空模板 {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft…

Qwen2-VL全面解读!阿里开源多模态视觉语言模型,多项超越GPT4o与Claude 3.5-Sonnet

文章链接&#xff1a;https://arxiv.org/pdf/2409.12191 Github链接&#xff1a;https://github.com/QwenLM/Qwen2-VL 亮点直击 本文介绍了Qwen系列大型视觉语言模型的最新成员&#xff1a;Qwen2-VL系列&#xff0c;该系列包括三款开放权重模型&#xff0c;总参数量分别为20亿、…

QString 构建SQL语句可以往数据库中添加“\n“字符串

网上找了很多案例关于怎么样能在Mysql数据库中插入带\n的字符串&#xff0c;如图&#xff1a; 本以为很容易的一件事&#xff0c;没想到思考了半天&#xff0c;在这里记录一下&#xff0c;以为\n是转义字符的原因&#xff0c;所以并不是我想的那么简单。网上有用R&#xff08;“…

力扣 困难 154.寻找旋转排序数组中的最小值 II

文章目录 题目介绍题解 题目介绍 题解 题源&#xff1a; 153.寻找旋转排序数组中的最小值 在此基础上&#xff0c;进行二分之前&#xff0c;单独处理一下左指针和最后一个数相同的情况就好了。 class Solution {public int findMin(int[] nums) {int left 0, right nums.le…

使用豆包Marscode 创建了一个”天气预报“小应用

以下是「豆包MarsCode 体验官」优秀文章&#xff0c;作者一拳干爆显示器。 前言 本文介绍了我第一次使用我在MarsCode IDE制作了一款天气预报的应用 其中在正文的头部以及结语部分发表了我在MarsCode编程中的体验情况&#xff0c;而正文的中间主要是我项目制作的细节步骤 豆…

【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

Face++API调用

人脸检测API调用 import requests import json #将自己的KEY和Secret进行替换 API_KEYyour_API_KET API_SECRETyour_API_Secret# 人脸识别的URL URL https://api-cn.faceplusplus.com/facepp/v3/detect# 请求参数,需要什么参数传入什么参数 data {"api_key":API…

力扣2208.将数组各元素总和减半需要最少次数(贪心+堆)

题目描述 给你一个正整数数组 nums 。每一次操作中&#xff0c;你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。&#xff08;注意&#xff0c;在后续操作中你可以对减半过的数继续执行操作&#xff09;请你返回将 nums 数组和 至少 减少一半的 最少 操作数。 示例…

零基础入门AI大模型应用开发——第三天:使用python实现问答机器人

一、简介 问答机器人是一种能够理解用户提问并提供相关答案的程序。它可以用于各种场景&#xff0c;如客户支持、在线教育、信息检索等。用户通过自然语言输入问题&#xff0c;机器人则通过分析问题并检索相关信息来提供回答。 使用什么技术实现的&#xff1f; 自然语言处理&…

Leetcode 合并区间

我们借助一个辅助链表(元素类型是一维数组)来进行结果统计。 这个算法解决了“合并区间”的问题&#xff0c;具体要求是给定一组区间&#xff08;每个区间有开始和结束位置&#xff09;&#xff0c;如果两个区间有重叠&#xff0c;那么需要将它们合并成一个区间&#xff0c;并…

【Linux】ubuntu 16.04 搭建jdk 11 环境(亲测可用)

目录 0.环境 1.题外话 2.详细 0.环境 windows11 主机 Virtual Box 7.0 ubuntu 16.04系统 想搭建个 jdk11的环境&#xff0c;用于项目 1.题外话 因为虚拟机与主机传输文件不方便&#xff0c;所以可以尝试用共享文件夹的方式传输&#xff0c;亲测可用&#xff0c;参考以下博…

JAVA并发编程系列(10)Condition条件队列-并发协作者

一线大厂面试真题&#xff0c;模拟消费者-生产者场景。 同样今天的分享&#xff0c;我们不纸上谈兵&#xff0c;也不空谈八股文。以实际面经、工作实战经验进行开题&#xff0c;然后再剖析核心源码原理。 按常见面经要求&#xff0c;生产者生产完指定数量产品后&#xff0c;才能…

计算机毕业设计 校运会管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…