7

我正在开发新版本的Mandelbrot 屏幕保护程序,但浮点精度已用完 - 简单的精度值没有足够的有效数字来满足我的需要。

更重要的数字 = 更高级别的分形放大

当我在 Delphi 7 中编写此屏幕保护程序的版本时,我使用了扩展的浮点类型,大小为 80 位。

在 .NET 中,我可以切换到decimal,但是这样做的性能非常糟糕,分形生成速度减慢了 20 倍左右。

.NET是否有任何等效的扩展?或者,是否有任何精度高于double的数字类型仍然使用 FPU 进行评估,因此没有decimal的高性能命中?

更新

我的屏幕保护程序已经设法将分形放大许多(许多!)数量级;目前,仅当使用的数字类型无法分隔相邻像素的纵坐标时,它才会重置为基本分形。双扩展改进带来的额外 16 位精度将使我的大小增加近 16 倍。

至于性能,我的算法已经设法消除了所需的 95-99% 的数学运算(与计算许多像素的简单实现相比),同时保留了分形的完整性。

4

1 回答 1

4

在 64 位平台上,Extended类型是 Double 的别名,只有 8 个字节。在 32 位平台上,一个Extended数字表示为 10 个字节(80 位)。

这意味着即使是您的 Delphi 程序也可能无法在 64 位平台上运行良好。

如果您需要超过 64 位的数字数据类型,请继续decimal优化您的算法以提高性能。

于 2012-09-23T01:35:34.083 回答