C#的任何"扩展"等价物?

Bev*_*van 7 c# double performance floating-point-precision

我正在研究我的Mandelbrot屏幕保护程序的新版本,并且我的浮点精确度已经不足了- 简单的值没有足够的重要数据来满足我的需求.

更重要的数字=更大程度的放大分形

回到我在Delphi 7中编写这个屏幕保护程序的版本时,我使用了80位大小的扩展浮点类型.

在.NET中,我可以切换到十进制,但是这对性能的影响非常糟糕,分形生成速度减慢了20倍左右.

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

更新

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

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

小智 4

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

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

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