(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.