"MachineInteger" (编译类型)
"MachineInteger"
表示一个机器分级的有符号原子类型说明符.
更多信息
- "MachineInteger" 可用于 Typed 和相关结构以指定一种类型.
- 在 64 位平台上,"MachineInteger" 是一个 "Integer64".
- 在 32 位平台上,"MachineInteger" 是一个 "Integer32".
- "MachineInteger" 与 "PackedArray" 类型一起使用.
转换
- 范围合适的 Integer 表达式可被转换为类型为 "MachineInteger" 的编译代码元素.
- "MachineInteger" 编译元素可被转换为 Integer 表达式.
- "MachineInteger" 编译元素在用于二进制算法运算时自动提升为实元素或复元素.
- 类型小于 "MachineInteger" 的编译元素在用于二进制算法运算时会自动被提升为 "MachineInteger".
- "MachineInteger" 编译元素在用于二进制算法运算时会自动被提升为 "UnsignedMachineInteger".
从表达式转换
转换为表达式
算法
范例
基本范例 (4)
"MachineInteger" 可用作 CompiledCodeFunction 的输入或输出:
cf = FunctionCompile[Function[Typed[arg, "MachineInteger"], arg]]cf[ 100]"MachineInteger" 的大小与 $SystemWordLength 相同:
$SystemWordLength在运行函数时,溢出会导致错误发生. 计算停止,消息发送并使用 Wolfram Engine 来计算结果:
cf = FunctionCompile[Function[Typed[arg, "MachineInteger"], arg ^ arg]];
cf[2^5]"MachineInteger" 参数在与实数结合时会自动提升:
cf = FunctionCompile[Function[{Typed[arg1, "MachineInteger"], Typed[arg2, "Real64"]}, arg1 + arg2]];
Information[cf, "Signature"]"MachineInteger" 参数在与较小存储范围的整数结合时,较小的类型会自动提升:
cf = FunctionCompile[Function[{Typed[arg1, "MachineInteger"], Typed[arg2, "Integer8"]}, arg1 + arg2]];
Information[cf, "Signature"]"MachineInteger" 在与相同存储范围的无符号整数结合时会被自动提升:
cf = FunctionCompile[Function[{Typed[arg1, "MachineInteger"], Typed[arg2, "UnsignedMachineInteger"]}, arg1 + arg2]];
Information[cf, "Signature"]"MachineInteger" 由于其可取架构原生范围的整数因此可与 "PackedArray" 一起使用:
cf = FunctionCompile[Function[Typed[arg, TypeSpecifier["PackedArray"]["MachineInteger", 1]], arg]]cf[{1, 2, 3}]技术笔记
历史
2019年引入 (12.0)