cas-703-project's People
cas-703-project's Issues
Definable tolerance for “Real” numbers
When comparing real numbers, we should allow the user to define a tolerance value for equivalence of reals. Otherwise, equivalence of calculated real numbers will be nearly impossible.
Constraint: each calculator should have a unique set of symbol 'name's
Add "if" expressions
Constraint: all outputs should have at least one related `AssignmentStep` to make sure that they are indeed given values
TertiaryExpression has only two expressions
I should have 3 expressions. One of them for condition and two for if and then.
Markdown renderer
The markdown renderer should give basic information about the calculator, the algorithm employed, and all symbols.
Feature: Calculator simulation
We should add the simulation/evaluation @hassanzaker proposed.
Equality of reals should have a tolerance (e.g., "up to 0.001 difference")
Constraint: Each intermediate symbol should be assigned at least once
Build IDE tools
More expression operators
- Absolute value for numerics
-
sin
,cos
, andtan
for numerics -
round
,ceil
, andfloor
for real -> integer conversions -
itor
for integer -> real conversion
Unit support for numeric types
Constraint: each assignment step should be well-typed (the variable type vs the expression type)
Constraint: each calculator should have a non-empty set of inputs and outputs
Add "while" loops (calculation step)
Connecting calculators
If calculator 1 has output set A, and calculator 2 has input set subset of A, then we should be able to 'connect'/compose the calculators into 1 big calculator.
Add critique: each calculator should have a 'description' field set
Add `BinaryOp`s for Modulus, Greaterthan, GreaterEqual, Lessthan, LessEqual, and NotEqual
Also, add Modulus, Greatethan, GreaterEqual, Lessthan, LessEqual, and NotEqual.
Originally posted by @hassanzaker in #26 (comment)
Write “code” renderer
We should write a “code” renderer in some programming language. It might be good for us to avoid Java, and go to something else.
What are our "requirements"?
Specifically, we should know our:
- "must have" requirements,
- "nice to have" requirements, and
- "we wanted, but not enough time/too difficult" requirements.
Prospective code snippet:
calculator potato with
symbols
constants
x = 4 : Real m
y = 10 : Real kg
inputs
n : Integer ~ Number of items
a : Vector (Real m) n ~ Items
intermediates
b : Real m ~ Sum of items
outputs
c : Real m ~ Sum of items, doubled
steps
b = sum(a)
c = 2 * a
Vector support
Add expressions to print steps instead of just variables
Feature: Test cases
We should have a syntax for defining test cases on the calculators. This should rely on the simulation to make sure that the calculator is actually ok.
Constraint: Each calculation step should only work with symbols that have already been calculated earlier in the program
Constraint: Each output should have at least 1 corresponding assignment step
Add division operation to metamodel
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.