FMOD功能的实现

2024-04-27

怎么样fmod功能实现了吗?

我尝试了以下方法:

#include <stdio.h>
#include <math.h>

float floatMod(float a, float b)
{
  return (a/b - floor(a/b));
}

int main()
{
  printf("%f\n", fmod(18.5,4.2));
  printf("%f\n", floatMod(18.5,4.2));
}

但输出不一样...


C/C++ 中 fmod 函数的正确实现是:

#include <iostream>
using namespace std;
#include <math.h> //for trunc()

double MyFmod(double x, double y) {
  return x - trunc(x / y) * y;
}

//test it
int main() 
{
  double values[13] = {-10.9, -10.5, -10.4, -0.9, -0.5, -0.1, 0, 0.1, 0.5, 0.9, 10.4, 10.5, 10.9};
  for (size_t i = 0; i < 12; ++i)
    cout << fmod(values[i], 3.0) <<" "<< MyFmod(values[i], 3.0) << endl;

  for (size_t i = 0; i < 12; ++i)
    cout << fmod(values[i], -3.0) <<" "<< MyFmod(values[i], -3.0) << endl;
  
  return 0;
}

Java 中 fmod 函数的正确实现是:

//trunc() implementation in Java:
double truncate(double x) {
  return x < 0 ? -Math.floor(-x) : Math.floor(x);
  //or return x < 0 ? Math.ceil(x) : Math.floor(x);
}

double MyFmod(double x, double y) {
  return x - truncate(x / y) * y;
}

还可以使用 fma 指令来提高精度(尽管只有在准确计算 trunc(x/y) 的结果时这才能正确工作):

C/C++: fma(trunc(x / y), -y, x);

Java: Math.fma(truncate(x / y), -y, x);

注意:当 double 的精度不够时,上述所有实现都可能不如编译器的数学库。在我的编译器中,std::fmod(1e19, 3) 计算 1.0(准确的结果),而具有相同参数的 MyFmod 返回 -512。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FMOD功能的实现 的相关文章

  • 不同提供商的相同 EDMX 文件

    我正在开发一个项目 其中有一个本地数据库 SQL CE 在不存在与服务器的连接的情况下用作缓冲区 在服务器上我想使用相同的数据库布局 当然 我想使用服务器和客户端上可用的 Common dll 中的相同 EDMX 文件 在客户端中 我有一个
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • 显示 div 内的用户名列表

    我是 jQuery 新手 在我的项目中 我创建了一个类User其中代码如下所示 static ConcurrentDictionary
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • 如何检查号码是否只有唯一的数字?

    例如 2345 是唯一的数字 因为没有数字显示两次 但 3324 不是唯一的数字 因为 3 出现了两次 我尝试使用 但我 代码 显示但我没有得到数字我得到了数字 编辑 你不能使用字符串 number 10 number 100 number
  • 静态 OpenCV 库中未定义的引用

    我有一个使用 OpenCV 3 1 的 C 项目 并且使用共享库可以正常工作 但现在我想使用静态库 位于项目目录中的文件夹中 来编译它 因为我希望能够在未安装 OpenCV 的情况下导出它 如果需要还可以编辑和重新编译 这次我重新编译了 O
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • 多线程 - 比单线程慢

    当我使用多个线程而不是单线程运行程序时 它会变慢 不是应该更快吗 该程序应该遍历从起始目录开始的所有目录 并查找并打印所有名为 X 的文件 代码如下 while done pthread mutex lock lock if list is
  • 确定相关词的编程方式?

    使用网络服务或软件库 我希望能够识别与词根相关的单词 例如 座位 和 安全带 共享词根 座位 但 西雅图 不会被视为匹配 简单的字符串比较对于这类事情似乎是不可行的 除了定义我自己的字典之外 是否有任何库或 Web 服务不仅可以返回单词定义
  • 文本框中“结束编辑”的事件

    我正在 winform c 中使用文本框 并使用文本在数据库中进行查询 但每次文本更改时 我都需要不断查阅文本框的文本 因此 对于这些 我使用 KeyUp 但这个活动太慢了 文本框编辑完成后是否会触发任何事件 我考虑完成2个条件 控制失去焦
  • 模板定义中的友元函数

    我的问题有点相关this https stackoverflow com questions 1297609 overloading friend operator for template class one 我想重载某些类的运算符 te
  • C# 模式匹配

    我对 C 有点陌生 我正在寻找一个字符串匹配模式来执行以下操作 我有一个像这样的字符串 该书将在 唐宁街 11 号接待处 并将由主要医疗保健人员参加 我需要创建一个 span 标签来使用 startIndex 和 length 突出显示一些
  • 使用方法的状态模式

    我正在尝试使用方法作为状态而不是类来基于状态模式的修改版本来实现一个简单的状态机 如下所示 private Action
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 如何获取运行或段落的高度

    我找到了Run or Paragraph in FlowDocument现在我需要知道HEIGHT of it i e while navigator CompareTo flowDocViewer Document ContentEnd
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 线程安全的有限大小队列,不使用锁

    我正在尝试编写一个主题队列 但遇到死锁和其他多线程问题 我想用Interlocked CompareExchange避免lock用法 但这段代码并没有按预期工作 它只是擦除整个队列 我在这里做错了什么 public class FixedS

随机推荐

  • 查找最近的城市,例如 oodle.com

    因此 我正在尝试开发一个显示用户列表的应用程序 该网站应该检测用户位置 我为此使用 maxmind api 然后显示用户位置 用户指定半径内的城市的列表 我该怎么做呢 MaxMind API 让我可以通过 IP 地址检测用户的城市 但如何找
  • dprintf 与 break + 命令 + continue 之间有什么区别?

    例如 dprintf main hello n run 生成与以下内容相同的输出 break main commands silent printf hello n continue end run 使用是否有显着的优势dprintf ov
  • C# 中的嵌入字体

    我已经尝试了很多在 c 中的 wpf 应用程序中嵌入字体的方法 该字体的名称是 Roboto 文件名是机器人 ttf如果那有用的话 我已确保它已在程序集中编译 那么如何在a中应用字体TextBlock例如 您可以将字体应用到如下元素中
  • 在插入模式下移至行首

    我知道我可以使用 Home in insert mode Esc i to exit insert mode and enter it again effectively going to the beginning of line But
  • 如何使用 devise_invitable 发送自定义邀请

    我是 ruby 新手 使用 devise invitable gem 进行邀请 每条指令都正确发送 现在我想添加一个自定义主题 该主题将具有受邀者姓名和董事会名称以及与主题相同的自定义内容 我如何在以下操作方法中执行此操作而不使用额外的自定
  • git log --oneline --graph 输出的含义

    我正在学习相对提交引用并尝试理解以下内容git log oneline graph课程中提供的输出 在课程中它说给定的 HEAD 指向9ec05ca提交 HEAD 意思是曾祖父母提交 是0c5975a犯罪 但在我看来4c9749e如果每个
  • 如何将H2数据库文件存储到项目目录中

    当我使用H2数据库时 数据库文件存储在C Users MyName TestDataBase db目录 H2路径是jdbc h2 TestDataBase 这是默认的 H2 数据库路径 是否有可能像这样将 H2 数据库文件存储到我的项目目录
  • 为什么要使用继承? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何引用所有正在运行的 Excel 应用程序实例(包括隐藏的和没有工作簿的实例)的 COM 对象?

    如何获取每个正在运行的 Excel 应用程序实例的完整引用列表 无论其工作簿数量和可见性状态如何 我知道我可以使用 Windows API 来查找每个 Excel 工作簿窗口 其窗口类名称EXCEL7 让他们的句柄与AccessibleOb
  • 快速崩溃“EXC_BREAKPOINT 0x0000000...”

    我的 iOS 应用程序确实发生了三种不同的崩溃情况 不同的代码位置 但所有三个都带有 exc breakpoint 0x000000 我无法重现它们 它们发生在不同的设备和不同的 iOS 版本上 如前所述 我无法重现它们 我们的测试人员都没
  • Android - API 级别 21 中的日期 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你好 我对 Android 还很陌生 目前我对本地日期 或我尝试过的任何其他日期格式 有一个大问题 L
  • Bootstrap 3 无法在 Symfony3 中工作

    我刚刚开始学习 Symfony 3 我正在尝试使用 bootstrap 3 为我的表单设置主题 根据文档 http symfony com doc current cookbook form form customization html
  • Python 交互式 Shell 类型应用程序

    我想创建一个交互式 shell 类型的应用程序 例如 gt app py Enter a command to do something eg create name price For to get help enter help wit
  • 如何识别导航堆栈中的先前视图控制器

    我有2个独立的navigationcontrollers 一与RootViewControllerA 和另一个RootViewController B 我有能力推动ViewControllerC 到 A 或 B 的导航堆栈上 问题 当我在V
  • 如何保护swf文件不被反编译?

    我正在使用 Flex 框架从事重要项目 我想对我的算法和代码保密 是否有可能以某种方式保护 swf 文件不被反编译 我不希望有人使用 flash 反编译器提取我的代码 Thanks 这很简单 只需将其保存在您的 PC 上 不要将其放在网络上
  • SQL Server 获取父列表

    我有一个这样的表 id name parent id 1 ab1 3 2 ab2 5 3 ab3 2 4 ab4 null 5 ab5 null 6 ab6 null 我需要使用输入 id 1 进行查询 例如 结果将如下所示 id name
  • 在 Java 1.7.0 下运行的 SQL-Server (MSSQL-JDBC 3.0) 中的日期列检索为过去 2 天

    当使用 SQLServer2008 从 SQLServer2008 检索 DATE 类型的列时 出现奇怪的效果在官方 Oracle JDK 1 7 0 下运行时 主机操作系统是Windows Server 2003 所有日期列均检索为two
  • 使用sklearn宏f1-score作为tensorflow.keras中的指标

    我已经为tensorflow keras定义了自定义指标 以在每个时期之后计算宏f1分数 如下所示 from tensorflow import argmax as tf argmax from sklearn metric import
  • MacOS X 上使用 crypt 进行 Python SHA512 加盐密码

    我正在尝试生成加密的密码字符串 类似于Linux中的 etc shadow 由于某种原因 我得到的输出是不同的 我有什么想法吗 一个比另一个长 不包括盐部分 usr bin python import crypt alg 6 SHA512
  • FMOD功能的实现

    怎么样fmod功能实现了吗 我尝试了以下方法 include