汇编中的纯高位乘法?

2024-02-06

为了实现 0 到 1 之间的实数,通常使用 ANSI 浮点数或双精度数。但是 0 到 1 之间的固定精度数字(小数模 1)可以有效地实现为 32 位整数或 16 位字,它们像普通整数/字一样相加,但乘以“错误的方式”,这意味着当您乘以 X 倍时Y,您保留产品的高位。这相当于 0.X 和 0.Y 相乘,其中 X 的所有位都在小数点后面。同样,-1 和 1 之间的有符号数也可以通过这种方式通过一位额外的位和一位移位来实现。

如何在 C 中实现固定精度 mod 1 或 mod 2(尤其是使用 MMX 或 SSE)? 我认为这种表示对于酉矩阵的有效表示和数值密集型物理模拟很有用。它使更多的 MMX/SSE 具有整数数量,但您需要对 PMULHW 进行更高级别的访问。


如果 16 位定点运算就足够了,并且您使用的是 x86 或类似架构,则可以直接使用 SSE。

SSE3指令pmulhrsw直接在硬件中实现有符号 0.15 定点算术乘法(模 2,如您所说,从 -1..+1 开始)。加法与标准 16 位向量运算没有什么不同,只是使用paddw.

因此,一次处理 8 个有符号 16 位定点变量的乘法和加法的库可能如下所示:

typedef __v8hi fixed16_t;

fixed16_t mul(fixed16_t a, fixed16_t b) {
    return _mm_mulhrs_epi16(a,b);
}

fixed16_t add(fixed16_t a, fixed16_t b) {
    return _mm_add_epi16(a,b);
}

授予您以任何您喜欢的方式使用它的许可;-)

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

汇编中的纯高位乘法? 的相关文章

  • do { ... } while (0) — 它有什么用? [复制]

    这个问题在这里已经有答案了 我已经看到这个表情十多年了 我一直在努力思考它有什么好处 因为我主要在 defines 中看到它 所以我认为它对于内部作用域变量声明和使用中断 而不是 gotos 很有用 对其他方面有好处吗 你用它吗 这是 C
  • 从变量使用 OLE DB 源命令的 EzAPI 等效项是什么?

    tl dr 使用 来自变量的 SQL 命令 数据访问模式的 OLE DB 源并分配变量的 EzAPI 代码是什么 Preamble 每月一次 我们需要使用生产数据的子集刷新我们的公共测试站点 我们已确定 根据我们的需求 SSIS 解决方案最
  • 在 MS word .docs 中插入 MathMl 、 Tex 或 LaTex 方程?

    我一直在寻找 C 中 Net 的一些 dll 用于在 MS Word 中插入任何 MathMl Tex 或 LaTex 方程 我尝试了一些类似 DocX 的工具 但它们失败了 你知道吗 或任何提示如何做到这一点 谢谢 Word 2007 可
  • 我应该如何以非 root 身份读取 Linux 上的 Intel PCI 非核心性能计数器?

    我想要一个库 允许对 Linux 可执行文件的关键部分进行 自我分析 就像人们可以使用一个部分计时一样获取当日时间 http linux die net man 2 gettimeofday or RDTSC http www strchr
  • 使用 C# 在 Windows 窗体应用程序中正确使用 OnClick 与 MouseClick 事件

    我目前正在开发一个自定义控件 并意识到我的代码正在运行两次 这实际上并不是一个大问题 它只是 Focus 方法调用 不过 我想了解一下 从阅读点击 MSDN说明单击事件 http msdn microsoft com en us libra
  • C# 中具有字符串键类型的不区分大小写字典

    如果我有一个Dictionary
  • Microsoft.Web.Administration 内存泄漏

    拥有一个 Windows 服务 除其他外 还可以监视 IIS 应用程序池 如果任何池已配置应用程序但未运行 则该池 池 将启动 这已经运行良好一段时间了 最近发现该服务存在内存泄漏 查看内存转储 罪魁祸首是用于检查应用程序池的 Micros
  • 安全地检查“this”是否为空

    首先 我知道在空指针上调用方法是未定义的行为 我还知道 因为这不应该发生 编译器可以 并且确实 假设this始终为非空 但在实际代码中 有时您会不小心这样做 通常 它没有任何不良影响 当然除了this方法中为 null 并且事情可能会崩溃
  • 检查文件是真实文件还是符号链接

    有没有办法使用 C 来判断文件是真实文件还是符号链接 我已经挖过了MSDN W32 文档 https learn microsoft com en us windows win32 fileio file management functi
  • 如何使用 VB.NET 或 C#.NET 代码从 yahoo 邮件 ID 发送邮件

    我想从我的 yahoomail Id 发送邮件 如何使用 VB NET 或 C NET 代码从 yahoo mail Id 发送邮件 需要善意的帮助 提前谢谢 西瓦库马尔 以下是一些制作基本 html 电子邮件消息的示例 http help
  • 将二维整数作为 Readonly/const 存储在单独的类中,同时保持非公开

    这是我在使用这个地方作为我的 去处 以获取关于什么有效 无效 为什么等的一般意见之后的第一个问题 那么让我们试试这个 由于我的经验有限 我一直在尝试寻找更好的方法来创建固定数据字段 我可以在整个程序中引用这些字段 例如我反复显示的最终用户可
  • 隐藏树视图列表中的节点。在 C# 中

    我正在使用 VS 2005 C 正在处理一个未完成的 WinForm 我已将 XML 解析为树视图列表 但遇到了一些问题 我想知道是否有一种方法可以隐藏 过滤 删除名称中包含 this text 的某个节点 而不必依赖文本框 这就是我对这个
  • “应用程序配置”文件中的最大键/值长度

    允许的最大长度是多少MyKey and MyValue在配置文件中
  • 如何在调试时轻松查看事件订阅数量?

    在调试时 我可以查看一下textBox1 TextChanged查看事件订阅数量 如果是 那么我该如何钻取它 我需要知道在给定时间有多少订阅进行调试 因为看起来一个事件被多次触发 但我怀疑这个错误确实是因为textBox1 TextChan
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • OpenXML 如何获取范围内的单元格

    请帮助我获取范围内的单元格 例如从 A 1 到 E 11 都是矩形单元格 目前我的理想是 Worksheet worksheet GetWorksheet document sheetName SheetData sheetData wor
  • 解析 SWIG 接口文件的结构属性

    这是我不久前问过的问题的延续 为通过参数返回的函数创建类型映射 https stackoverflow com questions 12793973 create a typemap for a function that returns
  • 使用 C++20 概念避免 std::function

    过去 当我想要回调作为函数参数时 我通常决定使用std function 在极少数情况下 我绝对从不使用捕获 我使用了typedef改为函数声明 因此 通常我的带有回调参数的声明看起来像这样 struct Socket void on re
  • 写入 Windows 7“预览”窗口区域

    如何使用 C 将控件写入或绘制到 Windows 7 预览区域 作为我正在讨论的示例 请在 Windows 7 中打开 Windows Media Player 并播放一首歌曲 播放歌曲时 最小化 Windows Media Player
  • Microsoft Graph API 调用无限期挂起

    我正在尝试使用 Microsoft Graph 查询 Azure Active Directory 用户信息 我可以很好地进行身份验证 但是当我尝试查询用户信息时client Users我的应用程序无限期挂起 没有超时 没有错误 只是挂起

随机推荐

  • 向 Angular 4 中的元素添加类

    我试图使用 Angular 4 创建一个图像库 其背后的逻辑是将级联样式表 CSS 类添加到所选图像 该类将在所选 单击的 图像上显示红色边框 这是图片库的 CSS 样式表 我想在我单击的图像上显示红色选择方块 this is a clas
  • 以编程方式旋转 Google 可视化数据表

    我兴奋地这把小提琴 http jsfiddle net asgallant HkjDe 我尝试参考那个小提琴创建相同的类型 我修改后的样本给出在here http jsfiddle net DUn6B 我正在尝试创建一个视图 如下所示 va
  • Python 中的 Selenium PhantomJS 自定义标头

    我想在 python 中向 Selenium PhantomJS 添加 自定义标头 这些是我想添加的标题 headers Accept Accept Encoding gzip deflate sdch Accept Language en
  • 如何检查 R 中的标量?

    我有兴趣识别数字标量 例如 doub lt 3 14 intg lt 8L 我知道这些被视为长度为一的向量 因此 对于任何 R 对象x is is vector x length x 1检查是否正确的方法x是一个标量 length x 1其
  • 使用 Laravel Envoyer 上传特定供应商文件

    我正在尝试使用 Laravel Forge 仅将特定供应商文件上传到我的服务器 原因是因为我编辑了一些依赖项中的代码 现在发生的情况是我网站的某些功能正在破坏 因为当我从 Envoyer 推送到我的服务器时 Envoyer 正在从我的 Gi
  • Python 中阻止 GET 请求的解决方法

    我正在尝试使用 requests 和 beautifulsoup 检索和处理网络搜索的结果 我编写了一些简单的代码来完成这项工作 并且它成功返回 状态 200 但请求的内容只是一条错误消息 对于给您带来的不便 我们深表歉意 但该站点当前不可
  • C 中的移位运算符(<<、>>)是算术运算符还是逻辑运算符?

    在 C 语言中 移位运算符 lt lt gt gt 算术还是逻辑 左移时 算术移位和逻辑移位没有区别 右移时 移位类型取决于被移位的值的类型 作为那些不熟悉差异的读者的背景知识 逻辑 右移 1 位会将所有位向右移动 并用 0 填充最左边的位
  • 在 Perl 中解析时间戳与毫秒

    假设我有一堆时间戳 如 11 05 2010 16 27 26 003 如何在 Perl 中用毫秒解析它们 本质上 我想比较时间戳以查看它们是在特定时间之前还是之后 我尝试使用 Time Local 但似乎 Time Local 只能解析第
  • 使用与 Trait 函数相同名称的 PHP 类

    我有以下代码作为示例 trait sampletrait function hello echo hello from trait class client use sampletrait function hello echo hello
  • YouTube-Player-iOS-Helper 无法使用 YTPlayerView 类

    我正在尝试实现 youtube ios player helper 在这里找到 https github com youtube youtube ios player helper https github com youtube yout
  • 在android上进行双向数据绑定的正确方法是什么?

    我为 2 路数据绑定做了一个简单的 hello world 并且接缝工作完美 当在 editext 上写入时 textview 自动更新 但是像官方文档一样在网上找到的所有代码都有更多的代码和复杂性 例如https developer an
  • 如何在 Windows 7 64 位上调试 VB6 IIS 应用程序

    我需要能够在 Windows 7 64 位上调试 Visual Basic 6 IIS 应用程序 不仅仅是为了解决一个问题 而是为了持续发展 尝试调试会导致 WebClass 运行时出现错误 发生了未指定的错误 如果我不进行调试而只是访问编
  • 对 Azure Cosmos DB 中的嵌套字段建立索引

    我想在 Azure Cosmos DB 文档中的嵌套字段上创建索引 例如 如果我有以下架构 id 1 nested mode mode1 text nice text 我想在该字段上创建索引nested mode 如何才能做到这一点 Ans
  • 如何在Eclipse控制台打印[简体]汉字?

    我有以下代码 import java io PrintStream import java io UnsupportedEncodingException import java util Locale public final class
  • 点击刷新时,IIS 上出现路由 404 错误

    我没有找到这个问题的解决方案 但我已经尝试了各种解决方案 但没有任何效果 我有一个 React JS 应用程序 当部署在测试服务器上并且您在页面上点击刷新时 我收到 404 错误消息 我尝试过 URL 重写 这有助于导航回主页 但这并不能解
  • 如何使 DateTime 独立于当前文化?

    我尝试将日期时间转换为字符串并返回 但使其适用于所有文化 我基本上有一个文本框 tbDateTime 和一个标签 lbDateTime 该标签告诉用户 软件期望以哪种格式输入 tbDateTime 文本框的输入将用于 MySQL 命令 目前
  • Angular ng 使用不同的“配置文件”构建

    在 Maven Java 中 可以构建具有不同 配置文件 的 Web 应用程序战争 配置文件 指示例如要放入配置文件中的 Web 服务的 URL 因此 测试配置文件 将指示与 生产配置文件 不同的 URL 有没有类似于 ng build 的
  • Swift - 如何在单击时使图像全屏显示,然后在再次单击时使图像变为原始大小? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于我正在制作的应用程序 我希望用户能够单击图像以使其在应用程序上全屏显示 然后用户可以单击现在的全屏图像以使其恢复原始大小 这可能吗
  • 我不明白 format() 和 ... (python) 之间有什么区别

    这里是困惑的新手 使用有什么区别 print So you are 0 years old format age AND print So you are age years old 两者都有效 其实差别很大 前者使用字符串format h
  • 汇编中的纯高位乘法?

    为了实现 0 到 1 之间的实数 通常使用 ANSI 浮点数或双精度数 但是 0 到 1 之间的固定精度数字 小数模 1 可以有效地实现为 32 位整数或 16 位字 它们像普通整数 字一样相加 但乘以 错误的方式 这意味着当您乘以 X 倍