我正在开发一个曼德博集合屏保的新版本,但浮点数精度不够用 - 简单的double类型对我的需求来说没有足够的有效数字。
更多有效数字 = 更大的分形缩放级别
回到我在Delphi 7中编写该屏保的时候,我使用了80位大小的extended浮点类型。
在.NET中,我可以切换到decimal,但这会带来可怕的性能影响,将分形生成速度减慢约20倍。
有没有.NET的扩展等效物?或者,是否有比双精度浮点数精度更高但仍使用FPU进行评估并因此不具有十进制数的高性能损失的数字类型? 更新 我的屏幕保护程序已经成功将分形缩放多个(很多!)数量级;当前仅当使用的数字类型无法分离相邻像素的纵坐标时,它才会重置为基本分形。来自双倍扩展改进的额外16位精度将使我获得接近16倍的大小。
至于性能,与计算许多像素的天真实现相比,我的算法已经成功消除了95-99%的所需数学运算,同时保留了分形的完整性。
更多有效数字 = 更大的分形缩放级别
回到我在Delphi 7中编写该屏保的时候,我使用了80位大小的extended浮点类型。
在.NET中,我可以切换到decimal,但这会带来可怕的性能影响,将分形生成速度减慢约20倍。
有没有.NET的扩展等效物?或者,是否有比双精度浮点数精度更高但仍使用FPU进行评估并因此不具有十进制数的高性能损失的数字类型? 更新 我的屏幕保护程序已经成功将分形缩放多个(很多!)数量级;当前仅当使用的数字类型无法分离相邻像素的纵坐标时,它才会重置为基本分形。来自双倍扩展改进的额外16位精度将使我获得接近16倍的大小。
至于性能,与计算许多像素的天真实现相比,我的算法已经成功消除了95-99%的所需数学运算,同时保留了分形的完整性。