Can I get a Windows version of MathPad?
Sorry there is no Windows version of MathPad.
MathPad depends fairly heavily on the Mac OS routines for graphics etc. These days Windows finally has similar capabilities but porting MathPad would be a major project.
I don't have a numeric keypad so I don't have an enter key. What do I do?
Yes you do have an enter key. I've never seen a mac without an enter key. Ok, so maybe I haven't seen all possible key layouts. On non-US keyboards it may not say "enter" but it's probably on there somewhere. It's usually on the bottom row on the right. If you really don't have one you can use Command R.
The monaco 9-point font is small and ugly. Can I change it to something else?
It may be ugly but it's one of the more readable screen fonts at small sizes. If you have plenty screen space you are welcome to change it to whatever works for you.
You can change the text window or plot window font under the Format menu. Very large fonts may not work well in all cases but there are no particular restrictions.
If you want to change the font that will be used for new documents, first set the font and size to whatever you want and then use the "Make Default" button in the Preferences... dialog box.
An empty graph appears. What am I doing wrong?
  y = sin((pi/2)*x)
  plot y
The independent variable for plots is an upper case X. Change your example to y = sin((pi/2)*X) and it should work. MathPad generally uses upper case for its reserved symbols so that the user has all the lower case ones.
You could also fix your example by setting x = X.
Another common problem with plots is a mistake in the range for X or Y. In your example, it appears that you are expecting x to be in radians. The angle units must be set to radians and Xmin Xmax must be set appropriately to see a useful plot.
Auto ranging Y will usually find an appropriate scale but if the function has a very wide range in Y, the interesting details may not be visible.
My plot looks squished. How do I get it to look right?
What you are probably after is equal X and Y scaling. In many cases this isn't important or even desirable but if you want to plot a circle and have it look like a circle then it is.
You need the X and Y axis ranges to match the shape of the plot window. If your Xdiv and Ydiv are equal you can resize the plot window by eye until the grid looks square. A more precise way to do it is to install the XFun sizeaxis(). This can be used to automatically resize the plot window to give square coordinates.
To maintain the same plot window size for printing, check the "Print as sized" box in the Preferences dialog.
I'm having an odd issue where it gives the answer 0 or tells me I need =
  pi(1.79e-10)
This is a syntax error. You need to have an explicit multiply operator.
The error message is a bit obscure but
pi=(1.79e-10)
would be valid syntax. It happens to also be illegal because you can't redefine pi.
If you put in the multiply operator you will see:
pi*(1.79e-10):0.000000
Zero is the correct answer to 6 places in fixed format. You need more places or to switch to scientific or engineering format if you want to see a non-zero answer.
Why can't MathPad calculate the cube root of -27?
(-27)^(1/3):NAN04
The ^ operator uses general floating point exponentiation. It doesn't make a special case for integer roots. In general, using a fractional exponent with a negative number is undefined. Mathematically, odd integer roots are defined but in practice it's hard to detect this case using floating point calculations.
It's important to realize that numerical calculations are only an approximation. In most cases the answer is so close that errors are ignored. In some cases however, the difference between an approximation and the exact number can be important. The result of 1/3 is only kept to a finite number of places. Since it is not exactly 1/3 the exponentiation is undefined.
Why does MathPad start out in degrees instead of radians?
It is true that the more mathematical choice would be radians but degrees are more common in applications other than pure math.
You can change to radians and then use the "Make Default" button in the preferences dialog to set your default starting preference to radians.
Why isn't e a built in constant like pi.
It is a built-in constant: "exp(1)". Ok maybe it doesn't look as nice, but "e" is already used for scientific notation as in 1e-5. This doesn't really preclude using "e" as a constant but it would be slightly confusing. If you want to you can define e=exp(1)
It would be really cool if Mathpad could support other number bases, especially hexadecimal.
It does support hex input. You can input numbers like 0xFF directly. Output is not quite as nice but the sprintf() function can output in hex or octal.
How about this for binary output:
bin(n) = n when n < 2,
  bin(trunc(n/2))*10 when trunc(n/2)==n/2,
  bin(trunc(n/2))*10+1
I can't find the section of the manual on matrices. How do I do matrix math?
MathPad has arrays so check out the section on arrays. These are more general but it is easy to use them for matrix operations.
The syntax for entering a 3X3 array looks like:
A={ {11,12,13},
    {21,22,23},
    {31,32,33} }
Addition, subtraction and multiplication by a scalar can be done directly.
A-A*2:{{-11,-12,-13},{-21,-22,-23},{-31,-32,-33}}
The only built-in function specifically for matrices is det() although other array functions are useful for matrices.
Function to do more complicated operations are easy to define. There is an include file in the "incl" folder that defines a few common matrix ops (multiply, transpose, invert ...). You can make those available by adding the line
include ":incl:matrix ops"
transpose(A):{{11,21,31},{12,22,32},{13,23,33}}
If you look at the "matrix ops" file you should see that the definitions look essentially the same as they are in most linear algebra texts. Different people like different sets of "basic" matrix operations so you may want to make your own include file with things arranged and named whatever you are used to.
The invert() function given in the include file is very inefficient but it is a good example of how to define functions that operate on matrices. If you want a more efficient routine, the "SVD" XFun defines invert(). (You can't use the include definition and the XFun one at the same time unless you change the name of the include one. Also note the Xfun version returns the matrix in a separate variable named "_Inv").
How do I allocate an array? I saw the syntax a:=0[:10] in an example. What does this do?
If you want to create an array with assignable elements, it must be initialized by an assignment. The primary purpose of the [:n] notation isn't that, but it turns out to be a handy shortcut. The syntax < expression >[:n] selects a subarray with the upper dimension limit at n. In this case it forces a constant to be treated as a finite array.
Another way is to make an array definition and assign it. This technique also works for multi-dimensional arrays.
zeros[i,j] = 0 dim[n,m]
arr:= zeros
In OS-9 once I click OK on the print window I get a dialog stating - "Not enough memory to print this document. Quit other applications and try printing again."
This message comes from system software not MathPad. You didn't say what kind of printer you were using. I have tried printing to a Laserwriter under OS-9 without problems. Some drivers for other printers may need more memory. Despite what the message says, sometimes you can fix it by increasing MathPad's memory allocation using Finder get info.
Is there any way to get MathPad to put out vector plots?
Vector plots aren't built in. I've thought about adding it but I rarely have any use for them. They tend to be useful only when looking at things with small dynamic range that vary smoothly. This doesn't mean that there aren't things like that worth plotting.
Using the image command to plot various combinations of x,y angle and magnitude against each other is often helpful.
Of course it's possible to get MathPad to plot anything. When you plot {x,y} arrays it will lift the pen for an undefined point. That means you can draw anything by generating the desired sequence of {x,y} coordinates. A crude vector plot is pretty easy to set up. The only tricky part is all the little mods and +1s needed to generate the correct index values. Putting nice little arrowheads on the vectors would be tougher. Here is an example that shows the basic idea.
------------- vector plot -------------
-- example array of vectors
vec= {{.1,.05},{.2,.3},{.2,.4},{.3,.5},{-.5,.4},{-.6,.2},
{-.7,.1},{-.7,-.1},{-.8,-.5}}
nvec=count(vec)
-- create an array of vector origins
dx=1
org[i,j] = trunc(i)*dx when j==1,0 dim[nvec,2]
liftpen = 0/0
-- create an array of coords to plot.
-- draw each vector using 3 {x,y} pairs:
-- {tail,head,undef,tail,head,undef,...}
mod3(i) = i-3*trunc(i/3)
vecplot(vecs)[i,j] = org[(i-1)/3+1,j] when mod3(i) == 1,
(org+vecs)[(i-2)/3+1,j] when mod3(i) == 2,
liftpen dim[nvec*3,2]
vecplot(vec):{{1.0,0.0},{1.1,0.1},{NAN04,NAN04},{2.0,0.0},{2.2,0.3},
{NAN04,NAN04},{3.0,0.0},{3.2,0.4},{NAN04,NAN04},{4.0,0.0},...}
Xmin=0; Xmax=10
Ymin=-1;Ymax=1
plotline vecplot(vec)
Marker:=7:
plot org