A desktop calculator built for precision.
Go to file
Danila Fedorin ac17246317 Fix bug causing incorrect parsing of inputs with negative signs. 2018-01-30 21:10:02 -08:00
core Fix bug causing incorrect parsing of inputs with negative signs. 2018-01-30 21:10:02 -08:00
docs Decrease the padding and margins on small screens. 2017-09-07 16:22:15 -07:00
fx Load definitions after Abacus finishes loading. 2017-11-23 23:00:33 -08:00
gradle/wrapper Generate the application configuration for abacus. 2017-07-28 18:45:56 -07:00
image Add a logo. 2017-08-30 15:14:08 -07:00
.gitignore Add a more complete .gitignore 2017-09-16 00:17:03 -07:00
.travis.yml Add a .travis.yml to run TravisCI tests. 2017-07-29 23:29:10 -07:00
LICENSE Initial commit 2017-07-24 09:30:08 -07:00
README.md Update README.md 2017-07-30 14:04:24 -07:00
RESOURCES.md Update RESOURCES.md 2017-07-26 14:53:52 -07:00
build.gradle Add dokka plugin to generate documentation. 2017-08-27 15:47:32 -07:00
gradlew Generate the application configuration for abacus. 2017-07-28 18:45:56 -07:00
gradlew.bat Generate the application configuration for abacus. 2017-07-28 18:45:56 -07:00
settings.gradle Split the project into separate modules. 2017-08-12 21:11:01 -07:00

README.md

abacus

Build Status

Summer project for NWAPW. Created by Arthur Drobot, Danila Fedorin and Riley Jones.

Project Description

Abacus is a calculator built with extensibility and usability in mind. It provides a plugin interface, via Java, as Lua proves too difficult to link up to the Java core. The description of the internals of the project can be found on the wiki page.

Current State

Abacus is being built for the Northwest Advanced Programming Workshop, a 3 week program in which students work in teams to complete a single project, following principles of agile development. Because of its short timeframe, Abacus is not even close to completed state. Below is a list of the current features and problems.

  • Basic number class
  • Implementation of basic functions
  • Implementation of exp, ln, sqrt using the basic functions and Taylor Series
  • Plugin loading from JAR files
  • Regular expression pattern construction and matching
  • Infix and postfix operators
  • Correct handling of postfix operators (12+!3 parses to 12!+3, which is wrong)
  • User-defined precision

Project Proposal

There is currently no calculator that is up to par with a sophisticated programmer's needs. The standard system ones are awful, not respecting the order of operations and having only a few basic functions programmed into them. The web ones are tied to the Internet and don't function offline. Physical ones like the TI-84 come close in terms of functionality, but they make the user have to switch between the computer and the device.

My proposal is a more ergonomic calculator for advanced users. Of course, for a calculator, being able to do the actual math is a requirement. However, in this project I also would like to include other features that would make it much more pleasant to use. The first of these features is a wide collection of built in functions, designed with usefulness and consistency in mind. The second is scripting capabilities - most simply using Lua and its provided library. By allowing the users to script in a standardized language that isn't TI-BASIC, the calculator could simplify a variety of tasks and not have to clutter up the default provided functions with overly specific things. Lastly, it's important for the calculator to have a good design that doesn't get in the way of its use, on the two major desktop platforms (macOS and Windows).

With these features I believe that this is a calculator that I would use (and frequently find myself wanting to use). It also seems to have a diverse array of tasks, such as UI design, implementing the math functions to be fast and optimized (fast inverse square root, anyone?), parsing code, and working with Lua integration.