XMunkki/FixPointCS

Is this library ready for production code? What about FixedMath.Net?

DasOhmoff opened this issue ยท 1 comments

Hello ๐Ÿ‘‹, thank you for your support.

I noticed that this libraries version is 0.3, does that mean that is not fully developed yet? Is this library ready for business production code, without it having to be altered by us?

Also there is another library that is accessible through the nuget package manager: https://www.nuget.org/packages/FixedMath.NET/. Its github link: https://github.com/asik/FixedMath.Net. Do you guys know this library, if so, what can you tell me about it, should it be used for production code instead? Is there a problem with this library, and that is why you are creation yours?

The library is solid and has been used in multiple projects in production, so it's definitely safe to use in that sense.

The pre-1.0 versioning is mainly there to indicate that it's still a fairly young project and there can be changes that change the outputs of the methods. For example, if a better/faster way is found to implement a method, those are still occasionally updated into the library with a corresponding version bump. So you'll just have to be careful to make sure you are using the exact FixPointCS version where determinism matters across devices/systems.

For now, there is no NuGet package. The library is very easy to add to your project by just copying a few files. The library is also multi-language, so NuGet would not work across languages anyway. We might split the C# high-level math library to its own repo at some point and then the NuGet package would also make more sense.

I'm obviously biased with the comparison, so take it with a grain of salt, but I do consider this library significantly better:

  • FixPointCS has multiple precisions (16.16 and 32.32). FixedMath.Net is only 32.32.
  • FixPointCS is supported across multiple languages: C++, C#, Java. FixedMath.Net is only C#.
  • FixPointCS supports a much larger set of functions.
  • FixPointCS is significantly faster (this is based on memory of some ad hoc benchmarking I did earlier, so I recommend doing your own benchmarking as well).