6 ms·
> The Windows calculator percent sign works the same way as those cheap pocket calculators I never understood how these cheap calculators worked. I'm glad most
by nextos 12y ago
> The Windows calculator percent sign works the same way as those cheap pocket calculators
I never understood how these cheap calculators worked. I'm glad most serious desktop calculator apps, like the OS X one, have a RPN mode. As a high schooler, my dad forced me to switch to RPN calculators when we began doing very lengthy calculations.
People thought I was a freak. But in retrospect, it was an awesome decision. With a stack, things are much simpler. You don't need those clumsy memory registers or parentheses, and all operators have a very simple semantics.
As a bonus point, an innocent looking HP15C implements or can implement quite advanced numerical methods. It was a secret retro weapon from the 80s when all they allowed were non-graphical calculators.
- lambdaelite 12y agoAfter years of using an HP, I am literally unable to use anything but RPN without significant conscious thought. I'm faster with pencil and paper (or an abacus!) than using a non-RPN calculator at this point.
- mintplant 12y agoAny recommendations for a good RPN calculator on Linux?
- tokenrove 12y agoM-x calc in emacs
- lambda 12y agoI generally just use dc on the command line. Pretty bare bones, but gets the job done. M-x calc in Emacs is a very full-featured RPN calculator. On Android, I use Droid48, a great HP48 emulator: https://play.google.com/store/apps/details?id=org.ab.x48 https://play.google.com/store/apps/details?id=org.ab.x48 ; I also have RealCalc (https://play.google.com/store/apps/details?id=uk.co.nickfines.RealCalc https://play.google.com/store/apps/details?id=uk.co.nickfine...) installed, which I figured I'd use more due to the bigger buttons by default, but I still reach for Droid48 most often.
- acomjean 12y agoM-x calc is pretty awesome. I had no idea it was there.. (M-x tetris I had heard of) I use dc and bc on the command line. Some people have chided me saying the command line calculators aren't always accurate and are buggy, but I haven't seen any problems.
- lambda 12y agoReally? I haven't heard of any bugs in the command line calculators. Do you know what kinds of bugs they were talking about? One thing to note is that they use arbitrary-precision decimal arithmetic (well, base-100 arithmetic internally, but that's equivalent), rather than fixed precision binary floating point arithmetic, so that may surprise some people (though it also reduces surprise for those who expect decimal arithmetic). Interesting tidbit, it seems that dc is the oldest language on Unix; it was ported before even an assembler was. (https://en.wikipedia.org/wiki/Dc_%28computer_program%29#History https://en.wikipedia.org/wiki/Dc_%28computer_program%29#Hist...)
- acomjean 12y agoI did some digging. it was in this thread in a comment about bc and exponents (although I can't use a non rpn calculator on computers I just tend to type the formulas in): https://news.ycombinator.com/item?id=5054618 https://news.ycombinator.com/item?id=5054618 a couple of replies to my comment there about exponents. specifically. "bc is a pretty misleading calculator, without specifying rounding it thinks 2^(40/1.5) is 67108864. It's not even close. If you trust your finances to that, you could get in trouble. "
- lambda 12y agoAh, thanks for digging that up. I was not aware that they didn't support fractions in exponents; I don't think I had ever tried them for that. Luckily they do give warnings, though only if you have already set the precision (via "bc -l" or something like "10 k" in dc). Sadly, since dc doesn't have a math library, it looks like you can't use the "e" function workaround unless you implement it yourself.
- SixSigma 12y agoforth
- lultimouomo 12y agoI use galculator quite regularly, it has a pretty decent RPN mode.
- cbd1984 12y agoMy HP-48GX is just as secret-weapon-ish in its fierce programmability. ;) I'm pretty sure you can access every feature the calculator has from its stack, which means they're all available for use in programs; it also comes with a nice equation library full of physics equations with helpful diagrams and information about what various variables are. Quite amazing for the time, and still very useful. It's frugal with batteries, too.
- copperx 12y agoThe HP-48G is a lovely machine, although it's quite slow. Is the HP-48GX better? Graphing anything takes ages.
- Luc 12y agoIt's got more memory, though I ended up buying a RAM expansion card as it still wasn't enough. The GX supposedly got the faster processors for a while, until the yield got good enough to also put them in the G models.
- InclinedPlane 12y agoThe gx is better. Also, running an emulator on a modern smartphone is even better. I still have my 20+ year old hp48 sitting in my desk drawer though.
- userbinator 12y ago> I never understood how these cheap calculators worked. They are usually based on the two-register model, or at least the very very simplest ones: one accumulator, R, holds the "result"; another accumulator, I, holds the input. The button CE clears I to 0, and C clears R to 0. The display always shows the contents of the most recently modified accumulator. An "operation" register, O, contains the most recently pressed operation button and is initially the null operation. Inputting digits/decimal points modifies I. Whenever +, -, , / are entered, it performs R = R O I and then sets O to the new most recent operation. When '=' is pressed, R = R O I without changing the most recent operation. This is why sequences like 1+2+54= gives 32, and then '=' again will multiply 32 by 4, etc. This type of calculator is easy to identify because it has no notion of operator precedence and always evaluates in the sequence it's given, and furthermore doesn't actually require an '=' key - observe that if e.g. you input 2+2-, 2+2+, 2+2/, or 2+2*, the display already shows 4 because entering the last op has caused the previous op + to be evaluated giving R += I, and the display shows the new value of R. Those with a "memory" function add another accumulator, M. Then the operation MC is M=0, M+ performs M+=R or M+=I (depending on the currently displayed register), M- is M-=R or M-=I, and MR is I=M.
- userbinator 12y agoAlso, in terms of this register machine the percent key performs the operation I = R * I /100, and modifying I causes the display to show the new value of I just like the article mentions: When the user enters a value, an operator, a second value, and then the percent key, the first two values are multiplied and the product divided by 100, and that result replaces the second value in the ongoing computation. If you watch the display as you go through this exercise, you will even see the number 3.6 appear in the display once you press the % key. The percentage is calculated and replaces the original value in the ongoing computation.
- cbhl 12y agoHacker News uses asterisks for italics. Consider replacing some of them with 'x'es.
- thaumasiotes 12y agoI used to have a cheap pocket calculator, but what I determined through experimentation was that pressing % caused whatever number was on the display to be immediately divided by 100. It's possible, I guess, that I just never found out how to use % in the intended manner, but it was pretty surprising to me to see it referred to as common knowledge that four-function calculators were supposedly doing magic with the % key behind the scenes.
- sliverstorm 12y agoWith a stack, things are much simpler. Exactly how I feel about MtG (end tangent)
- PebblesHD 12y agoI've always found it best to stick with a pleasent middle ground. I use a Casio fx82au-plus and it has enough complexity and functionality to suit my needs whilst behaving as expected when anyone in the office asks to borrow a calculator. Otherwise, my iPhone is perfectly capable...
- Dylan16807 12y ago>With a stack, things are much simpler. You don't need those clumsy memory registers or parentheses You can prefer RPN all you like, but to think it's objectively better and that parentheses are flat-out bad is crazy. It's a tradeoff. The action of each key is slightly simpler, but you are forced to reorder your equation to change operator application. Sometimes this means keeping track of fewer parts, but sometimes it means keeping track of more.
- jonsen 12y agoTry this on a non-RPN calculator 3 + 4 7 + 8 ----- + ----- 5 + 6 9 + 2
- Macha 12y ago<fraction button> 3 + 4 <down> 5 + 6 <right> + <fraction button> 7 + 8 <down> 9 + 2 = (19 button presses) Or: ((3 + 4) / (5 + 6)) + ((7 + 8) / (9 + 2)) (27 button presses) vs on RPN: + / + 3 4 + 5 6 / + 7 8 + 9 2 (I think? I don't use RPN) (15 button presses) I guess 19 vs 15 button presses is a tradeoff I'm willing to make for easier understanding.
- jonsen 12y agoRPN: 3 (enter) 4 + 5 (enter) 6 + / 7 (enter) 8 + 9 (enter) 2 + / +
- DougBTX 12y agoSo 19 presses too, that's got a nice "essential complexity" feel to it.
- jonsen 12y agoFine, if you can "paint" the full equation on your calculator. But on simpler calculators people may have a hard time getting it right. 3 + 4 = / ( 5 + 6 = + ( 7 + 8 ) / ( 9 + 2 =
- 12y ago
- PhantomGremlin 12y ago> I'm glad most serious desktop calculator apps, like the OS X one, have a RPN mode I've loved RPN since around 1973 when I paid $395 (plus 7% tax) for an HP-45. I still have an HP-42S that I use. However, I often find it easier in OS X to just type "python" and go from there. I love Python as an interactive interpreter. It's easy to give good names to intermediate variables. Functions are easily created, starting with "def ...". Etc. But this works for me because I rarely need sin(), cos(), or stuff like that. It would get tedious to load the Python math functions, to remember the exact spelling of a function. A calculator is good for that, because the keys are right in front of your face. Can't miss 'em.
- glogla 12y agoExactly. I long time used bc or bc -l but python is more flexible, and with readline, much more practical than button based calculator.
- kelnos 12y agoBut this works for me because I rarely need sin(), cos(), or stuff like that. It would get tedious to load the Python math functions, to remember the exact spelling of a function. Most of these are pretty easy -- just do "from math import *" and then you have sin(), cos(), etc. imported into the root namespace. If you want to explore, you can use something like bpython, do "import math", and just type "math." and it'll pop up a little window showing you the possibilities.