This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280025:执行一行计算耗时19us

Guru**** 655270 points
Other Parts Discussed in Thread: TMS320F280025C
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162025/tms320f280025-execution-of-one-line-of-calculation-consumed-19-us

器件型号:TMS320F280025C

您好、专家:

最初、我的项目中有这样的代码片段:

int32_t T;

float32_t V;

float32_t comp10;

float32_t comp11;

float32_t s;

int32_t T2,Tdt1, Tdt2;

t = (V * comp10+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;

然后我将上面的行更改为:   T = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;

然后、当在280025上运行时、代码的执行或运行时间增加了19微秒。 为什么这样简单的计算会消耗如此多的运行时间?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    器件型号:TMS320F280025C

    最初、我的项目中有这样的代码片段:
    int32_t T;
    float32_t V;
    float32_t comp10;
    float32_t comp11;
    float32_t s;
    int32_t T2,Tdt1, Tdt2;
    t = (V * comp10+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;
    然后我将上面的行更改为:   T = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;
    然后、当在280025上运行时、代码的执行时间或运行时间增加了19微秒。 为什么这样简单的计算会消耗如此多的运行时间?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Quentin、您好!

    您是否介意分享上述代码的反汇编?

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Omer、

    我不允许共享  我的项目代码的全部 Disassembly、但可以共享  所提供行的 Disassembly 代码段。 但如何提取  "Disassembly"代码片段 ? 请详细说明具体步骤吗?

    谢谢、

    昆廷

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Quentin、您好!

    当处于 CCS 的调试模式中时、如果你转到 View -> Disassembly、窗口应该会显示出来。 如果您有任何困难、请告诉我。

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Omer、如何在 CCS 中进入调试模式?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Quentin、您好!

    您可以通过单击顶部栏上的绿色虫子图标(设备已连接)来访问它。

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 这来自一个真实的项目、整个 Disassembly 非常庞大。 如何找到相应的反汇编行" T = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;"?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅以下相应的"拆卸":


    0868f9:5CAD MOVZ AR4、μ@SP
    0868fa:761F0304 MOVW DP、#0x304
    0868fc:E2A0030 MOV32 R0H、@0x30、UNCF
    0868fe:DC86 SubB XAR4、#6
    0868ff:88A4 MOVZ AR6、@AR4
    086900:7648927F LCR __c28xabi_ftod
    086902:5CAD MOVZ AR4、μ@SP
    086903:DC9E 子 B XAR4、#30
    086904:88A4 MOVZ AR6、@AR4
    086905:5CAD MOVZ AR4、@Ω SP
    086906:8F4833D8 MOVL XAR5、#0x0833d8
    086908:DC86 SubB XAR4、#6
    086909:5CA4 MOVZ AR4、@AR4
    08690a:76487E2F LCR __c28xabi_mpyd
    08690c:5CAD MOVZ AR4、μ@SP
    08690d:DC9E 子 B XAR4、#30
    08690e:59A4 MOVZ AR1、@AR4
    08690f:5CAD MOVZ AR4、μ@SP
    086910:DCA6 SubB XAR4、#38
    086911:88A4 MOVZ AR6、@AR4
    086912:5CAD MOVZ AR4、μ@SP
    086913:8F4833DC MOVL XAR5、#0x0833DC
    086915:DC86 SubB XAR4、#6
    086916:5CA4 MOVZ AR4、@AR4
    086917:76487E2F LCR __c28xabi_mpyd
    086919:5DAD MOVZ AR5、μ@SP
    08691a:5CAD MOVZ AR4、μ@SP
    08691b:DDA2 SubB XAR5、#34
    08691c:88A5 MOVZ AR6、@Ω AR5
    08691d:5DAD MOVZ AR5、μ@SP
    08691e:DCA6 SubB XAR4、#38
    08691f:5CA4 MOVZ AR4、@AR4
    086920:DD86 SubB XAR5、#6
    086921:5DA5 MOVZ AR5、@AR5
    086922:76487E2F LCR _c28xabi_mpyd
    086924:5CAD MOVZ AR4,@SP
    086925:DCA2 SubB XAR4、#34
    086926:5DA4 MOVZ AR5、@AR4
    086927:5CAD MOVZ AR4、μ@SP
    086928:DC9A SubB XAR4、#26
    086929:88A4 MOVZ AR6、@AR4
    08692A:8AA1 MOVL XAR4、@XAR1
    08692b:764895A3 LCR __c28xabi_subd
    08692d:5CAD MOVZ AR4、μ@SP
    08692e:DC9A SubB XAR4、#26
    08692f:59A4 MOVZ AR1、@AR4
    086930:5CAD MOVZ AR4、μ@SP
    086931:761F0304 MOVW DP、#0x304
    086933:E2A002E MOV32 R0H、@0x2e、UNCF
    086935:DCAA SubB XAR4、#42
    086936:88A4 MOVZ AR6、@AR4
    086937:7648927F LCR __c28xabi_ftod
    086939:5CAD MOVZ AR4、@Ω SP
    08693a:DCAA SubB XAR4、#42
    08693b:5DA4 MOVZ AR5、@AR4
    08693c:5CAD MOVZ AR4、μ@SP
    08693d:DC96 SubB XAR4、#22
    08693e:88A4 MOVZ AR6、@AR4
    08693f:8AA1 MOVL XAR4、@XAR1
    086940:76487ACB LCR __c28xabi_addd
    086942:5CAD MOVZ AR4、μ@SP
    086943:DC96 SubB XAR4、#22
    086944:59A4 MOVZ AR1、@AR4
    086945:5CAD MOVZ AR4、@SP
    086946:E6950024 ABSF32 R4H、R4H
    086948:E88FE020 ADDF32 R0H、#0x3f80、R4H
    08694A:DCAE SubB XAR4、#46
    08694b:88A4 MOVZ AR6、@AR4
    08694c:7648927F LCR __c28xabi_ftod
    08694e:5CAD MOVZ AR4、μ@SP
    08694f:DCAE SubB XAR4、#46
    086950:5DA4 MOVZ AR5、@AR4
    086951:5CAD MOVZ AR4、@Ω SP
    086952:DC92 SubB XAR4、#18
    086953:88A4 MOVZ AR6、@AR4
    086954:8AA1 MOVL XAR4、@XAR1
    086955:76487E2F LCR __c28xabi_mpyd
    086957:5CAD MOVZ AR4、μ@SP
    086958:DC92 SubB XAR4、#18
    086959:59A4 MOVZ AR1、@AR4
    08695a:5CAD MOVZ AR4、μ@SP
    08695b:761F0304 MOVW DP、#0x304
    08695d:0626 MOVL ACC、@0x26
    08695e:0328 SUBL ACC、@0x28
    08695f:DCB2 SubB XAR4、#50
    086960:032A SUBL ACC、@0x2a
    086961:88A4 MOVZ AR6、@AR4
    086962:7648929B LCR __c28xabi_ltod
    086964:5CAD MOVZ AR4、@Ω SP
    086965:88AD MOVZ AR6、μ@SP
    086966:DCB2 SubB XAR4、#50
    086967:DE8E SubB XAR6、#14
    086968:5DA4 MOVZ AR5、@AR4
    086969:88A6 MOVZ AR6、@AR6
    08696a:8AA1 MOVL XAR4、@XAR1
    08696b:76487E2F LCR __c28xabi_mpyd
    08696d:5CAD MOVZ AR4、μ@SP
    08696e:88AD MOVZ AR6、μ@SP
    08696f:8F4833E0 MOVL XAR5、#0x0833e0
    086971:DC8E SubB XAR4、#14
    086972:DE8A SubB XAR6、#10
    086973:5CA4 MOVZ AR4、@AR4
    086974:88A6 MOVZ AR6、@AR6
    086975:76487E2F LCR _c28xabi_mpyd
    086977:5CAD MOVZ AR4、μ@SP
    086978:DC8A SubB XAR4、#10
    086979:5CA4 MOVZ AR4、@AR4
    08697a:76489192 LCR __c28xabi_DTOL
    08697c:1EA6 MOVL @XAR6、ACC
    08697d:761F028D MOVW DP、#0x28d
    08697f:1E16 MOVL @0x16、ACC
    086980:761F0304 MOVW DP、#0x304

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    2条不同线路的反汇编比较:

    1.  t = (V * comp10+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;


    086ba5:0626 MOVL ACC、@0x26
    086ba6:E2A0130 MOV32 R1H、@0x30、UNCF
    086ba8:E2A022C MOV32 R2H、@0x2C、UNCF
    086baA:E6950000 ABSF32 R0H、R0H
    086bac:0328 SUBL ACC、@0x28
    086BAD:E3028F2E MPYF32 R1H、R2H、R1H
    || MOV32 R7H、@0x2e
    086baf:032A SUBL ACC、@0x2a
    086bb0:BDA90F1A MOV32 R2H、@Ω 附件
    086bb2:E88FE000 ADDF32 R0H、#0x3f80、R0H
    086bb4:E71001C9 ADDF32 R1H、R1H、R7H
    086bb6:7700 NOP
    086bb7:E7000040 MPYF32 R0H、R0H、R1H
    086bb9:E6890011 I32TOF32 R1H、R2H
    086bbb:7700 NOP
    086bbc:E7000008 MPYF32 R0H、R1H、R0H
    086bbe:7700 NOP
    086bbf:E84FC000 MPYF32 R0H、#0x3f00、R0H
    086bc1:7700 NOP
    086bc2:E6880000 F32TOI32 R0H、R0H
    086bc4:7700 NOP
    086bc5:7700 NOP
    086bc6:BFA60F12 MOV32 @XAR6、R0H
    086bc8:761F028D MOVW DP、#0x28d
    086bca:E2030016 MOV32 @0x16、R0H
    086bcc:761F0304 MOVW DP、#0x304
    2626 HWREGH (base + registerOffset + 0x1U)= compCount;
    086bce:92A6 MOV AL、@AR6
    086bCF:942A ADD AL、@0x2a
    2. t = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2;
    0868f9:5CAD MOVZ AR4、μ@SP
    0868fa:761F0304 MOVW DP、#0x304
    0868fc:E2A0030 MOV32 R0H、@0x30、UNCF
    0868fe:DC86 SubB XAR4、#6
    0868ff:88A4 MOVZ AR6、@AR4
    086900:7648927F LCR __c28xabi_ftod
    086902:5CAD MOVZ AR4、μ@SP
    086903:DC9E 子 B XAR4、#30
    086904:88A4 MOVZ AR6、@AR4
    086905:5CAD MOVZ AR4、@Ω SP
    086906:8F4833D8 MOVL XAR5、#0x0833d8
    086908:DC86 SubB XAR4、#6
    086909:5CA4 MOVZ AR4、@AR4
    08690a:76487E2F LCR __c28xabi_mpyd
    08690c:5CAD MOVZ AR4、μ@SP
    08690d:DC9E 子 B XAR4、#30
    08690e:59A4 MOVZ AR1、@AR4
    08690f:5CAD MOVZ AR4、μ@SP
    086910:DCA6 SubB XAR4、#38
    086911:88A4 MOVZ AR6、@AR4
    086912:5CAD MOVZ AR4、μ@SP
    086913:8F4833DC MOVL XAR5、#0x0833DC
    086915:DC86 SubB XAR4、#6
    086916:5CA4 MOVZ AR4、@AR4
    086917:76487E2F LCR __c28xabi_mpyd
    086919:5DAD MOVZ AR5、μ@SP
    08691a:5CAD MOVZ AR4、μ@SP
    08691b:DDA2 SubB XAR5、#34
    08691c:88A5 MOVZ AR6、@Ω AR5
    08691d:5DAD MOVZ AR5、μ@SP
    08691e:DCA6 SubB XAR4、#38
    08691f:5CA4 MOVZ AR4、@AR4
    086920:DD86 SubB XAR5、#6
    086921:5DA5 MOVZ AR5、@AR5
    086922:76487E2F LCR _c28xabi_mpyd
    086924:5CAD MOVZ AR4,@SP
    086925:DCA2 SubB XAR4、#34
    086926:5DA4 MOVZ AR5、@AR4
    086927:5CAD MOVZ AR4、μ@SP
    086928:DC9A SubB XAR4、#26
    086929:88A4 MOVZ AR6、@AR4
    08692A:8AA1 MOVL XAR4、@XAR1
    08692b:764895A3 LCR __c28xabi_subd
    08692d:5CAD MOVZ AR4、μ@SP
    08692e:DC9A SubB XAR4、#26
    08692f:59A4 MOVZ AR1、@AR4
    086930:5CAD MOVZ AR4、μ@SP
    086931:761F0304 MOVW DP、#0x304
    086933:E2A002E MOV32 R0H、@0x2e、UNCF
    086935:DCAA SubB XAR4、#42
    086936:88A4 MOVZ AR6、@AR4
    086937:7648927F LCR __c28xabi_ftod
    086939:5CAD MOVZ AR4、@Ω SP
    08693a:DCAA SubB XAR4、#42
    08693b:5DA4 MOVZ AR5、@AR4
    08693c:5CAD MOVZ AR4、μ@SP
    08693d:DC96 SubB XAR4、#22
    08693e:88A4 MOVZ AR6、@AR4
    08693f:8AA1 MOVL XAR4、@XAR1
    086940:76487ACB LCR __c28xabi_addd
    086942:5CAD MOVZ AR4、μ@SP
    086943:DC96 SubB XAR4、#22
    086944:59A4 MOVZ AR1、@AR4
    086945:5CAD MOVZ AR4、@SP
    086946:E6950024 ABSF32 R4H、R4H
    086948:E88FE020 ADDF32 R0H、#0x3f80、R4H
    08694A:DCAE SubB XAR4、#46
    08694b:88A4 MOVZ AR6、@AR4
    08694c:7648927F LCR __c28xabi_ftod
    08694e:5CAD MOVZ AR4、μ@SP
    08694f:DCAE SubB XAR4、#46
    086950:5DA4 MOVZ AR5、@AR4
    086951:5CAD MOVZ AR4、@Ω SP
    086952:DC92 SubB XAR4、#18
    086953:88A4 MOVZ AR6、@AR4
    086954:8AA1 MOVL XAR4、@XAR1
    086955:76487E2F LCR __c28xabi_mpyd
    086957:5CAD MOVZ AR4、μ@SP
    086958:DC92 SubB XAR4、#18
    086959:59A4 MOVZ AR1、@AR4
    08695a:5CAD MOVZ AR4、μ@SP
    08695b:761F0304 MOVW DP、#0x304
    08695d:0626 MOVL ACC、@0x26
    08695e:0328 SUBL ACC、@0x28
    08695f:DCB2 SubB XAR4、#50
    086960:032A SUBL ACC、@0x2a
    086961:88A4 MOVZ AR6、@AR4
    086962:7648929B LCR __c28xabi_ltod
    086964:5CAD MOVZ AR4、@Ω SP
    086965:88AD MOVZ AR6、μ@SP
    086966:DCB2 SubB XAR4、#50
    086967:DE8E SubB XAR6、#14
    086968:5DA4 MOVZ AR5、@AR4
    086969:88A6 MOVZ AR6、@AR6
    08696a:8AA1 MOVL XAR4、@XAR1
    08696b:76487E2F LCR __c28xabi_mpyd
    08696d:5CAD MOVZ AR4、μ@SP
    08696e:88AD MOVZ AR6、μ@SP
    08696f:8F4833E0 MOVL XAR5、#0x0833e0
    086971:DC8E SubB XAR4、#14
    086972:DE8A SubB XAR6、#10
    086973:5CA4 MOVZ AR4、@AR4
    086974:88A6 MOVZ AR6、@AR6
    086975:76487E2F LCR _c28xabi_mpyd
    086977:5CAD MOVZ AR4、μ@SP
    086978:DC8A SubB XAR4、#10
    086979:5CA4 MOVZ AR4、@AR4
    08697a:76489192 LCR __c28xabi_DTOL
    08697c:1EA6 MOVL @XAR6、ACC
    08697d:761F028D MOVW DP、#0x28d
    08697f:1E16 MOVL @0x16、ACC
    086980:761F0304 MOVW DP、#0x304
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Quentin、您好!

    [引用 userid="449244" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162025/tms320f280025-execution-of-one-line-of-calculation-consumed-19-us/4370900 #4370900"]T = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/ 2;

    这一行看起来不会生成到反汇编中的浮点等效指令中、这是第一个公式发生的情况。 当您同时查看 T 的结果时、它们是否完全相同? 它们是否在同一个程序中、一个接一个地运行?

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅以下内容:

    • 对于2条不同的线路、T 的结果应该是不同的。 它们是不同的公式

    • 我所做的是:
    1. 输入行   T = (V * comp10+comp11)*(fabsf (s)+ 1)*(T2 - Tdt1 - Tdt2)/2; 并在 CCS 中编译、在调试模式下运行、获取反汇编
    2. 然后、我将上面的行更改为   :t = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(t2 - Tdt1 - Tdt2)/2;   并在 CCS 中编译、在调试模式下运行、获取反汇编
    这是由编译器错误引起的吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将 CCS11.1与编译器 v21.6.0.LTS 配合使用。 这是否正常?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Quentin、您好!

    这应该是可以的。 我不能说这种情况是否是由编译器引起的、但我可以尝试让编译器专家说一下所发生的情况。

    此致、

    Omer Amir

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、Omer。 我们的项目在这个问题上一直处于停滞状态、如果有任何快速帮助、我们将不胜感激!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="449244" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1162025/tms320f280025-execution-of-one-line-of-calculation-consumed-19-us "]

    我将上面的行更改为:   T = (0.00189*V - 0.000000123*V*V+comp11)*(fabsf (s)+ 1)*(t2 - Tdt1 - Tdt2)/2;

    然后、我的代码的执行或运行时间增加了19微秒

    [/报价]

    0.00189等浮点常量的默认类型 double。  在 C28x EABI 中、double 的大小为64位。  因此、在此计算中、所有非常量输入都转换为双精度型、计算以双精度方式完成、然后在将其分配给 T 之前将其转换为 int32_t

    典型的修补程序有2个部分。  首先、通过添加后缀 f 来更改浮点常量的类型。 例如:0.00189f。  其次、要在发生类似错误时获取诊断、请使用编译器选项 -float_operations_allowed=32。  有关该选项的更多详细信息、请在 C28x 编译器手册中搜索该选项

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、George。 在 CCS UI 上、如何更改设置/选项以实现"使用编译器选项 --float_operations_allowed=32。 "?  请详述一下。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要了解如何在 CCS 中配置任何特定的编译器选项、请参阅在 CCS 中查找编译器选项一文

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的乔治:

    然后、我将"编译器接受的浮点精度"中的"全部"更改为"32" 、如下所示。 是这样吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的。  乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、但更改设置后、编译失败、并出现如下行的错误"错误#1558-D:不允许64位浮点运算":

    Pmax_start_rate_converted =((double) Pmax_start_rate_ds3/10) * overFreq_overvolve_loadReduce_RunPrd ;

    除了摆脱"(double)"之外、还有什么解决方案?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在我的项目中、还有许多其他使用 64位浮点运算的行  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我假设程序合法地需要这些64位浮点运算、并且这种情况只发生在程序中的几个不同文件中。  仅对于这些文件、请使用 CCS 功能 文件特定选项 禁用--float_operations_allowed。   

    谢谢、此致、

    乔治