dave-hudson / c8 Goto Github PK
View Code? Open in Web Editor NEWC++ "calculate" big number library
License: BSD 3-Clause "New" or "Revised" License
C++ "calculate" big number library
License: BSD 3-Clause "New" or "Revised" License
Add code coverage analysis so that we can check that there is 100% coverage at all times.
The original thought was that there might need to be specific enum classes for each numeric type, but this now seems unlikely and they can all be merged together. The change will simplify some of the code.
Make it easy to test everything.
Add ++ and -- (both pre and post versions) to the natural number support.
We want to be able to take a rational number and round it to some level of significance. This will be useful for converting floating point approximations into more precise rationals.
Support fast multiplies by powers of 2, converting these into left shift operations.
Add a c8::scale10 class that handles power-of-10 scaled numbers
When multiplying, say, 2 digits by 2 digits, we can unroll a lot of operations and make things run much faster.
The current c8::rational::to_double() code can't handle the generation of denormalized floating point results, whereas the constructor for c8::rational will accept them. Correct this discrepancy.
Add function to convert c8::natural to unsigned long long, if it will fit. Throw an overflow exception if it will not fit.
Change the makefile design to support VPATH and the building of code in a different directory to the sources. This makes it much easier to build multiple versions of the software with different build options and run regression tests against each one.
In the *_check tests we are not just measuring the time to invoke the operation under test, but we're also measuring some of the overheads of timing things. Need to add a "nop" test that will compute the overhead and subtract it out from the other tests.
Add the bit shift operators. In some ways it's a little odd to have these, but it keeps things consistent.
Add pre and post operator variants
Each object class needs the ability to be constructed from a serialized buffer. Similarly, each needs the ability to serialize its state into a buffer.
It will sometimes be useful to get the size of a natural in digits.
Rather than using std:: exception types, the library should use new c8:: types. This will allow the exception types to be precisely specified.
Add a c8::scale2 class that handles power-of-2 scaled numbers
Handle this in the outer layers, rather than the inner layer as this is more consistent with the latest design thoughts.
Support fast divides by powers of 2, converting them into right shifts.
Add unit tests for this function, in the same way as c8::natural.
Add support for a c8::rational class that supports rational numbers.
Add a function to convert a c8::rational to a double, if it will fit. If it won't fit then throw an overflow exception.
This will inevitably lose precision, but that can't be helped.
Add function to convert c8::natural to unsigned long long, where the natural number will fit. Throw an overflow exception if it does not
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.