3

对于下面的二次公式,我有多个abutfixed bc

在此处输入图像描述

我希望编写一个partial application高效执行的函数,即我的函数不会重新计算固定值(因为band c)。


这是我的解决方案

let r b c = let z = b *. b in fun a -> (-.b +. sqrt (z-.4.0*.a*.c))/.(a*.2.0);;

我想这个解决方案可以工作,但我不确定它是否足够有效。我只是做b^2了修复,因为我看到其他部分都带有a.

谁能给我一个更好的解决方案?

4

1 回答 1

2

是的,这是处理手头情况的正确方法。替代形式没有多大帮助(只要它获得您需要的准确性)。你可能也想搬出4*c去,

let r b c = let z = b *. b and c4 = 4.0 *. c in
            fun a -> (-.b +. sqrt (z-.a*.c4))/.(a*.2.0);;
于 2012-12-05T17:30:04.987 回答