-
Notifications
You must be signed in to change notification settings - Fork 1
Philosophy
This project is a collection of step-by-step algorithms to perform calculation. The main purpose is to perform arithmetic on strings. The algorithms are implemented in C++, and are all working in progress.
While developing this project, the following must be considered:
-
Range - The range of the numbers is important. Integers and decimals can overflow when the input gets too large. Therefore, when designing new components, keep in mind that the project needs to deal with inputs of unknown magnitude, and needs precision up to unknown decimal places. Perform string-integer conversion only when necessary.
-
Accuracy - The algorithms needs to be selected carefully to allow precision up to 20 decimal places. If a single algorithm cannot achieve such a level of accuracy, try using others, or take multiple approximations.
-
User-friendliness - Steppable focuses on step-by-step calculation, so explaining is important. Try to provide more information for fundamental operations, like basic arithmetics, for users to get some idea on what is going on. For example, explain why multiplication with
a = 0, b = 2
produces 0. Give out suitable amount of steps if possible. -
Speed - Although speed is not our major point of concern, it is still important. Try not to make the component hang too long for small inputs. Save time by quickly returing results of special inputs, for example, return 0 when calculating
sin(0)
.
Copyright (C) Andy Zhang, 2023-2024. Licensed under the MIT License.
- Getting the Source - Cloning the repository to your local machine
- Build the Project (CMake) - Compiling the source code of Steppable using CMake
- Build the Project (build.py) - Compiling the source code of Steppable using build.py
- Workflow - How to contribute to this repository
- Coding Style (Python) - Style guidelines for Python code in this project
- Coding Style (C++) - Style guidelines for CPP code in this project
- Directory Structure - The directory structure used by this project.
- Using the API - How to use the Steppable API
- Supported Platforms
- Performance - Some benchmarks of Steppable for reference
- Status - Status of Steppable, at a glance