-
Notifications
You must be signed in to change notification settings - Fork 1
FAQ
Note
Please read this document before asking a question in discussions. Your question may be answered here already.
Please expect the project to be functional before 2028.
Welcome to our project! We are glad that you are interested in contributing to our project.
You can:
-
Write / modify code If you can code in C++ at an intermediate level, it should be easy to contribute to this project. You can also refer to the "Development" section under "Contributing" to learn more. We are currently looking for:
- More components
- Better accuracy
- An expression parser.
When you are done, please open a pull request in order to contribute to the project, and we will review it as soon as possible.
-
Propose If you know any functions that are not yet implemented by this project, you can let us know by opening an issue (feature request).
-
Translate If you know a language that is not yet added to this project, you can translate our components! We are now looking for:
- French
- Spanish
- Simplified Chinese (Mainland China)
- Russian See the Translations page for more information.
Most importantly, we hope you will enjoy using this project and have fun coding!
We found that there is no better nor simpler method of writing a step-by-step solver than imitating how a human would solve it. So we wrote a parser that converts the input into a tree, and then we wrote a calculator that solves the tree step by step. Finally, the reporter shows the steps and results to the user in a human-readable format.
Currently, only the calculator and the reporter are implemented, with very limited functionality. Here is a list of what we are planning to implement next (and in the near future):
- Parser
- Calculator and reporter (all the major functions)
- API for numbers
- Comparison of integers and decimal
- Addition of integers and decimals
- Subtraction of integers and decimals
- Multiplication of integers and decimals
- Powers of integers and decimals
- Division of integers and decimals
- API for fractions
- Addition of fractions
- Subtraction of fractions
- Multiplication of fractions
- Simplification of fractions
- Division of fractions
- Conversion between fractions and decimals
- Calculus
- Numerical Integration
- Symbolic Integration
- Numerical Differentiation
- Symbolic Differentiation
- Factorials
- Logarithms
- Trigonometric Functions (
$\sin$ ,$\cos$ ,$\tan$ ,$\arcsin$ ,$\arccos$ ,$\arctan$ ...) -
atan2
- Expansion of polynomials
- Factoring of polynomials
- API for numbers
The parser is the most difficult part of the project, so we will start with the calculator and reporter first. When implemented, it will probably call the calculator(s) (which is/are compiled into executable format together with the reporter) and then show the result to the user.
This project attempts to make a CAS that solves problems like a human does. It even adds, subtracts, multiplies, and divides using the column method. This is because we believe that a CAS should be able to solve problems step by step, so that the user can understand how the problem is solved.
This is not a CAS intended for high-performance computing. This is because the basic arithmetic operations are much more time-consuming than the plain old +
, -
, *
, and /
(around 10 times slower). The amount of coding needed for high-performance computing would take a considerable amount of time to design, program and debug. We may try it after we this CAS is fully functional.
See the Performance Page for more information.
Out of this list, we could not find a CAS that is:
- Free and open source
- Solves step by step
- Runs even without internet connection
- Has no external dependencies (including BigNum libraries)
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