---
title: 选项 -fp-model
description: "-fp-model选项是一组用于控制浮点计算精度与行为的编译器选项，各个子选项说明如下："
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0036.html
sourcePath: /source/zh/kunpengdevkithistory/hgcc/hist-hgcc/kunpenghgcc_06_0036.html
indexId: f74da260297f78b128738c0bc42dd13c4af35e5c1d24572ba9c4f097c8daa35d71
---
# 选项 -fp-model

#### 说明

-fp-model选项是一组用于控制浮点计算精度与行为的编译器选项，各个子选项说明如下：

- -fp-model=normal
  默认值，等同于不开任何fp-model选项，对其他选项无任何影响。

- -fp-model=fast
  等同于开启-ffast-math，会开启多种可能降低数值精度的优化，例如交换结合律、强度折减等。

- -fp-model=precise
  禁用所有可能降低浮点精度的优化，确保计算结果的正确性。包括关闭交换结合律、强度折减、向零舍入、fma指令生成等优化。

- -fp-model=except
  开启浮点计算异常机制，编译器在优化时会考虑浮点异常的存在，从而阻止那些忽略异常的激进优化。需注意：鲲鹏芯片暂时不支持浮点异常中断功能。

- -fp-model=strict
  等效于同时启用-fp-model=precise和-fp-model=except。


#### 使用方法

根据浮点计算精度的需求加入相应的选项即可。

由于该选项基于GCC开发，遵循不干扰GCC开源原有选项优先级行为的原则，因此-fp-model的优先级如下：

-fp-model=precise/strict/normal/fast/except与-ffast-math优先级相同，且高于 -Ofast/-O3。


自研选项优先级遵循以下规则：- 当命令行中指定多个-fp-model选项时，仅最后一个生效；若发生覆盖，编译器将在屏幕输出中发出warning提示。
- 最终起效的-fp-model为precise或strict时， 命令行排在此选项之前的-Ofast选项被改为-O3，-ffast-math选项被删除。同时报出warning。
- -fp-model选项与开源-ffast-math的优先级一致，因此-fp-model与-fmath-errno/-funsafe-math-optimization等选项的优先级相同，生效与否仅取决于命令行顺序和前端代码逻辑。
