I was busy with implementing the big number feature for a while. Now I have finished initial implementation into the NeonCore natively for sake of it's monolithic, compact design. Implementation had done in a short time but I had spent much more time than the implementation time for testing and fine tunings etc to make sure everything is ok. But i still have to do many things to make the big number implementation stable. So if you working with the numbers, you have to be very careful what you have done. Tiny mistakes might cause huge problems.
NeonLight (which is the compiler part of this project) recognizes the big number literals and converts them into the neoncore's bignumber object.
NeonCore's Bignumber feature has following properties:
- Arbitrary size Integer and Floating point numbers
- High-precision for floating point ops
- Bitwise operations
- Arithmetic operations on the native bits
For example, NeonCore's bignumber implementation has a function for calculation of the Greatest common divisor. It uses binary-GCD algorithm to calculate GCD very fast. And naturally, that algorithm requires heavily bitwise operations.
So the GCD calculation uses these properties internally.
I have done some benchmark test using two 4096 bit long numbers to see performance result. As you can see the GCD calculations were done in 56 milliseconds in average. I'm still doing code enhancements, optimitizations, tricks and such like these to make it stable and efficient. In some of cases the bignumber implementation is promising but in general it's not ideal yet.