You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
B.2.1<br />
单 精 度 浮 点 函 数<br />
__fadd_rn() __fmul_rn() FMAD 和 映 射 为 加 法 和 法 作 且 译 不 把 们 入 。 此 相 比 ,“*” 和 “+” 运 算 符 生 成 的 加 法 和 乘 法 一 般 都 将 被 并 入 FMAD。<br />
_fdividef(x, y) 2 126 < y < 2 128 ,__fdivedef(x, y)<br />
B-1 2<br />
普 通 浮 点 除 法 和 具 有 相 同 精 度 , 但 在 时 为 0,<br />
126 < y < 2 128 x<br />
__ fdivedf(x, y) 0<br />
而 普 通 除 法 将 在 表 列 举 的 精 确 度 内 提 供 正 确 。 同 样 , 在 时 , 如 果 是 无 穷 大 ,<br />
操 编 器 会<br />
__[u]mul24(x, y) x y 24 32 。x<br />
y 8<br />
他 并 中 与<br />
NaN(<br />
__[u]mulhi(x, y) x y 64 32<br />
的 结 果 ), 而 普 通 除 法 将 返 回 无 穷 大 。<br />
__[u]mul64hi(x, y) 64 x y 128 个 最 低 有 效 的 乘 积 , 提 供 个 最 低 有 效 位 的 结 果 和 的 个 最 高 有 效 位 将 被 忽 略 。 将<br />
64<br />
得<br />
__saturate(x)<br />
到<br />
x<br />
结<br />
0<br />
果<br />
x<br />
无<br />
1<br />
__[u]sad(x,<br />
穷<br />
y, z<br />
大<br />
x y<br />
以<br />
, 提 供 位 结 果 中 的 个 最 高 有 效 位 计 算 位 整 型 参 数 和 的 乘 积 , 提 供 位 结 果 中 的 个 最 高 有 效 位 。 将 在 小 于 时 0, 在 大 于 时 返 回 1, 否 则 返 回 x。 计<br />
__clz(x) x 31 0 0 32<br />
0<br />
算 整 型 参 数 和 的 乘 积<br />
型 参 数 z)(<br />
__clzll(x) 64 x 63 0 0 64<br />
整 型 参 数 与 的 差 绝 对 值 之 和 。<br />
0 从 最 高 有 效 位 ( 即 第 位 ) 开 始 的 连 续 位 的 数 量 , 介 于 和 之 间 ( 包<br />
__ffs(x) x x<br />
括 和 32)。 和<br />
0,_ffs()<br />
绝<br />
Linux<br />
对 差 之 和 ) 返 回 整 位 ( 即 第 ) 开 始 的 连 续 的 数 量 , 介 于 和 之 间 ( 包 括 和 64)。<br />
整 型 参 数 中 第 一 个 ( 最 低 有 效 ) 位 组 的 位 置 。 最 低 有 效 位 是 位 置 1。 如 果 为 将 返 回 0。 请 注 意 , 此 函 数 等 同 于 函 数 ffs。<br />
__ffsll(x) x x<br />
0,__ffsll() Linux 从 高<br />
一 个 ( 最 低 有 效 ) 位 组 的 位 置 。 最 低 有 效 位 是 位 置 1。 如 果 为 将 返 回 0。 请 注 意 , 此 函 数 等 同 于 函 数 ffsll。<br />
B-3 <strong>CUDA</strong><br />
__fadd_[rn,rz](x,y)<br />
IEEE<br />
__fmul_[rn,rz](x,y)<br />
IEEE<br />
__fdividef(x,y)<br />
表 运 行 时 库 支 持 的 单 精 度 浮 点 建 函 数 及 其 误 差 范 围<br />
y [2<br />
返 回 位 整 型 参 数 中 的 第 误 差 范 围<br />
符 合 -126 , 2 126 ] ulp 2.<br />
__expf(x)<br />
ulp<br />
2 + floor(abs(1.16 * 区 间 内 , 则 最 大 误 差 为 __exp10f(x)<br />
ulp<br />
2 + floor(abs(2.95 *<br />
函 数<br />
为<br />
x))。<br />
__logf(x)<br />
x [0.5, 2] 2 -21.41, ulp<br />
__log2f(x)<br />
x [0.5, 2] 2 ulp<br />
则 最 大<br />
最 大 误 差 -22,<br />
__log10f(x)<br />
x [0.5, 2] 2 ulp<br />
2。 否 -24,<br />
__sinf(x) x [-π, π] 2<br />
否 则 最 大 误 差 为 3。<br />
-21.41<br />
__cosf(x) x [-π, π] 2 -21.19<br />
__sincosf(x,sptr,cptr) sinf(x) cosf(x)<br />
__tanf(x)<br />
__sinf(x) * (1 /<br />
如 果 在 区 间 内 , 则 最 大 绝 对 误 差 为 , 否 则 更 大 。<br />
相 同 。 误 差 为 3。<br />
__powf(x, y)<br />
exp2f(y * 下 实 现 :<br />
__log2f(x))。<br />
__mul24(x,y)<br />
N/A<br />
__umul24(x,y)<br />
__cosf(x))。<br />
__mulhi(x,y)<br />
N/A<br />
以 自 承 继 和<br />
__umulhi(x,y)<br />
64 <strong>CUDA</strong> 2.0 本 版 , 南 指 程 编<br />
与