This repository is used for teaching purposes at the University of Mons. It contains Java code for computing arithmetic expressions. The code uses design patterns and is accompanied with JavaDoc, unit tests and BDD scenarios. We have also paid particular attention to code quality.
Describe the new functionality you would like to see
The current calculator is too basic, since it only provides support for +, *, / and -. Many other types of mathematical operations are useful and needed for a full-fledged calculator. To get more inspiration for other types of operations one can also look at what typical scientific calculator machines provide. One could for example rely on java.lang.Math to implement other basic numeric operations, such as the power function, exponential, logarithm, square root, and all trigonometric functions (sin, cos, tan, their inverses and more). Which types of operations to provide will depend on the types of numbers supported by the calculator.
[x] For the real number domain, it would be desirable to implement at least the following functions: logarithm, square root, all trigonometric functions (e.g., sin, cos, tan, their inverses and more), the inverse function (1/x), and support for frequently used constants such as e and Pi.
[x] For the integer number domain, it would be desirable to implement support for modular arithmetics.
[x] Regardless of the considered number domain, it would be useful to implement a pseudorandom generator. For the integer number domain: Given an integer as input, the random generator will provide a random integer between 0 and the integer provided as input. For the real number domain: No value needs to be provided as input, the random generator will always provide a real value between 0 and 1.
[x] For testing purposes, it should be possible to give a random seed to the random generator can be tested deterministically.
Describe the new functionality you would like to see The current calculator is too basic, since it only provides support for +, *, / and -. Many other types of mathematical operations are useful and needed for a full-fledged calculator. To get more inspiration for other types of operations one can also look at what typical scientific calculator machines provide. One could for example rely on java.lang.Math to implement other basic numeric operations, such as the power function, exponential, logarithm, square root, and all trigonometric functions (sin, cos, tan, their inverses and more). Which types of operations to provide will depend on the types of numbers supported by the calculator.