MightyMath is on the way! Email: peter@roizen.com

The Spreadsheet with Calculation Trails instead of Algebraic Formulas

What can two trails do? The work of 100 formulas in a spreadsheet. The example lower down.

This program is a personal passion with roots that date back to a product named T/Maker that I wrote in 1979.

Thanks for the visit.



Inspiring Theme Song
And The Other One

FAQ Page

Videos (in progress)

MightyMath is written in java and runs on Mac / Apple Computers,  Windows, and a number of other platforms.

Working Version:  There is an "in progress" version available for download. Feel free to try it at this page link.

MightyMath can can solve a wide range of problems. You can do simple arithmetic on rows and columns that will bring back memories of elementary school. You can do more complicated calculations in the sequence order style of a hand calculator. You can even do simulations with logical branches and iterations. In all cases, you will never write a formula that requires a knowledge of mathematical precendence or relies on parentheses (aka, algebra).

MightyMath has different screens to do different tasks. The first five buttons on the toolbar shift between them--data only, calculation trails, formats, lines, and graphs. With a dedicated screen, tasks are quickly accomplished. For everyday math problems, it feels more like a paint program. Take this two minute look to get the idea. I misspoke about a "number format without any digits!" I hope to get better at this with some practice.

MightyMath can be used by most anyone to keep their books, forecast their future, prepare invoices, or compare alternatives that translate into numbers. The overhead of doing calculations is so minimal, it's worth firing up for a problem with just a few numbers.
It is not a replacement for use in the business world. But in your own world, you might find it more handy, quicker, and relaxing to use. With nothing hidden, it's less likely to produce a mistake.

You probably learned math by starting with addition in elementary school. From there you progressed to subtraction, multiplication, and, much harder, division. Along the way you solved problems expressed in this fashion.

   2    8    6   12     3    7
  +2   +9   -3   -8   x 8  x 9   

The first pocket-sized calculators in the seventies, picked up where this approach left off. A little window showed a current value in the calculator. To add 20, you could type 20 and push the plus button. You could continue with more values and more operators and more intermediate results to your heart's content. There was never a formula. This is a close model to the way MightyMath works. If you look at the "Simple Arithmetic" example you will see that putting a plus sign next to data cells adds the adjacent value to MightyMath's calculator.

All spreadsheets give cells a name based on their column/row intersection and (all but MightyMath) require a formula using those names. Parentheses are used in the standard approach to control the order of operations. That formula is put in the cell where you want the result to be. A formula of B1 + B2 would be put in B3 for the simple example, and the screen would show the value 7 instead of the formula.

The truth be told, you could have put "B1+B2=" in cell B3 in MightyMath. You could also have put "B1+B2=B3" in cell Q45 and got the job done. MightyMath tries to  accomplish calculations in the most simple, obvious way without rejecting possibilities. It's not ashamed to admit there is never a single best way to do everything.

The use of cell names and hidden formulae does, however, seem like overkill for this sort of problem.  In MightyMath, the calculation requested is written  in elementary school, visual style.
As well as little windows for the values (like everybody else),  MightyMath has little windows for the calculations as well.

Now suppose you wanted to do this same arithmetic across three columns to include neighboring fruit stands. A typical spreadsheet can modify the initial formula with a shortcut, so it can generate more hidden formulae to do a similar calculation in other locations. Thus cell C3 would get the formula C1 + C2 and cell D3 would get the formula D1 +  D2.

To MightyMath that seems like a deviation from common sense. What I personally like about MightyMath is that it represents my problem in the way I conceive it. It doesn't translate it into some other representation to suit itself.

Some quick terminology: The above calculation is called a trail. A trail  is composed of a series of ordered steps. Each step can have one or many operations to perform. They are numbered as you enter them, but you can change the order as needed. Some trails are entirely vertical or horizontal, but the steps in a trail can wander all over the place. A single trail can produce many results in different cells. It is not a formula which has a life span of only one equals sign.

In MightyMath, you can repeat a trail by designating other positions where step 1 is to be restarted shifting all the steps accordingly. This is done with a block cursor of the darker color shown that can be clicked or dragged over other green cells. So the MightyMath screen remains one trail only. The other green cells are empty. If some of you are ready to abandon ship, I would urge you to look further down the page. A common spreadsheet that would result in nearly 100 hidden formulas is reduced to 2 simple trails specified in the first 2 columns with numbers.

One of the nice things that came along with hand calculators was a button with an "M" on it. That stood for "memory."  In essence, it gave you a sort of second little window that you could not see. You could put a value into that window and fetch it back as needed. It was great for at least one intermediate result. Well, you can do the same thing in MightyMath, but you can pick your own name (with a few limitations), and you can have as many as you want.

Some syntax notes: A step in a trail, for the most part, contains a series of operators followed by an associated value (or NOT). For example. "/6" is in an instruction to divide the value in the calculator by 6, that's the value associated with the division sign. When an operator has no associated value, it is interpreted to reference the value to its right in the white data cell. Consider this "+/5*9+32". The plus sign has no associated value, so that is an instruction to pluck the value from the cell, add it to the calculator (assume zero for now), divide by 5, multiply by 9, and add 32. If the value in the cell was a temperature in centigrade, the value in calculator would now be the Fahrenheit equivalent.

Memories (in terms of syntax) are just associated values like the constants in the previous paragraph except they can also be used after an equal sign to store a value in them. You cannot put a constant number after an equals sign or it wouldn't be very constant. Here's the example used on the green board above:

Let's say I wanted to calculate the cost per square inch of something circular. And let's assume I am not interested in dedicating a cell in the table to hold the area.
Here's this solution: row 1 holds the diameter and step 1 calculates the area from it. Put the diameter in the calculator with the +  (no associated value here),  /2 to get the radius, ^2 to square it, *pi to multiply by pi (a built-in memory), and =area to put the result in the memory named "area." Step 2 puts the cost in the calculator, and step 3 divides it by the area and outputs the value to the cell (no associated value).

Memories help keep things simple and straightforward. And a memory name you choose is more intuitive than a raw cell name.  This trail uses no cell names which makes it an excellent template that can be reused with a click of the mouse starting from other locations.

Along with constants and memories, you will sometimes find a single letter used as the associated valued for an operator.. Most spreadsheets have rows that derive values for a row from data on that row.  The single letter refers to the column on the row the step is being used on. Here's our Per Inch example turned in another direction. I purposely put all the activity on a row that has no numbers and did the whole calculation in one step. It's not the way I would usually do this, but it highlights the utility of this feature.

The associated values that represent the values in the columns are the single, capitalized here, letters which are the column names. I did put the area in  a memory "sq".  Notice the step is defined on the row of headings, but only used on rows 2, 3, and 4. All this looks like it ought to be illegal, but it isn't.  MightyMath doesn't eliminate options for its own convenience. Let's summarize, the bread and butter associated values that you should know. Remember, no associated value means the adjacent cell.

1) J83 refers to column J, row 83 (BTW, if you delete or insert rows or columns ahead of J83 it will be adjusted.)
2) C refers to column C on the row the step is being used on (also adjusted under the above circumstances).
3) sq is a memory (as was "area" in the previous example).

Again, this is an excellent template to reuse without any ambiguity, because it makes no specific reference to an individual cell.

If you did not take the two minute look please do it now or do it again if you forgot it.

Some screens and explanations:

As you saw in the quick look, MightyMath has different screens to do different tasks that you can move through quickly. The calculating trails screen has two cells for each column as do the formats and graph screens. One holds the symbols. The other holds the data which can be edited on this screen as well. The top of the first screen below shows the Lite Assistor for trails from which symbols can be fetched as a cursor and clicked into place or more complicated commands can be built. You can also edit the green cells directly. There is a demo video on using this Assistor and another, more complete one on the videos page. (Link at top of this page)

This spreadsheet presumably belongs to a new car owner who wants to track his MPG. There are three trails shown below. Maybe a minute of work. You probably wouldn't have to write them all, but the typical spreadsheet would have 9 hidden formulae at this point.

When it came to adding a new row, you could select the last row above the total, choose Insert Cloned Row(s) from the Row/Col menu, and enter data. These trails would all be updated correctly as would formats, lines, and even any graphs you might have specified.  There is also a video of Cloning that uses the example of calculating means, standard deviations, and a correlation coefficient between two variables.

Below is the more weighty version of this Assistor. You can calculate a mortgage payment with six clicks. One on "mpy" to start the cycle, one on a cell with the amount, one on a cell with the interest rate, one on a cell with the years, and one on the cell where you want the result. Then one on the Compute button. A similar approach is used to calculate present value and growth rates. You will not, however, find the full variety of built-in functions of a long established spreadsheet.  It's not that you cannot calculate anything, it's just that you have to solve it yourself (at least for now).

full assistor

You can have multiple steps in a trail associated with the same cell.  When you click to edit a green cell that already has one or more steps,  you will get a choice for what to do. When editing a green cell, you can edit the step's symbols and/or its number if you want to change the order of steps.

You can also work from a list of all steps in a trail which is an easy way to review your trail in sequential order or modify a step with no questions asked. Just select the step and push the button of interest. The screen will be adjusted to show the correct step if you want to edit it assuming it is not already on the screen.

After a quick look at the other dedicated screens, there is a section at the end showing solutions to more challenging problems and a great tool that helps you find mistakes--the Debugger. I am hesitant to overwhelm anyone with solutions to problems that are beyond those they expect to encounter.
Setting formats is easy. There is an Assistor to create new ones, but most of the time you can get one directly from the formats toolbar. Get the cursor for it and paint it into the secondary cells (blue for formats). You can even select an area of cells and fill the whole area with a single click. The Assistor is shown in the screen below.

Decorative lines can make a table more understandable and attractive when you print it. You probably already have an idea how that might look. Again, you can paint with a cursor and/or fill areas. The screen is below. There are no symbol cells because you can see what's in place without them.
You can also show these lines on the data screen if you have developed some sort of app for others to use.


And then there are graphs which I probably should have called charts. What do you do? As expected! You get a cursor or fill an area with symbols that represent the content of those cells. Here L's are for labels and V's are for values. About 30 seconds of work. And there are always defaults for text elements, so you can just mark values to start with. Some charts allow up to three series of values so there are V1, V2, and V3 cursors. 
Actually there are bunch more cursors. It all depends on the type of chart you are making. When you click on the graph type, the parameter box will fill with the appropriate ones.  If you change the chart and have already specified values, Mighty Math will try to adapt the values of one chart to a different type. It's pretty good at that, but some situations are impossible--what to do with an X-axis on pie chart for example?

Here's the pie chart for the above effort.
The graphs, like built-in functions, are more limited than in a long established spreadsheet. But they can provide insight or help make a point like any others. And you can call them up from the data screen where you might be discussing some numbers that support your conclusion.


Here is the print box for tables (not graphs) which tells you how many pages wide and pages long the output will be. You can reset the parameters that affect the size and recalculate. If you are just interested in keeping historical paper records, you can save paper and ink this way. You can make some nice forms too--not that I want to contribute to the number of forms in the world! Here's a (scanned) invoice printed with some lines. New rows could be added by cloning so work could be done on the data screen only with additional rows cloned.


As you have seen, much is shared in the toolbars across all the screens and the same techniques are used in the performance of most tasks. That makes learning and remembering how things work so much easier. The simple calculation stuff is a knack you can learn quickly. It's just left to right arithmetic as you would do with a hand calculator. As mentioned before, MightyMath will rise to most any level you wish to take it.

Most tasks in life are procedural in an obvious way. Crime scene investigations start with gathering evidence. Assembly instructions start with step one at the top of a list. A formula is actually an exception to the rule, as nested parentheses often force you to think from the inside out. While a forumla is great for expressing a discovery--E = MC^2, it's not always the best way to express a series of calculations you may be experimenting with. My point: arithmetic has advantages and can calculate anything a formula can. And, a trail can do so much more than a formula.

If you think this could be fun,  I can say I always enjoy using it. There is a "work in progress" you can download. The link is to the right of the green board examples at the top of this page.

More Complicated Features And Problems

Wherever something is likely to lead to a typo or requires you to remember a keyword or a special syntax, there is typically assistance available. Here is the Assistor for a "when clause" which allows you to perform calculations or take various actions based on a logical test. It's not hard to make one, but why not get it right the first time while seeing what the options are? The number of possible combinations is in the hundreds.

when clause

As one example, you could put a category in a column and  use certain trails only on certain categories. All trails, nonetheless, could be marked to apply to every row but would only do their thing on rows which are the correct category. Thus rows of any category could be inserted anywhere and would be correctly calculated without requiring any modifications to any trail.  In the statement below EXTRAIL is short for "exit trail." All the following steps in the trail would be skipped for, say, an "adult."   "<>" stands for not equal. Think of it as less than or greater than, so therefore not equal. Other comparisons are self-explanatory.

when text <> "child" extrail

I thought we should take a look at something that might seem to be a bit more business oriented. Below is such a thing with various derived rows from two rows of data. Almost 100 numbers are derived which would be almost one hundred cells with formulae regardless of who wrote them or how.

Well, there are two trails in MightyMath for the almost 100 derivations. Let's take a look at the first one which calculates the cumulative and monthly average to date for both years. The exclamation point ( ! ) enters a value into the calculator. A plus sign (+) actually adds the value. If you ended last step with an equal sign (=), the calculator would already be zero, but if you really are starting from scratch, the ! is the preferred choice. The hash sign (#) outputs the value in the calculator but does not set the calculator back to zero. Of course, it could still be overwritten by anything else that loads the calculator directly. All memories in MightyMath are zeroed when it starts the first (and generally only) pass.

The first step below enters the value in column B (no associated value), adds the value in memory csum (initially zero), and puts that total in the csum memory. This trail is reused first across the twelve columns of 2018 before it is used across the 12 columns of 2019. As we go though the columns, we have csum up to date for the column we are on. The order in which the trails are reapplied is always left to right within top to bottom. For the average to date,  I will need to know what to divide csum by. In the second step, I have put the cumulative in the correct spot first (= has no associated value). Then I have used another memory  "count + 1 = count"  to count columns for the divisor needed to get the average to date. The third step does the division and outputs the value.

When I first computed this spreadsheet the second set of numbers were off. The problem was easy enough to find. The memories csum and count started off with the values left over from the first block of rows. Thus I added a fourth step to set csum and count back to zero after the 12th month was calculated. The second trail is below.

The second trail calculated the monthly increase and percent increase. That was a snap. I did have to visit cell B2 twice. Once to subtract it from cell C2 to get the raw increase and once to divide the increase by B2
to get the proportional increase. A multiplication by 100 got me the percent. The bright green square, BTW, is an indicator that the cell has multiple steps. You can also see that in the helpful list of all the steps discussed earlier. MightyMath tries to keep all related information in your face and not hidden.

When there is a problem, like the one I had, it's typically in a confined area and takes a tweak to fix. You will soon see a debugging tool that is a great feature in MightyMath.
In summary the above two screens in conjunction with the darkened green cells do the work of nearly 100 formulas in a traditional spreadsheet. And if you plan to do 2020 and 2021 it will be closer to 200 formulas.

Let's take a look at a spreadsheet which simulates the optimal strategy for roulette, and demonstrates that MightyMath is ready to rise to most any level you want to go to. In this example, you enter
  what you want to risk, how much you want to make, and a maximum number of spins. MightyMath will bet on your lucky number every time with a dollar amount that achieves your goal on the first win. The more you risk and the less you want, you can win much more often than not.  Of course, when you do lose, it's a bummer. Note below that direct references are made to individual cells like B7 or B4. The trails here are for one task only and not needed as templates. Also, you can see the cells involved are all on the same screen, so a mistake is much less likely. The particular trail below sizes the bet which is put in a memory as there is no cell for it. "Cel" in step 4 stands for "ceiling" which is the first integer bigger than the number in the calculator. You can't bet a half chip. Nor can you bet more than you have left--step 5.

I wonder if many spreadsheets could even do this sort of thing? This spreadsheet is not child's play, but I believe most everyone could look through the trails and understand how it works. Others can solve similar problems or even more complicated ones. 
It does restart itself after each spin until you're broke, won the desired amount, or played the maximum number of spins specified. A variety of such options were shown on the weighty Assistor under the heading "Flow Control." If you put various restarts in a spreadsheet and it goes on for more than 15 seconds, Mighty Math will give you the opportunity to abort with some restart statistics shown. This can happen if you forgot to EXIT!

And when you do most anything, it's nice to have a way to find mistakes. MightyMath has a debugger that can walk through calculations, trail by trail, step by step, even operator by operator. It shows pretty much everything about this moment in this table including recent references made to other cells and memories. At this point in the above example, 13 bets have been lost. We're down $136 and betting $12 a spin. That would get us to our target profit of $300, but the bet will go up if we continue to lose. It's  fun to take a spreadsheet and walk through it even if it  is working correctly.

I am going to mention one more "expert" feature that shines in some rare situations. If you end a memory name with a question mark (qfactor?), the question mark is replaced by the column in which it is used. This means you can have a single trail used down all columns with a "= qfactor?" and have a "! qfactor?"  to fetch the correct value for that column way down the spreadsheet in a completely different trail.

Key Words and Phrases: Mighty Math, simple easy spreadsheet, amazing, inexpensive, cheap, son of T/Maker, table maker, two dimensional calculator, arithmetic based, no algebra, straightforward, iterations, goal seeking, applications, programmable, fewer mistakes, not error prone, pleasant look and feel, consistent, efficient, common problems, mortgage payment, growth rate, present value, blackboard, green board, white board, elementary school, multiplication tables, division tables, middle school, high school, kids, children, adults, home schooling, math skills, add, subtract, divide, multiply, subtraction, division, multiplication, learning, memories, fun, unconventional, wonderful syntax options, power and ease,
make your own templates, home budgeting, home finance, cash flow, invoices, project estimates, household templates spreadsheet for the whole family, unique, the unspreadsheet spreadsheet.