1.8 KiB
1.8 KiB
Project rules — RPN Virtual Calculator
- Build a browser-friendly RPN calculator as a JavaScript class, preferably in a single file.
- Keep code names, categories, and API identifiers in English.
- Use only read-only / generic public API methods:
push,pop,clear,swap(index1, index2),remove(index),edit(index),isValidIndex(index),input(command), andcommand(name, ...args). - Expose
inputValueas a string andisEditingas a boolean. - Constructor options:
maxSize(default2048)base(default10)angleMode(degdefault; alsoradandgrad)enabledCommands
- Available constants:
pi,e. - Supported operations must be centralized in one dictionary containing at least:
argCountcategoryaliases
- Allowed categories are limited to:
Stack,Arithmetic, andTrigonometry.
Supported commands
- Current commands:
add,sub,mul,div,mod,pow,sqr,neg,sqrt,recip,sin,cos,tan,asin,acos,atan,log,ln,dup,drop,swap,clear,enter
- Aliases:
+,-,*,/,%,^,y^x,1/x
Behavior rules
modis the percentage operator:a b % => (a * b) / 100sqrt,asin,acos,log, andlnmust throw clear, explicit domain errorslogusesMath.log10lnusesMath.log- Trigonometric functions use degrees in the demo:
sin,cos,tanconvert degrees to radians- inverse trig functions return degrees
inputValuemust remain a string to preserve future hexadecimal input support- The example HTML must group buttons by
Stack,Arithmetic, andTrigonometry - The example HTML must call
command(...)for actions
Maintenance
- Keep this file updated after each project change using the provided editing tools.