(11-21-2020 07:53 PM)radulle Wrote: [ -> ]Implemented decimal math using decimal.js library.
Nice work. But decimal type may need some work.
https://rpncalcplus.web.app/ issues:
- "PI 1e15 *" gives error "maximumFractionDigits value is out of range"
- LN not working, "100 LN" gives 2, same as "100 LOG"
- 10^X not working. "100 10^X" give 10, then "LOG" crashed: "[DecimalError] Invalid argument: 10^x"
- Infinity ≠ Infinity. "1E99 X^2" gives Infinity, taken "LOG" gives back 99*2 = 198
- "10 E LOGxy STO" (≡ LN(10) ≈ 2.302585092994), then "RCL", calculator freezed.
(unable to enter new numbers).
The upside is we have *huge* expoenent range. (note: we avoid using the bad 10^X)
"2.302585092994e15 E^X LOG " → 999,999,999,999,980
Decimal type have 20 digits mantissa, 15 digits exponents.
(11-22-2020 01:40 PM)Albert Chan Wrote: [ -> ] (11-21-2020 07:53 PM)radulle Wrote: [ -> ]Implemented decimal math using decimal.js library.
Nice work. But decimal type may need some work.
https://rpncalcplus.web.app/ issues:
- "PI 1e15 *" gives error "maximumFractionDigits value is out of range"
- LN not working, "100 LN" gives 2, same as "100 LOG"
- 10^X not working. "100 10^X" give 10, then "LOG" crashed: "[DecimalError] Invalid argument: 10^x"
- Infinity ≠ Infinity. "1E99 X^2" gives Infinity, taken "LOG" gives back 99*2 = 198
- "10 E LOGxy STO" (≡ LN(10) ≈ 2.302585092994), then "RCL", calculator freezed.
(unable to enter new numbers).
The upside is we have *huge* expoenent range. (note: we avoid using the bad 10^X)
"2.302585092994e15 E^X LOG " → 999,999,999,999,980
Decimal type have 20 digits mantissa, 15 digits exponents.
Albert Chan & EdS2, thank you very much, I went with a presumption that JS Math's methods worked in the same way as Decimal's which is not the case (e.g. LN vs LOG), I will definitely have to explore this new library more and iron all the issues.
Due to current calculator like design I limited exponent to two digits, do you find use of a very large exponent?
For trigonometric functions that return very small values (e.g. sin(0) and cos(pi/2) give less than 10E-16) would it be correct to return zero?
Hello!
You made a nice job.:-)
I belong to the kind of people that have difficulty with RPN.
During my college time I used HP48 for programs, plots, matrixes
and a Casio for numeric expressions.
However, I use RPN to program the HP50/49/48.
A similar thing that happens is that I don't use Linux at home, however
all sites that I made till today, are hosted in Linux servers.
I made a javascript Calculator, take a look,
http://area48.com/calculator.html
I'm a mix of Saru and Linus, from Star Trek Discovery:-)
Saru and Linus
l
(11-22-2020 04:51 PM)CMarangon Wrote: [ -> ]You made a nice job.:-)
I made a javascript Calculator, take a look,
http://area48.com/calculator.html
Thank you, conversion utils seem very useful and web site as a whole is very rich in information.
(11-22-2020 01:40 PM)Albert Chan Wrote: [ -> ]https://rpncalcplus.web.app/ issues:
- "PI 1e15 *" gives error "maximumFractionDigits value is out of range"
- LN not working, "100 LN" gives 2, same as "100 LOG"
- 10^X not working. "100 10^X" give 10, then "LOG" crashed: "[DecimalError] Invalid argument: 10^x"
- Infinity ≠ Infinity. "1E99 X^2" gives Infinity, taken "LOG" gives back 99*2 = 198
- "10 E LOGxy STO" (≡ LN(10) ≈ 2.302585092994), then "RCL", calculator freezed.
(unable to enter new numbers).
These were great finds, I will be sure to add them to unit tests when I get to them (for this purpose I moved all calculation logic to calc.js).
Issues:
- I had an issue with my own number formatting, fixed for now, but I'll explore if I can use decimal.js for this too to justify the bundle size bump.
- JS Math.log used base e while Decimal.log used base 10
- 10^x was a silly mistake by me where JS was parsing it as a number instead of a command
- Infinity issue should be fine now as I reduced decimal.js exponent to +/- 99
- Should be fine now
(11-22-2020 04:15 PM)radulle Wrote: [ -> ]For trigonometric functions that return very small values (e.g. sin(0) and cos(pi/2) give less than 10E-16) would it be correct to return zero?
Ideally not, because of the wonderful behaviour of sin(x) near pi:
sin(3.1415) -> 0.00009265358966
sin(3.1415926535) -> 8.97932384626434e-11
About the keyboard shortcuts: I was surprised to see S for sin and s for arcsin. Why this way around? My intuition led me to expect the unshifted key to perform the forward function.
(11-23-2020 09:57 AM)EdS2 Wrote: [ -> ]About the keyboard shortcuts: I was surprised to see S for sin and s for arcsin. Why this way around? My intuition led me to expect the unshifted key to perform the forward function.
I see your point, but it is because of the shift keyboard shortcut which is used to reveal that set of keys.
In the meantime I upgraded most of the libraries used, tested it and it seems fine, but if you notice anything strange. Decimal.js seems fine for now.
(11-04-2020 04:33 PM)radulle Wrote: [ -> ]I really hope you take some time try it out, enjoy it and give feedback what should be improved or if you notice any bugs.
Nice calculator.
The only thing I noticed is that the
over key does a
rot instead.
(07-24-2022 10:01 AM)Thomas Klemm Wrote: [ -> ] (11-04-2020 04:33 PM)radulle Wrote: [ -> ]I really hope you take some time try it out, enjoy it and give feedback what should be improved or if you notice any bugs.
Nice calculator.
The only thing I noticed is that the over key does a rot instead.
Thank you, I must have overlooked, will check it out and report when fixed.