Skip to content

Philosophy

Andy Zhang edited this page Jun 18, 2024 · 1 revision

Philosophy of this project

Background of this project

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.

Important points to consider

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

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