Skip to content
Andy Zhang edited this page Aug 11, 2024 · 4 revisions

Frequently Asked Questions (FAQ)

Note

Please read this document before asking a question in discussions. Your question may be answered here already.

When can the first release be made?

Please expect the project to be functional before 2028.

How can I help?

Welcome to our project! We are glad that you are interested in contributing to our project.

You can:

  1. 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.

  2. 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).

  3. 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!

How does it work?

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

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.

What is this?

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.

What this is not?

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.

Why another CAS?

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)

Contents

Introduction

Contributing

Building

Development

API Documentation

Others

  • Performance - Some benchmarks of Steppable for reference
  • Status - Status of Steppable, at a glance
Clone this wiki locally