An old trick rediscovered: combining conditional tests - Printable Version +- HP Forums (https://archived.hpcalc.org/museumforum) +-- Forum: HP Museum Forums (https://archived.hpcalc.org/museumforum/forum-1.html) +--- Forum: Old HP Forum Archives (https://archived.hpcalc.org/museumforum/forum-2.html) +--- Thread: An old trick rediscovered: combining conditional tests (/thread-229076.html) An old trick rediscovered: combining conditional tests - Dieter - 08-12-2012 Namir's post re. "question to TI58/59 programmers" reminded me of the olden days when the average calculator nerd had a comprehensive programmer's toolbox at hand, containing numerous clever ways to overcome the restrictions of the devices that were available at that time. One of these tricks is the combination of conditional tests, one followed by another. Such a combination allows the construction of logical operations that are usually not available on programmable calculators, making programs shorter, faster and more elegant. For instance, two consecutive tests A and B set up a logical disjunction, i.e. the combination behaves like an OR operator, leading to a test (NOT A) OR B. Or, the other way round, if you want to test if condition A or condition B is true, simply use the test for (NOT A) directly followed by B. Example 1: The sequence... ```FC? 01 FS? 02 ``` ...tests if Flag 01 or (!) Flag 02 is set. In a similar way, this helped back then to build those tests commands that were not available on contemporary hardware. Even the HP-41 did not feature a X>=Y? test, but this could be accomplished easily: According to the mentioned rule, a test like "X=Y? OR X>Y?" is equivalent to the sequence... ```X!=Y? X>Y? ``` Or, if you prefer, ```X<=Y? X=Y? ``` Such a combination of two tests can also be used to invert a test command. Simply make sure the second command always tests false. According to the stated rule, this is equivalent to (NOT A) OR FALSE, which in turn is logically the same as NOT A. On the HP-41, flag 54 (only set during a PSE command) may be used for the always-negative test. For instance like this: Example 2: The already mentioned X>=Y? test missing on most classic HPs is equivalent to NOT(X