PSION ORGANISER II Formulator

© Copyright Psion PLC 1987. All rights reserved. This manual and the programs referred to herein are copyrighted works of Psion PLC, London, England. Reproduction in whole or in part including utilisation in machines capable of reproduction or retrieval, without the express written permission of Psion PLC, is prohibited. Reverse engineering is also prohibited.

The information in this document is subject to change without notice.

Please note that formulae provided in this product are designed to illustrate the utility and application of the Formulator. Users must satisfy themselves as to the validity and applicability of any individual formula before use. Psion accepts no liability for loss, including consequential loss, arising from the use of the formulae contained herein.

Typeset by Lotus Reprographic Services, London.
Printed by Premier Metropolis, London.

1 INTRODUCTION

The Formulator is a program for your Psion Organiser II which can work out almost any calculation which can be expressed as a formula. You have only to type the formula as a single line, using names and numbers; no programming is required. As a very simple example, you could specify a formula to convert litres to pints. It might look like this:

PINTS=LITRES*1.76

Whenever you then used this formula, the Formulator would ask you for a value in litres, and display the result in pints.

"FIND" and "SAVE" options, similar to those on the 0rganiser's main menu, are provided for your formulae. You only have to type a formula once - if you then save it, you can find and use it again at any time in the future.

As well as allowing you to construct your own formulae the Formulator is provided with over 250 useful examples. These cover a huge range of common calculation areas, including the following:

Business, e.g. VAT calculations
Finance, e.g. loan repayment
Statistics, e.g. Poisson probability
Mathematics, e.g. quadratic equations
Physics and electronics, e.g. parallel resistance
Chemistry, e.g. the ideal gas law
General formulae, e.g. metric to imperial units
(including, of course, such things as litres and pints)

The Formulator occupies approximately 4K of Organiser memory, and so can be used on all versions of the Organiser.

HOW TO USE THIS MANUAL

Chapter 2 explains how to run the Formulator and its basic method of operation. Read it first, so that you can write and use your own formulae. You should then read chapter 3, which explains how to save formulae on your Organiser. The examples in these chapters are designed to follow on from each other, so first- time users may use them as a tutorial.

The Formulator can handle complex formulae, and chapter 4 explains its more powerful features. Chapter 5 explains how to use the supplied formulae, and lists the functions provided by them. Chapter 6 shows how to use the Formulator from inside OPL, the Organiser programming language.

2 GETTING STARTED

RUNNING THE FORMULATOR

The Formulator is supplied on a datapak. To run the program, return to the main menu on the Organiser, insert the Formulator datapak in either datapak slot, and press ON/CLEAR. This will add the "XFORM" option near the end of the main menu. To select it, either just press  X  or move the cursor to this "XFORM" option and press EXE. The prompt "XFORM:" will appear on the screen, and the Formulator is ready for use.

You will find the style of use of the Formulator similar to that of the Organiser calculator. However, since you will be typing a mixture of text and numbers, the keyboard is set to accept alphabetic characters.

Once you have added the "XFORM" option to the main menu you can if you wish remove the Formulator datapak. If you do this you should take care to avoid pressing ON/CLEAR while at the Organiser's main menu, since this will remove the "XFORM" option and you will then need to reload it from the datapak.

THE SINGLE-CALCULATION FORMULA

In the introduction, a simple example formula to give an approximate conversion from litres to pints was suggested, The formula looks like this:

PINTS=LITRES*1.76

To enter this example, just type it in when the "XFORM:" prompt is on the screen, and press EXE.The screen will then show the following:

LITRES=

You should type in a number, to say how many litres to convert to pints. The keyboard will automatically be set to numeric mode when values are being prompted for. Note that you can always abort the execution of a formula by pressing ON/CLEAR when you are prompted for a number.

When you press EXE to enter the number, the screen will show the result. If, for example, you entered the number 3, the screen will show:

PINTS=5.28

If you now press SPACE you will be returned to the "XFORM:" prompt, with the formula ready to be edited or run again.

In general, of course, when you type in one of your own formulae you would then save it for future use.

When the Formulator runs a simple formula it evaluates the sum on the right of the equals sign, prompting you to supply values where necessary. It then displays the result name (the text on the left of the equals sign), followed by the result it has calculated.

Note that pressing ON/CLEAR while the Formulator is running a formula may cause the Organiser to pause, just as it does in OPL. If you then press  Q  the Formulator will abort the calculation; any other key will cause the calculation to resume.

Prompts for input should begin with a letter and may contain any combination of letters, numbers and space characters. Result names may contain any combination of characters, other than equals signs, colons and commas.

THE MULTIPLE-CALCULATION FORMULA

The litres-to-pints formula from the previous section can be altered to produce a second result in gallons, as follows:

PINTS=LITRES*1.76;GALLONS=PINTS/8

This formula now contains two calculations, separated by a semicolon.

Again, just type this in at the "XFORM:" prompt. If the formula from the previous section is still on the screen, it can be edited in the same way as any other input line on the Organiser. Move the cursor with the cursor keys, type new text at the cursor position, and use DEL to delete a character.

Press EXE to run the formula. As before, the Formulator will prompt you to enter the number of litres to convert into pints. In the second calculation, "GALLONS=PINTS/8", the value for "PINTS" from the first formula is automatically used.

Having completed the calculations, the results - in this case, "PINTS" and "GALLONS" - will be shown on the screen, one to a line. Press SPACE to return to the "XFORM:" prompt, with the formula ready to be edited or run again.

This example highlights a fundamental feature of the Formulator; any result or input value in a formula can be used anywhere else in the formula. In this case, the "PINTS" result is calculated, and then used in another calculation. It is not even necessary to arrange the calculations in the correct order, since the Formulator will work out which values must be prompted for. The previous example could have been written like this:

GALLONS=PINTS/8; PINTS=LITRES*1.76

and the Formulator would still realise that a value for "LITRES" is needed in order to calculate the "PINTS" and "GALLONS" results.

When two or more prompts are required, they will appear on the screen in turn, according to their position from left to right in the formula. This means that you can swap formulae around to change the order in which prompts appear.

A formula may contain up to 16 different prompts and result names, and up to 16 separate calculations.

If a formula produces more than two results, use  ↑  and  ↓  to move up or down the result list.

To save time and space, you can abbreviate any prompt or result name when you re-use it in a formula, as long as you use at least the first three characters of the name. In the previous example, the second occurrence of "PINTS" could have been replaced by "PIN" or "PINT", like this;

PINTS=LITRES*1.76; GALLONS=PIN/8

The Formulator will match things like "PIN" and "PINTS", no matter which order they appear in the formula. You should take care to ensure that you do not accidentally use two prompt names which are meant to be different but which match in this way. If, for example, you tried to run a formula containing prompts for "DAY" and "DAYLIGHT", the Formulator would treat them as one item, and only prompt for "DAYLIGHT".

VALID EXPRESSIONS

When entering a formula, or typing a number in response to a prompt, you can use any expression which OPL allows, such as;

2 2+3 \$18 SIN(5) PI**2 DATAGET%:(2,3)

These options are almost the same as those available in the calculator. "\$18" is a hexadecimal number, while "PI" and "SIN()" are OPL functions. The last item in the list, "DATAGET%:(2,3)" is an example of a call to an existing OPL procedure.

You should ensure that none of your prompts conflict with the numeric OPL functions "PI", "SECOND", "MINUTE", "HOUR", "DAY", "MONTH", "YEAR", and "RND", or with the logical operators "AND", "OR", and "NOT". The Formulator would evaluate these in the same way that OPL does if your formula contained them. Similarly, you should not use "M0" to "M9" as prompts. They will be taken to be the names of the Organiser's calculator memories. Note that any numbers or prompts which you use logical operators on must be enclosed in brackets.

Refer to the OPL section of your Organiser manual for more information on the rules of the mathematical syntax.

LEAVING THE FORMULATOR

To leave the Formulator, just press ON/CLEAR at the "XFORM:" prompt. This returns to the Organiser's main menu. If you then wish to free the memory used by the Formulator, remove the datapak and press ON/CLEAR.

3 FINDING AND SAVING FORMULAE

The Formulator has a menu to handle the finding, saving and erasing of formulae from any Organiser device (A:, B: and C:). These options are similar to those on the Organisers main menu, which commonly holds addresses and telephone numbers. The main menu options use a data file called "MAIN". The Formulator uses another data file, called "XFORM", to keep formulae in.

SAVING A FORMULA

When at the "XFORM:" prompt you can save your formula to datapak or memory. For example, return to the "XFORM:" prompt and type this formula:

FEET=METRES*3.28

Press EXE to run it. You will be asked to enter the number of metres, and then the result in feet will be shown. Press SPACE to return with the formula to the "XFORM:" prompt. Now press MODE to display the "FIND"/"SAVE"/"ERASE" menu, and  S  to select the "SAVE" option. The "SAVE" prompt will appear, followed by the device name. Use MODE again, it necessary, to select device A:. At this point you can also, if you wish, re-edit the formula. Then press EXE, and your formula will be saved to the "XFORM" data file on device A:. The Formulator will then return to the "XFORM:" prompt with the formula ready to be run or edited again.

The "SAVE" option not only saves your formula but also searches from the start of the "XFORM" data file, trying to find an existing formula with the same left hand side (up to the first equals sign) as the formula you are Saving. The search is case-independent. If such a formula is found you are given the option to delete it, as well as saving the new one at the end of the data file. If you choose not to delete the existing formula, the new formula is just added.

For example, if you have saved the metres-to-feet formula above, type and save this formula:

FEET=METRES*3.28; YARDS=FEET/3

also to device A:. The Formulator will find that the first formula you saved also begins with "FEET=" and will display the prompt "Overwrite Y/N" on the bottom line. Press  Y  to delete the first formula and add this new one.

FINDING A FORMULA

The quickest way to find a formula which has been saved is to use the "quick find" method. Type at the "XFORM:" prompt a small part of the formula you wish to find, as with the "FIND" command on the Organiser's main menu. Ensure that the search text you wish to find does not contain an equals sign. When you press EXE the Formulator will understand that you are not specifying a formula, since the text you have typed does not contain an equals sign, and will jump into the "quick find" option. The "XFORM:" prompt will change to "FIND:", followed by the device name, and the Formulator will begin to search the device for a formula which contains your search text. The search will be case-independent.

If you wish to change the device in use, press MODE. Note that, as well as changing the device, this will automatically perform a search on the new device for the text you have specified.

For example, if you saved the metres-to-feet formula in the previous section, type "METRES" at the "XFORM:" prompt. Press EXE to start the search, using the "quick find" method. If the device in use is not A:, use MODE to change device, searching at the same time. When the Formulator finds a formula which contains the search text that you typed it will display the formula on the bottom line of the screen. The metres-to-feet example would appear like this:

FIND A:METRES FEET=METRES*3.28; YARDS=FEET/3

In this case, the bottom line of the screen would scroll. You can now press EXE to run this formula, or ON/CLEAR to return to the "XFORM:" prompt with the formula, ready for editing.

In general, when you have found a formula you can if you wish press  ↓ , and the Formulator will try to find the next formula which contains your search text. If you do search for further matches you can press  ↑  to return to the previous matching formula. If there is only one formula which contains your search text, then these keys will have no effect. Note that if you search for a further match and the Formulator cannot find one between the current match and the end of the "XFORM" data file, it will start searching again from the start of the data file - just like the "FIND" option on the Organiser's main menu.

If the Formulator cannot find a formula which contains your search text, it will display "Not Found" on the bottom line. Pressing ON/CLEAR will in this case return to the "XFORM:" prompt with the search text.

It is also possible to find every formula on a particular device. To do this, just press EXE at the "XFORM:" prompt with nothing else on the screen, i.e. without having typed any search text.

There is also a "FIND" option on the Formulator menu, which may be used as an alternative to the "quick find" method. It operates in a very similar way to the "FIND" option on the Organiser's main menu. To select it just press MODE and F, use MODE if necessary to change device, then type your search text and press EXE. You should use this option instead of the "quick find" method if your search text contains an equals sign {since this makes the "quick find" method impossible), or if you prefer to be able to use EXE to search down the data file for further matches. When you have found the formula you want, press ON/CLEAR to return with it to the "XFORM:" prompt.

ERASING A FORMULA

The "ERASE" option on the menu acts in a similar way to the "FIND" option. To use it, first press MODE and  E  when at the "XFORM:" prompt, and press MODE if necessary to change the device. Then type a small part of the formula you wish to erase, and press EXE. For example, to erase the metres-to-feet formula from the previous section, use something like "METRES" or "FEET".

The Formulator will now try to find a formula which contains your search text, and if it is successful it will display that formula on the screen. You can use EXE at this point, if necessary, to search for different matching formulae. When you have found the metres-to-feet formula, press DEL, and confirm this by pressing Y. The formula will be deleted and the next one containing your search text will be looked for. In this example, the Formulator should find no more matches, and display "Not Found" on the bottom line. Press ON/CLEAR to leave the "ERASE" option and return to the "XFORM:" prompt.

DECIMAL PLACES

Any result from a formula may be displayed to a given number of decimal places. To do this, follow the result name with the number of decimal places required (from 0 to 9), separated by a colon. For example, the following formula:

PINTS:2=LITRES*1.76

will convert the number of litres you specify into pints, and display the result to two decimal places. This only affects the final display of the results, not the calculations involved, which are always performed to 12 digit accuracy.

INTERMEDIATE RESULTS

If a result name is followed by just a colon without a number, the result will be calculated as normal but will not be shown in the final display of results. This can be useful when a formula needs to calculate an intermediate result for use later on in the formula. For example, when calculating the area of a triangle from the lengths of its sides, the value of half the sum of the lengths must be calculated, and then used several times in the final calculation. A suitable formula for this is as follows:

HS:=(S1+S2+S3)/2; AREA=SQR(HS*(HS-S1) *(HS-S2)*(HS-S3))

Note that this formula would be typed in all on one line.

In this formula. "HS" stands for half the sum of the sides. Since it is followed by a colon it will be treated as an intermediate result, and will not be shown in the final display of results. "S1", "S2" and "S3" are the three side lengths which the Formulator would prompt for.

As mentioned in chapter 2, the order of the calculations in your formula may be changed to change the order in which values are prompted for. There may be cases, however, where it is difficult to rearrange a formula to achieve the desired order of prompts. In such a case you can use the intermediate result technique for this purpose. To ensure that one value, say, "LITRES", is prompted for before any other, you can begin your formula with the following calculation:

:=LITRES;

This calculation uses an intermediate value without a result name, purely to ensure that the name on the right of the equals sign (which would be used elsewhere in the formula) is the first value prompted for.

TITLES

Any formula may begin with a title which will be displayed before the list of results. This is very helpful as a reminder or confirmation to you when using the formula and, equally importantly, it is ideal to use as search text when finding a formula. Many of the supplied formulae begin with a helpful title, as explained in the next chapter.

A title may contain any combination of characters, except those such as the equals sign which are significant to the Formulator. The title is separated from the rest of the formula by a comma. For example, the litres-to-pints formula could be rewritten as follows:

LITRES>PINTS,PINTS=LITRES*1.76

When the Formulator runs this formula, the title "LITRES>PINTS" will be displayed before the list of results.

5 USING THE SUPPLIED FORMULAE

FINDING THE FORMULA YOU WANT

You will probably want to use some of the formulae which are supplied on the datapak. As explained in chapter 3, they are stored in an ordinary data file, called "XFORM". For example, this data file contains several formulae to convert between different units of volume, including one to convert from litres to pints. Just like the example formula in chapter 7, this formula will ask you to specify a number of litres, and then display a list of conversion results. Its title is "litres>", since it converts from litres to other units. All of the conversion formulae have titles like this. To find this formula the "FIND" option from the menu could be used, but the "quick find" method described in chapter 3 is even easier. Just type:

LITRES>EXE

at the "XFORM:" prompt. This immediately goes into the "quick find" option, since the text you have typed does not contain an equals sign. If the device is not the one containing the datapak, use MODE to change it. Remember that using MODE will change the device and also perform a search on it.

The formula, which is a little more complicated than the example in this manual, will now be displayed on the bottom line. To run this formula, press EXE. It will produce a list of results which can be examined by using  ↑  and  ↓ . It includes the number of litres you specified, with the result name "(Litres)" to confirm that you typed the correct value. Note that the calculation "Litres=Litres" cannot be used to force the Formulator to display "Litres" as a result, since this would be a form of "circular reference" - the "Litres" value would depend on itself. See the appendix on error messages for more details. This is the reason why the supplied formulae use brackets in the result names in such cases.

COPYING THE SUPPLIED FORMULAE

In practice, you may well wish to copy some of the supplied formulae from the datapak into the internal memory of your Organiser (device A:) Storing the formulae you want on device A: means that you can remove the Formulator datapak if you wish. It will also make the Formulator considerably faster when finding and saving formulae, and you will not waste datapak space if you re-edit formulae.

Even if your Organiser has a lot of free memory, it is not a good idea to copy the entire "XFORM" data file to A:, since filling up memory will affect calculation speed. It is better to copy the formulae you want, one by one. For example, you could copy the supplied formula which converts litres to other units of volume. First, find the formula on the Formulator datapak. To use the "quick find" method, as in the previous section, type:

LITRES> EXE

at the "XFORM:" prompt. Use MODE if necessary, to select the device which contains the datapak. Remember that using MODE will change the device and also perform a search on it.

The formula should now be displayed on the bottom line. Press ON/CLEAR to return to the "XFORM:" prompt with the formula you have found. At this stage you can, if you wish, re-edit it. Now press MODE and  S  to enter the "SAVE" option, and use the MODE key to select device A:. When you press EXE, the formula will be saved to the "XFORM" data file on device A:. The Formulator will then return to the "XFORM:" prompt with the formula ready to be run or edited again.

It is quite safe to experiment with formulae on A:, since the original data file still exists as a backup on the Formulator datapak.

A few of the supplied formulae use OPL programs which are supplied on the datapak. To copy these formulae to device A: and run them from there, either copy their OPL programs as well or leave the datapak plugged in. If you do remove the datapak you should take care to avoid pressing ON/CLEAR while at the Organiser's main menu, since this will remove the "XFORM" option and the Formulator will then need to be reloaded from the datapak.

If you wish to make substantial changes either to the supplied formulae or to your own formulae, you can use Psion's Comms Link product to transfer the "XFORM" data file to a desktop PC You can then edit or add to the formulae on your PC, before using Comms Link to transfer the new data file back to your Organiser. Alternatively, OPL programs may be used to modify the "XFORM" data file.

ANALYSING A FORMULA

Although a long formula may at first glance look daunting, you can easily understand it by following a few simple rules.

First, see if the formula begins with a title, which should explain what it is trying to do. Then look for the semicolons in the formula, which separate the calculations, and look at each calculation in turn, working from left to right. The calculations will in general proceed in this order.

Each calculation will contain a result name followed by an equals sign. If the result name is followed by just a colon, it is an intermediate result to be calculated for use elsewhere in the formula, and will not be shown in the final list of results. If, however, the colon is followed by a digit, it is a result which will be displayed to that number of decimal places.

The text on the right of the equals sign will be the sum to calculate. It may contain names whose values will be prompted for, and/or names whose values are calculated elsewhere in the formula.

FUNCTIONS PROVIDED

There follows a list of the functions provided by the supplied formulae. To help you find the one you want, the titles and key words which may be used as suitable search text are in bold type below. When you find formulae which match your search text, don't be afraid to try them out, to see which values they prompt for and which results they produce. Some of the suggested search text below will find more than one formula.

Be careful to ensure that any formula you use matches the requirements you have. You may also wish in some circumstances to change the number of decimal places used when displaying certain results. Similarly, note that although all calculations are performed to 12 digit accuracy, many of the constants used in the formulae have less than 12 digits - again, adjust them if you require greater accuracy

The data file begins with financial formulae, some of which are specific to the U.K. They can be adjusted, if necessary, to suit your particular needs. They include conversion between price, net and VAT (UK 15% sales tax); mark up and discount; compound interest, current value, annuity future and current, loan repayment and APR, repayment mortgage, endowment mortgage and take home pay.

The UK 15% sales tax formulae (for VAT) are followed by the corresponding formulae for France 18.6%, France 33%, Germany 14%, Austria 20%, Portugal 16%, Spain 12%, Italy 18%, Belgium 19%, Holland 20%, Turkey 12% and Morocco 19%. The UK formulae may be easily modified for use with a local US sales tax - just replace every occurrence of "15" in the formula by the correct percentage tax.

For the financial formulae involving interest rate, the prompt "Incrs Per Year" refers to the number of times per year the accrued interest is added to the capital sum. This might be daily, weekly, monthly, quarterly or yearly. The mortgage repayments calculate the repayments first with no allowance for tax, and then under MIRAS, assuming the standard rate of tax (27%) is paid. Additional payments will probably be required, so you should consult the lending institution for the total cost. The "take home pay" formula applies to the UK, in the year 1987/88, assuming non-contracted out N.I. contributions, and only covers the 27% tax bracket. Because of rounding errors and discrepancies between weekly and monthly paid N.I. contributions the result may be inaccurate by a few pence. Again, you may wish to adjust the formula for future years or other situations. Note that by convention when a formula prompt ends with a percentage sign you should type in a percentage, not a fraction. For example, to specify 75% in such a situation, you should type "75", not "0.75".

The next formula is a number converter. You can only give it as input a simple decimal integer, octal integer (prefixed by the letter 'O'), or hexadecimal integer (prefixed by '\$'). It then lists the number in all three notations.

Then comes a group of formulae covering functions and statistical formulae in mathematics. This includes factorial, Gamma function, Beta function, Bessel function of the 1st kind, Euler numbers, Bernoulli numbers, Rieman Zeta function, and Chebyshev polynomial (1st and 2nd) for values between zero and one; binomial coefficient, binomial distribution, Poisson probability, chi-squared distribution, Student's t distribution and normal probability.

Some of the above formulae may take some time to execute since they rely on the convergence of series. Remember that you can always exit from a calculation by pressing ON/CLEAR and  Q .

Still in mathematics, the next group contains geometry formulae. These are triangle sizes (SAS for specifying side-angle-side, SAA for side-angle-angle and SSS for side-side-side), triangle area, regular polygon (from edge length, short radius and long radius), circle, sphere, and cone (from height and slant).

There then follow conic formulae: two formulae for calculating the Y and X of a parabola, three for the Y,X and eccentricity of an ellipse, and three for the Y,X and eccentricity of a hyperbola.

Next come asin, acos, hyperbolic functions, sum arithmetic series, sum geometric series, real quadratic (equation with real solutions), complex quadratic (equation with imaginary solutions), complex arithmetic (add, subtract, multiply, divide, exp, sinh and cosh), polar coords (to and from cartesian), polar arithmetic (add, multiply and divide), spherical coords (to and from cartesian), vector dot product and vector cross product.

The next group is a long series of conversions. In each case, the units which are converted from are also the title of the formula, followed by a '>' character. They are grouped together below, separated by semicolons, according to the outputs that are produced. So if, for example, you want to use the formula to convert from metres to microns, you will want the second formula whose title is "metres>", since it occurs in the group which converts microns, angstroms, fermis and metres. The titles are

inches>, feet>, yards>, miles>, nautical miles (nmiles>), metres> and km>; fathoms>, yards> and metres>; microns>, angstroms>, fermis> and metres>; Au>(astronomic units), light years>, parsec> and metres>; BMU>, points>, picas>, inches> and cm>; sq inches>, sq feet>, sq yards>, acres>, sq miles>, sq metres>, hectares> and sq km>; fl ounces>, pints>, gallons>, litres>, US gallons> and barrels>; cu inches>, cu feet>, cu yards>, cc> and litres; ounces>, pounds>, stone>, CWT>, short tons>, long tons>, kg> and tonnes>; sec of arc>, min of arc>, degrees> and radians>; seconds>, minutes>, hours>, days>, weeks> and years>; MPH>, FPS> (feet per second), KPH>, metres/sec> and knots>; poundals>, lbf> and newtons>; dynes> and newtons>; joules>, ergs>, calories>, therms>, btu> and KWH>; joules>, eVolt>, Hertz>, Kelvin> and kg>; PSI> (pounds per square inch), Pascals>, Kilopascals>, mmHg>, inHg> and Millibars>; Tesla> and Gauss>; Curie> and Becquerel>; Rads> and Gray>; Horsepower> and Watts>; RPM> and Hertz>; Fahrenheit>, Celsius(centigrade)> and Kelvin>; electron masses (em>), proton masses (pm>), neutron masses (nm>) and Kg>.

UK nautical miles have been used, which are equal to 6080 ft. International nautical miles are 1852 metres, so one UK nautical mile is approximately equal to 1.00064 international nautical miles. IT calories have been used, equal to 4.1868 joules. Thermodynamic calories are 4.1840 joules.

The next section is concerned with physical and chemical formulae. It covers Watts (from Amps and Volts, Amps and Ohms, and Volts and Ohms), Joules (from farads and volts), Farads (from Joules and volts), Volts (from amps and ohms), Amps (from volts and ohms) and Ohms (from volts and amps); const acceleration formulae (where units are unspecified they should be determined by the user), including velocity (from either time or distance), distance (from either time or final velocity), and energy (from initial and final velocity); some fundamental relationships including force (from mass and acceleration), momentum (from velocity and mass), final speed when two objects moving in the same direction collide, circular motion acceleration (from velocity and radius) and centripetal force (from velocity, radius and mass); unit definitions for Joules (from newtons and metres) and newtons (from Kilograms and acceleration); lens focal length (from image and object distance) and image distance (from object distance and focal length); pendulum period (from pendulum length); earth satellite velocity and period (from height); Resistance value of two, three and four resistors in parallel (resistance 2, resistance 3 and resistance 4); charge growth and charge decay for an RC circuit; Amps growth and Amps decay for an RL circuit; Volts, Amps and Impedance for an AC series circuit, resonant frequency for an LC circuit and Coulombs Law for force, energy and voltage; pressure and volume from Boyles law; Adiabatic gas law and Ideal gas law; Joules from expanding gas (isothermal) and expanding gas (adiabatic); Rads/hour (from Curies, MeVolts and metres) and radiation decay (from initial radiation, half life of source and time); and denier (from Kilograms and metres), Kg (from deniers and metres) and metres (from deniers and Kilograms).

Next come navigational formulae including radar range, sea horizon, extreme range and approximate barometer correction (each from feet and metres), true speed and bearing (from apparent speed, apparent bearing, drift speed and drift bearing) and apparent speed and bearing (from true speed, true bearing, drift speed and drift bearing).

The list of formulae ends with new exposure time for photo printing (from old exposure, old distance from lens and new distance from lens), and wall area, ceiling and total area of a rectangular room (from width, length and height).

A few of the formulae (the APR formula, the number converter and some of those concerning statistics and probability) do use OPL programs which are supplied on the datapak. You can still copy these formulae to device A: and run them from there, as long as you either copy their OPL programs as well, or leave the datapak plugged in.

Psion has a policy of continuous product development.

If you have any formula ideas which you think would be suitable for future releases of the Formulator. please write to:

Formulator Research, Marketing Dept., Psion PLC, Psion House, Harcourt St., LONDON, W1H 1DT

Psion will send you a copy of a new release of the Formulator if it includes an original suggestion of yours.

6 THE FORMULATOR AND OPL

Once the "XFORM" option has been added to the Organiser's main menu a new command, "XFORM:", is added to OPL. To use it, pass it a formula to run.

As an example, you could write a simple OPL program to call the Formulator with a VAT formula, then install this program on the Organiser's main menu. To do this, first return to the main menu, move the cursor to the "PROG" option, and press EXE. The OPL menu will now be displayed. Press  N  to choose the "new procedure" option, and press MODE, if necessary, to change the device to A:. Now type:

VAT EXE

to begin editing a new procedure called "VAT". Then press EXE to start a new line, and type all on one line:

XFORM:("VAT:2=PRICE*3/23;NET:2=PRI-VAT")

This is in fact very similar to the supplied VAT formula; when run, it will ask you for a price, and then break the price down into "NET" and "VAT".

When you have typed this, press MODE to display the procedure-saving menu, and select the "TRAN" option. This will translate your procedure, ready for running. It will then prompt you with "SAVE A:VAT", and when you press EXE your procedure will be saved.

Finally, return to the main menu on your Organiser (by using ON/CLEAR), and press MODE. This will prompt you with "INSERT ITEM", asking you for the name of the new item to put on the menu. Just type:

VAT EXE

and a new option, "VAT", will appear on your main menu. Whenever this option is selected in future, it will run the OPL program called "VAT" which you have just written and saved.

The "XFORM:" command can also be called in OPL with text which does not contain an equals sign, to be used as a search text. This will use the "quick find" method, just as if it had been typed in at the "XFORM:" prompt, searching through the "XFORM" data file for a formula which contains the search text. You can then use  ↑  and  ↓  to search for different formulae, or MODE to change the device. When you hit EXE, the Formulator will execute the formula, and then return to OPL. If you hit ON/CLEAR while using this "quick find" method, you will return to OPL without having run a formula.

APPENDIX A ERROR MESSAGES

If a formula contains a "circular reference" such as the "LITRES" result depending on "PINTS" while the "PINTS" result depended on "LITRES", the Formulator will be unable to find a place to begin calculation and will display an error message ("CIRCULAR REF") on the top line of the screen. One of the names in the circular reference will be displayed on the bottom line. If this happens, press SPACE to Continue.

A formula may contain up to 16 different prompts and result names. If this limit is exceeded, a "TOO MANY NAMES" error message will be displayed. If a formula assigns to the same result name twice, a "REPEATED RESULT" message appears.

Several other Organiser error messages may appear when the Formulator executes a formula, according to the calculations you specify. There follows a list of the commonest which the Formulator may display.

1. STRING TOO LONG - the result list has exceeded 254 characters in length, counting one character for the end of every line.

2. OUT OF MEMORY the Formulator has run out of memory while trying to calculate a formula.

3. DIVIDE BY ZERO - division by zero was attempted, e.g. specifying "0" payments per year in the loan repayments formula.

4. SYNTAX ERROR - a formula was executed which was incorrectly entered and could not be calculated.

5. BAD FN ARGS - the arguments to a function are illegal or of the wrong type, such as "sin(x,y)".

6. MISSING PROC - a formula referred to a procedure which does not exist anywhere on the Organiser. This could be caused, for example, by copying an OPL- dependent formula to A: and running it from there when the datapak containing the OPL program has been removed.

7. FN ARGUMENT ERR - an invalid input was used, such as entering "2" as input to the ACOS formula.

8. BAD CHARACTER - an invalid character such as "%" has been used.

9. BAD NUMBER - a meaningless number, such as "2.3.4" has been used, or an invalid number of decimal places was specified for the display of a result

10. MISMATCHED ()'s - the left and right brackets in a formula do not match up.

11. EXPONENT RANGE - a number is too large to be held, e.g. the factorial of 100.

12. BAD DEVICE CALL - an attempt has been made to call the Formulator either from within itself or from within the calculator.

13. TYPE MISMATCH or MISMATCHED " - one or more quote characters (") have been used.

APPENDIX B THE SUPPLIED FORMULAE

The following pages contain a complete list of the supplied formulae whose functions are listed in chapter 5. Note that many of them extend over more than one line.

UK 15%,VAT:2=Price*(.15/1.15);Net:2=Price-VAT;(Price):2=Price
UK 15%,Price:2=Net*1.15;VAT:2=Price-Net;(Net):2=Net
France 18.6%,TVA:2=Prix*(.186/1.186);Net:2=Prix-TVA;(Prix):2=Prix
France 18.6%,Prix:2=Net*1.186;TVA:2=Prix-Net;(Net):2=Net
France 33%,TVA:2=Prix*(.33/1.33);Net:2=Prix-TVA;(Prix):2=Prix
France 33%,Prix:2=Net*1.33;TVA:2=Prix-Net;(Net):2=Net
Germany 14%,MWSt:2=Preis*(.14/1.14);Netto:2=Preis/1.14;(Preis):2=Preis
Germany 14%,Preis:2=Netto*1.14;MWSt:2=Preis-Netto;(Netto):2=Netto
Austria 20%,MWSt:2=Preis*(.20/1.20);Netto:2=Preis/1.20;(Preis):2=Preis
Austria 20%,Preis:2=Netto*1.20;MWSt:2=Preis-Netto;(Netto):2=Netto
Portugal 16%,IVA:2=Preco*(.16/1.16);Liquido:2=Preco/1.16;(Preco):2=Preco
Portugal 16%,Preco:2=Liquido*1.16;IVA:2=Preco-Liquido;(Liquido):2=Liquido
Spain 12%,IVA:2=Precio*(.12/1.12);Neto:2=Precio/1.12;(Precio):2=Precio
Spain 12%,Precio:2=Neto*1.12;IVA:2=Precio-Neto;(Neto):2=Neto
Italy 18%,IVA:2=Prezzo*(.18/1.18);Netto:2=Prezzo/1.18;(Prezzo):2=Prezzo
Italy 18%,Prezzo:2=Netto*1.18;IVA:2=Prezzo-Netto;(Netto):2=Netto
Belgium 19%,BTW:2=Prijs*(.19/1.19);Netto:2=Prijs/1.19;(Prijs):2=Prijs
Belgium 19%,Prijs:2=Netto*1.19;BTW:2=Prijs-Netto;(Netto):2=Netto
Holland 20%,BTW:2=Prijs*(.20/1.20);Netto:2=Prijs-BTW;(Prijs):2=Prijs
Holland 20%,Prijs:2=Netto*1.20;BTW:2=Prijs-Netto;(Netto):2=Netto
Turkey 12%,KDV:2=Fiat*(.12/1.12);Net:2=Fiat-KDV;(Fiat):2=Fiat
Turkey 12%,Fiat:2=Net*1.12;KDV:2=Fiat-Net;(Net):2=Net
Morocco 19%,TVA:2=Prix*(.19/1.19);Net:2=Prix-TVA;(Prix):2=Prix
Morocco 19%,Prix:2=Net*1.19;TVA:2=Prix-Net;(Net):2=Net
Price:2=Cost*(1+Mark Up%/100);(Cost):2=Cost
Sale Price:2=Price*(1-Discount%/100);(Price):2=Price
Compound Interest,Balance:2=Deposit*(1+Annual Rate%/(100*Incrs Per Year))**(Years*Inc)
Current Value,:2=Future Value*(1+Annual Rate%/(100*Incrs Per Year))**(-Years*Inc)

Annuity Value,Future:2=Annual Amount*(((1+Annual Rate%/(100*Incrs per Year))**(Years*Incr)-1)/(Annual R/100));Current:2=Annual A*((1-(1+Annual R/(100*Incr))**(-Years*Incr))/(Annual R/100))
Loan Repayment,:=Loan;Rate:=Annual Rate%/(100*Number Payments per Year);:2=Loan*Rate/(1-(1+Rate)**-(Years*Number))
Loan Repayment(APR),:=Loan;Rate:=(1+APR%/100)**(-1/Number Payments per Year);:2=Loan*((1-Rate)/(1-Rate**(Years*Number))/Rate)
APR%:1=apr:(Loan/Payment,Number Payments per Year,Years)
Repayment Mortgage,:=Loan;Rate:=Annual Rate%/100;X:=(1+Rate)**Years;Monthly :2=Loan*Rate*X/(12*(X-1));Z:=1+Rate*.75;Z1:=Z**Years;Monthly(MIRAS):2=-(Loan<=30000)*(Loan*Z1*(Z-1)/(Z1-1)/12)-(Loan>30000)*(Monthly -625*Rate)
Endowment Mortgage - does not include policy premiums,:=Loan;Rate:=Annual Rate%/1200;Monthly :2=Rate*Loan;Z:=Loan+(Loan>30000)*(Loan-30000);Monthly(MIRAS):2=(Loan-.25*(Loan+(Loan>30000)*(Loan-30000)))*Rate
Take Home Pay(87),AP:=Annual Salary*(1-Pension%/100);NI:=-.05*AP*(AP>=2028)-.02*AP*((AP>=3384)+(AP>=5208))+.09*(AP-15348)*(AP>15348);TB:=AP-Allowance;Tx:=-.27*TB*(TB>0);Pay:2=(AP-NI-Tx)/12;Tax:2=Tx/12;N.I.:2=NI/12;Pension Cont:2=(Annual-AP)/12
Converter,:=Hex:
Factorial,=fact:(int(r));(r)=int(r)
Gamma:4=Gamma:(n);(n)=n
Beta:4=Gamma:(n)*Gamma:(m)/Gamma:(n+m);(n)=n;(m)=m
Bessel:4=JBessel:(n,x);(n)=n;(x)=x
Euler=euler:(int(n));(n)=int(n)
Bernoulli=bernli:(int(n));(n)=int(n)
Zeta=zeta:(int(n));(n)=int(n)
Chebyshev Poly 1st,Y:=atan(sqr((1/(x*x))-1));:8=cos(n*Y)
Chebyshev Poly 2nd,Y:=atan(sqr((1/(x*x))-1));:8=sin((n+1)*Y)/sin(Y)
Binomial Coefs,=binomial:(int(n),int(r));(n)=int(n);(r)=int(r)
Binomial Dist,=binomial:(int(n),int(r))*(p**r)*((1-p)**(n-r));(n)=int(n);(r)=int(r);(p)=p
Poisson Prob,=exp(-a)*(a**int(r)/fact:(int(r)));(a)=a;(r)=int(r)
Chi:4=Chi:(p%,n);(p%)=p%;(n)=n
t Dist,Certainty%:4=100*Tdist:(int(n),x);(n)=int(n);(x)=x
Normal Prob:4=normal:(x);Ordinates:4=exp(-x*x/2)*.39894;(x)=x

Triangle Area,P:=(S1+S2+S3)/2;=SQR(P*(P-S1)*(P-S2)*(P-S3))
Regular Polygon,Area=Edge Len*Edge*No Sides*cos(pi/No S)/(sin(pi/No S)*4);Perimeter=Edge*No S;(Edge Len)=Edge;Long Radius=sqr(Short Radius*Short+Edge*Edge/4);Short=2*Area/(No S*Edge)
Regular Polygon,Area=Long Radius*Long*No Sides*sin(2*pi/No S)/2;Perimeter=2*No S*Long*sin(pi/No S);Edge Len=Perimeter/No S;(Long Radius)=Long;Short Radius=sqr(Long*Long-Edge*Edge/4)
Regular Polygon,Area=Short Radius*Short*No Sides*tan(pi/No S);Perimeter=2*No S*Short*tan(pi/No S);Edge Len=Perimeter/No S;Long Radius=sqr(Short*Short+Edge*Edge/4);(Short Radius)=Short
Parabola,Y(+/-)=sqr(4*Focus*X);Directrix X=-Focus;(Focus)=Focus;(X)=X
Parabola,X=1/(4*Focus)*Y*Y;Directrix X=-Focus;(Focus)=Focus;(Y)=Y
Ellipse,Y(+/-)=sqr(1-X*X/(a*a))*b;(X)=X;(a)=a;(b)=b
Ellipse,X(+/-)=sqr(1-Y*Y/(b*b))*a;(Y)=Y;(a)=a;(b)=b
Ellipse,Eccentricity=sqr(1-(1/(a*a)*b*b));Focus(+/-)=Ecc*a;Directrix X(+/-)=a/Ecc;Area=pi*a*b;(a)=a;(b)=b
Hyperbola,Y(+/-)=sqr((X*X/(a*a))-1)*b;(X)=X;(a)=a;(b)=b
Hyperbola,X(+/-)=sqr(1+(Y*Y/(b*b)))*a;(Y)=Y;(a)=a;(b)=b
Hyperbola,Eccentricity=sqr((1/(a*a)*b*b)+1);Focus(+/-)=Ecc*a;Directrix X(+/-)=a/Ecc;(a)=a;(b)=b
Asin:2=deg(atan(x/sqr(1-x*x)));(x)=x

Acos:2=deg(atan(sqr((1/(x*x))-1)));(x)=x
Hyperbolics,Y:=exp(x);Z:=exp(-x);COSH=(Y+Z)/2;SINH=(Y-Z)/2;TANH=1-2/(exp(2*X)+1);(x)=x
Sum Arithmetic Series,=(First Term+Last Term)*No of Terms/2
Sum Arithmetic Series,=First*No of Terms+Increment*No of T*(No of T-1)/2
Sum Geometric Series,:2=First*(1-R**No of Terms)/(1-R)
Complex Subtact,:=a;:=b;:=c;:=d;Real=a-c;Imag=b-d
Complex Multiply,:=a;:=b;:=c;:=d;Real=a*c-b*d;Imag=a*d+b*c
Complex Divide,:=a;:=b;:=c;:=d;X:=c*c+d*d;Real=(a*c+b*d)/X;Imag=(b*c-a*d)/X
Complex Exp,X:=exp(a);Real:9=X*cos(b);Imag:9=X*sin(b)
Complex Sinh,X:=exp(a);Y:=exp(-a);Real:9=(X*cos(b)-Y*cos(-b))/2;Imag:9=(X*sin(b)-Y*sin(-b))/2
Complex Cosh,X:=exp(a);Y:=exp(-a);Real:9=(X*cos(b)+Y*cos(-b))/2;Imag:9=(X*sin(b)+Y*sin(-b))/2
Polar Coords,r=sqr(x*x+y*y);Z:=deg(atan(y/x))-180*(x<0);theta:4=Z-(Z<0)*360;(x)=x;(y)=y
Polar Multiply,:=r1;T1:=theta 1;:=r2;T2:=theta 2;r3=r1*r2;Z:=T1+T2;theta 3:4=Z+(Z>360)*360
Polar Divide,:=r1;T1:=theta 1;:=r2;T2:=theta 2;r3=r1/r2;Z:=T1-T2;theta 3:4=Z-(Z<0)*360
Spherical Coords,:=x;:=y;:=z;r=sqr(x*x+y*y+z*z);A:=deg(atan(y/x))-180*((Y<0)and(X<0));phi:4=A-360*(A<0);B:=z/r;C:=deg(atan(sqr((1/(B*B))-1)));Theta:4=(C-180)*(z<0)-C*(z>0);(x)=x;(y)=y;(z)=z
Dot Product,:=A1;:=A2;:=A3;:=B1;:=B2;:=B3;=A1*B1+A2*B2+A3*B3
Cross Product,:=A1;:=A2;:=A3;:=B1;:=B2;:=B3;i=A2*B3-A3*B2;j=A3*B1-A1*B3;k=A1*B2-A2*B1
Inches>,(Inches):2=Inches;Feet:2=Inches/12;Yards:2=Feet/3;Miles:2=Yards/1760;Naut Miles:2=Feet/6080;metres:2=Inch*.0254;Kilometres:2=metres/1000
Feet>,Inches:2=Feet*12;(Feet):2=Feet;Yards:2=Feet/3;Miles:2=Yards/1760;Naut Miles:2=Feet/6080;metres:2=Feet*.3048;Kilometres:2=metres/1000

Yards>,Inches:2=Yards*36;Feet:2=Yards*3;(Yards):2=Yards;Miles:2=Yards/1760;Naut Miles:2=Feet/6080;metres:2=Yards*.9144;Kilometres:2=metres/1000
Miles>,Inches:2=Miles*63360;Feet:2=Miles*5280;Yards:2=Miles*1760;(Miles):2=Miles;Naut Miles:2=Feet/6080;metres:2=Miles*1609.343;Kilometres:2=metres/1000
NMiles>,Inches:2=NMiles*72960;Feet:2=NMiles*6080;Yards:2=Feet/3;Miles:2=Yards/1760;(Naut Miles):2=NMiles;metres:2=NMiles*1853.183;Kilometres:2=metres/1000
Metres>,Inches:2=metres*39.3701;Feet:2=metres*3.28084;Yards:2=metres*1.0936146;Miles:2=metres*6.213717e-4;Naut Miles:2=metres*5.39612e-4;(metres):2=metres;Kilometres:2=metres/1000
Km>,Inches:2=Km*39370.1;Feet:2=Km*3280.84;Yards:2=Km*1093.6146;Miles:2=Km*.6213717;Naut Miles:2=Km*.539612;metres:2=Km*1000;(Kilometres):2=Km
Fathoms>,(Fathom)=Fathoms;Yards=Fathoms*2;Metres:2=Fathoms*1.8288
Yards>,Fathom=Yards/2;(Yards)=Yards;Metres:2=Yards*.9144
Metres>,Fathom:2=metres*.5468;Yards:2=Fathom*2;(metres)=metres
Microns>,(Microns):4=Microns;Angstroms:4=Microns*1e4;Fermis:4=Microns*1e9;Metres:4=Microns*1e-6
Angstroms>,Microns:4=Angstroms*1e-4;(Angstroms):4=Angst;Fermis:4=Angst*1e5;Metres:4=Angst*1e-10
Fermis>,Microns:4=Fermis*1e-9;Angstroms:4=Fermis*1e-5;(Fermis):4=Fermis;Metres:4=Fermis*1e-15
Metres>,Microns:4=metres*1e6;Angstroms:4=metres*1e10;Fermis:4=metres*1e15;(metres):4=metres
Au>,(Astronomic units)=Astronomic units;Light Years=Astro*1.58e-5;Parsecs=Astro*4.85e-6;Metres=Astro*1.496e11
Light Years>,Au=Light Years*63242;(Light Years)=Light;Parsecs=Light*.3068;Metres=Light*9.461e15
Parsecs>,Au=Parsecs*206150;Light Years=Parsecs*3.26;(Parsecs)=Parsecs;Metres=Parsecs*3.084e16
Metres>,Au=Metres*6.6845e-12;Light Years=Metres*1.057e-16;Parsecs=Metres*3.24e-17;(Metres)=Metres
BMU>,(Basic Measurement Units):2=BMU;Points:2=BMU/6;Picas:2=BMU/72;Inches:2=BMU/1440;Centimetres:2=BMU*1.7639e-3
Points>,BMU:2=Points*6;(Points):2=Points;Picas:2=Points/12;Inches:2=Points/240;Centimetres:2=Points*.0105833
Picas>,BMU:2=Picas*72;Points:2=Picas*12;(Picas):2=Picas;Inches:2=Picas/20;Centimetres:2=Picas*.127
Inches>,BMU:2=Inches*1440;Points:2=Inches*240;Picas:2=Inches*20;(Inches):2=Inches;Centimetres:2=Inches*2.54
cm>,BMU:2=cm*566.93;Points:2=cm*94.488;Picas:2=cm*7.874;Inches:2=cm*.3937;(Centimetres):2=cm
Sq Inches>,(Sq Inches):2=Sq Inches;Sq Feet:2=Sq I/144;Sq Yards:2=Sq F/9;Acres:2=Sq Y/4840;Sq Miles:2=Acres/640;Sq Metres:2=Sq I*6.4516E-4;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100

Sq Feet>,Sq Inches:2=Sq Feet*144;(Sq Feet):2=Sq F;Sq Yards:2=Sq F/9;Acres:2=Sq Y/4840;Sq Miles:2=Acres/640;Sq Metres:2=Sq F*.092903;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100
Sq Yards>,Sq Inches:2=Sq Yards*1296;Sq Feet:2=Sq Y*9;(Sq Yards):2=Sq Y;Acres:2=Sq Y/4840;Sq Miles:2=Acres/640;Sq Metres:2=Sq Y*.836126;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100
Acres>,Sq Inches:2=Acres*6272640;Sq Feet:2=Acres*43560;Sq Yards:2=Acres*4840;(Acres):2=Acres;Sq Miles:2=Acres/640;Sq Metres:2=Acres*4046.85;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100
Sq Miles>,Sq Inches:2=Sq Miles*4.01449E9;Sq Feet:2=Sq Mi*27878400;Sq Yards:2=Sq Mi*3097600;Acres:2=Sq Mi*640;(Sq Miles):2=Sq Mi;Sq Metres:2=Sq Mi*2589984;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100
Sq Metres>,Sq Inches:2=Sq Metres*1550.01;Sq Feet:2=Sq Me*10.7639;Sq Yards:2=Sq Me*1.196;Acres:2=Sq Y/4840;Sq Miles:2=Acres/640;(Sq Metres):2=Sq Me;Hectares:2=Sq Me*1e-4;Sq km:2=Hect/100
Hectares>,Sq Inches:2=Hectares*1.5501e7;Sq Feet:2=Sq I/144;Sq Yards:2=Sq F/9;Acres:2=Sq Y/4840;Sq Miles:2=Acres/640;Sq Metres:2=Hect*1e4;(Hectares):2=Hect;Sq km:2=Hect/100
Sq km>,Sq Inches:2=Sq km*1.5501e9;Sq Feet:2=Sq I/144;Sq Yards:2=Sq F/9;Acres:2=Sq Y/4840;Sq Miles:2=Sq km*.3861;Sq Metres:2=Sq K*1e6;Hectares:2=Sq K*1e4;(Sq km):2=Sq K
Fl oz>,(Fl oz):2=Fl oz;Pints:2=Fl O/20;Gallons:2=Pints/8;Litres:2=FL O*.028413;US Gallon:2=FL O*.0075059;Barrels:2=US G/42
Pints>,Fl oz:2=Pints*20;(Pints):2=Pints;Gallons:2=Pints/8;Litres:2=Pints*.56826;US Gallon:2=Pints*.1501187;Barrels:2=US G/42
Gallons>,Fl oz:2=Gallons*160;Pints:2=Gallons*8;(Gallons):2=Gallons;Litres:2=Gallons*4.54609;US Gallon:2=Gallons*1.20095;Barrels:2=US G/42
Litres>,Fl oz:2=Litres*35.195;Pints:2=Litres*1.75975;Gallons:2=Litres*.21997;(Litres):2=Litres;US Gallon:2=Litres*.26417;Barrels:2=US G/42
US Gallons>,Fl oz:2=US Gallons*133.228;Pints:2=US G*6.6614;Gallons:2=US G*.83267;Litres:2=US G*3.7854;(US Gallon):2=US G;Barrels:2=US G/42
Barrels>,Fl oz:2=Barrels*5595.6;Pints:2=Barrels*279.78;Gallons:2=Barrels*34.972;Litres:2=Barrels*158.987;US Gallon:2=Barrels*42;(Barrels):2=Barrels
Cu Inches>,(Cubic Inches):2=Cu Inches;Cubic Feet:2=Cu I/1728;Cubic Yards:2=Cu I/46656;Cubic Centimetres:2=Cu I*16.387;Litres:2=Cu I*.016387

Cu Feet>,Cubic Inches:2=Cu Feet*1728;(Cubic Feet):2=Cu F;Cubic Yards:2=Cu F/27;Cubic Centimetres:2=Cu F*28317;Litres:2=Cu F*28.317
Cu Yards>,Cubic Inches:2=Cu Yards*46656;Cubic Feet:2=Cu Y*27;(Cubic Yards):2=Cu Y;Cubic Centimetres:2=Cu Y*764555;Litres:2=Cu Y*764.555
CC>,Cubic Inches:2=CC*.061024;Cubic Feet:2=CC*.3531467e-4;Cubic Yards:2=CC*.130795e-5;Cubic Centimetres:2=CC;Litres:2=CC/1000
Litres>,Cubic Inches:2=Litres*61.024;Cubic Feet:2=Litres*.03531476;Cubic Yards:2=Litres*.130795e-2;Cubic Centimetres:2=Litres*1000;(Litres):2=Litres
oz>,(oz):2=oz;Pounds:2=oz/16;Stone:2=Pounds/14;CWT:2=Stone/8;Ton(short):2=Pounds/2000;Ton(long):2=CWT/20;Kg:2=oz*.0283495;Tonnes:2=Kg/1000
Pounds>,oz:2=Pounds*16;(Pounds):2=Pounds;Stone:2=Pounds/14;CWT:2=Stone/8;Ton(short):2=Pounds/2000;Ton(long):2=CWT/20;Kg:2=Pounds*.453592;Tonnes:2=Kg/1000
Stone>,oz:2=Stone*224;Pounds:2=Stone*14;(Stone):2=Stone;CWT:2=Stone/8;Ton(short):2=Pounds/2000;Ton(long):2=CWT/20;Kg:2=Stone*6.35029;Tonnes:2=Kg/1000
CWT>,oz:2=CWT*1792;Pounds:2=CWT*112;Stone:2=CWT*8;(CWT):2=CWT;Ton(short):2=Pounds/2000;Ton(long):2=CWT/20;Kg:2=CWT*50.8023;Tonnes:2=Kg/1000
Short Tons>,oz:2=Short Tons*32000;Pounds:2=Short*2000;Stone:2=Pounds/14;CWT:2=Stone/8;(Ton(short)):2=Short;Ton(long):2=Short*25/28;Kg:2=Short*907.184;Tonnes:2=Kg/1000
Long Tons>,oz:2=Long Tons*35840;Pounds:2=Long*2240;Stone:2=Long*160;CWT:2=Long*20;Ton(short):2=Pounds/2000;(Ton(long)):2=Long;Kg:2=Long*1016.047;Tonnes:2=Kg/1000
Kg>,oz:2=kg*35.27395;Pounds:2=Kg*2.20462;Stone:2=Kg*.157473;CWT:2=Kg*.0196841;Ton(short):2=Pounds/2000;Ton(long):2=Kg*9.84206e-4;(Kg):2=Kg;Tonnes:2=Kg/1000
Tonnes>,oz:2=Tonnes*35273.95;Pounds:2=Tonnes*2204.62;Stone:2=Tonnes*157.473;CWT:2=Tonnes*19.6841;Ton(short):2=Pounds/2000;Ton(long):2=Tonnes*.984206;Kg:2=Tonnes*1000;(Tonnes):2=Tonnes
oz Fine or Troy>,(oz tr)=oz tr;oz av=oz tr*1.09714;Gram=oz tr*31.1035
oz Avoirdupois>,oz tr=oz av*.911458;(oz av)=oz av;Gram=oz av*28.3495
Gram>,oz tr=Gram*.0321507;oz av=Gram*.03527395;(Gram)=Gram
Sec of Arc>,(Sec of Arc):2=Sec Of Arc;Min of Arc:2=Sec/60;Degrees:2=Min/60;Radians:2=Sec*pi/648000
Min of Arc>,Sec of Arc:2=Min Of Arc*60;(Min of Arc):2=Min;Degrees:2=Min/60;Radians:2=Min*pi/10800
Degrees>,Sec of Arc:2=Degrees*3600;Min of Arc:2=Degrees*60;(Degrees):2=Degrees;Radians:2=Degrees*pi/180

Seconds>,(Seconds):2=Seconds;Minutes:2=Seconds/60;Hours:2=Minutes/60;Days:2=Hours/24;Weeks:2=Days/7;Tropical Year:2=Seconds*3.1689e-8
Minutes>,Seconds:2=Minutes*60;(Minutes):2=(Minutes);Hours:2=Minutes/60;Days:2=Hours/24;Weeks:2=Days/7;Tropical Year:2=Minutes*1.9013e-6
Hours>,Seconds:2=Hours*3600;Minutes:2=Hours*60;(Hours):2=Hours;Days:2=Hours/24;Weeks:2=Days/7;Tropical Year:2=Hours*1.1408e-4
Days>,Seconds:2=Days*86400;Minutes:2=Days*1440;Hours:2=Days*24;(Days):2=Days;Weeks:2=Days/7;Tropical Year:2=Days*2.7379E-3
Weeks>,Seconds:2=Weeks*604800;Minutes:2=Weeks*10080;Hours:2=Weeks*168;Days:2=Weeks*7;(Weeks):2=Weeks;Tropical Year:2=Weeks*.019165
Years>,Seconds:2=Years*3.1557e7;Minutes:2=Years*525950;Hours:2=Years*8765.8;Days:2=Years*365.24;Weeks:2=Days/7;(Tropical Year):2=Years
MPH>,(MPH):2=MPH;Feet/Sec:2=MPH*22/15;KPH:2=MPH*1.609343;Metres/Sec:2=KPH*5/18;Knots:2=MPH*33/38
FPS>,MPH:2=FPS*15/22;(Feet/Sec):2=FPS;KPH:2=FPS*1.09728;Metres/Sec:2=KPH*5/18;Knots:2=MPH*33/38
KPH>,MPH:2=KPH*.621372;Feet/Sec:2=MPH*22/15;(Km/Hour):2=KPH;Metres/Sec:2=KPH*5/18;Knots:2=MPH*33/38
Metres/Sec>,MPH:2=Metres per Sec*2.23694;Feet/Sec:2=MPH*22/15;KPH:2=Metres*18/5;(Metres/Sec):2=Metres;Knots:2=MPH*33/38
Knots>,MPH:2=Knots*38/33;Feet/Sec:2=MPH*22/15;KPH:2=Knots*1.8532;Metres/Sec:2=KPH*5/18;(Knots):2=Knots
MilesUKg>,(MilesUKgall):2=MilesUKgallon;MilesUSgall:2=MilesUK*.83267;KmLitres:2=MilesUK*.35401
MilesUSg>,MilesUKgall:2=MilesUSgallon*1.20095;(MilesUSgall):2=MilesUS;KmLitres:2=MilesUS*.42514
KmLitres>,MilesUKgall:2=KmL*2.82481;MilesUSgall:2=KmL*2.35215;(KmLitres):2=KmLitres
Poundals>,(Poundals)=Poundals;lbf=Poundals*.031081;Newtons=Poundals*.138255
lbf>,Poundals=lbf*32.17404;(lbf)=lbf;Newtons=lbf*4.448222
Newtons>,Poundals=Newtons*7.233011;lbf=Newtons*.224809;(Newton)=Newtons
Dynes>,Newtons=Dynes*1e-5;(Dynes)=Dynes
Newtons>,Dynes=Newtons*1e5;(Newtons)=Newtons
Joules>,(Joules)=Joules;Ergs=Joules*1e7;Calories=Joules*.238846;Therms=Joules*9.4787e-9;Btu=Therms*1e5;KWH=Joules/3.6e6
Ergs>,Joules=Ergs*1e-7;(Ergs)=Ergs;Calories=Ergs*.238846e-7;Therms=Ergs*9.4787e-16;Btu=Therms*1e5;KWH=Joules/3.6e6
Calories>,Joules=Calories*4.1868;Ergs=Joules*1e7;(Calories)=Calories;Therms=Calories*3.9685e-8;Btu=Therms*1e5;KWH=Calories*1.163e-6
Therms>,Joules=Therms*1.055e8;Ergs=Joules*1e7;Calories=Therms*2.5198e7;(Therms)=Therms;Btu=Therms*1e5;KWH=Therms*29.306

Btu>,Joules=Btu*1.055e3;Ergs=Joules*1e7;Calories=Btu*251.98;Therms=Btu*1e-5;(Btu)=Btu;KWH=Btu*2.9306e-4
KWH>,Joules=KWH*3.6e6;Ergs=Joules*1e7;Calories=KWH*8.5986e5;Therms=KWH*.034123;Btu=Therms*1e5;(KWH)=KWH
Joules>,(Joules)=Joules;eVolts=Joules*6.242e18;Hertz=Joules*1.509e33;Kelvin=Joules*7.244e22;Kg=Joules*1.113e-17
eVolts>,Joules=eVolts*1.602e-19;(eVolts)=eVolts;Hertz=eVolts*2.418e14;Kelvin=eVolts*1.16e4;Kg=eVolts*1.783e-36
Hertz>,Joules=Hertz*6.626e-34;eVolts=Hertz*4.136e-15;(Hertz)=Hertz;Kelvin=Hertz*4.8e-11;Kg=Hertz*7.375e-51
Kelvin>,Joules=Kelvin*1.381e-23;eVolts=Kelvin*8.62e-5;Hertz=Kelvin*2.084e10;(Kelvin)=Kelvin;Kg=Kelvin*1.537e-40
Kg>,Joules=kg*8.988e16;eVolts=kg*5.61e35;Hertz=kg*1.356e50;Kelvin=kg*6.511e39;(Kg)=kg
PSI>,(Pounds/Sq Inch)=PSI;Pascals=PSI*6894.8;mmHg=PSI*51.714;inHg=PSI*2.036;Millibars=Pascal/100;Atmosphere=PSI*.06805
Pascals>,PSI=Pascals*1.4504e-4;(Pascals)=Pascals;mmHg=Pascals*7.501e-3;inHg=Pascals*2.953e-4;Millibars=Pascals/100;Atmosphere=Pascals*9.869e-6
mmHg>,PSI=mmHg*.01934;Pascals=mmHg*133.3;(mmHg)=mmHg;inHg=mmHg*.03937;Millibars=Pascals/100;Atmosphere=mmHg/760
inHg>,PSI=inHg*.4911;Pascals=inHg*3386;mmHg=inHg*25.4;(inHg)=inHg;Millibars=Pascals/100;Atmosphere=inHg*.03342
Millibars>,PSI=Millibars*.014504;Pascals=Millibars*100;mmHg=Millibars*.7501;inHg=Millibars*.02953;(Millibars)=Millibars;Atmosphere=Millibars*9.869e-4
Atmosphere>,PSI=Atmosphere*14.7;Pascals=Atmosphere*1.013e5;mmHg=Atmosphere*760;inHg=Atmosphere*29.9;Millibars=Atmosphere*1013;(Atmosphere)=Atmosphere
Gauss>,(Gauss):2=Gauss;Tesla:2=Gauss*1e4
Tesla>,Gauss:2=Tesla*1e-4;(Tesla):2=Tesla
Curies>,(Curies)=Curies;Becquerels:2=Curies*3.7e10
Becquerels>,Curies:2=Becquerels*2.7e-11;(Becquerels)=Becq
Watts>,(Watts)=Watts;Horsepower=Watts*1.341E-3
Horsepower>,Watts=Horsepower*745.7;(Horsepower)=Horsepower
RPM>,(RPM):2=Revs per Minute;Hertz:2=Revs/60
Hertz>,RPM:2=Hertz*60;(Hertz)=Hertz
Fahrenheit>,(Fahrenheit)=Fahrenheit;Celsius:2=(Fahrenheit-32)*5/9;Kelvin:2=Celsius+273.15

Kelvin>,Fahrenheit:2=32+(Kelvin-273.15)*9/5;Celsius:2=Kelvin-273.15;(Kelvin):2=Kelvin
em>,(Electron Masses)=Electron M;pm=Electron M*5.4463e-4;nm=Electron M*5.4388e-4;kg=Electron M*9.1091e-31
pm>,em=Proton Masses*1836.1;(Proton Masses)=Proton M;nm=Proton M*.99863;kg=Proton M*1.6725e-27
nm>,em=Neutron Masses*1838.6;pm=Neutron M*1.001375;(Neutron Masses)=Neutron M;kg=Neutron M*1.6748e-27
Kg>,em=kg*1.0978E30;pm=kg*5.979e26;nm=kg*5.9708e26;(kg)=kg
Watts=Amps*Volts
Watts=Amps*Amps*Ohms
Watts=Volts*Volts/Ohms
Volts=Amps*Ohms
Amps=Volts/Ohms
Ohms=Volts/Amps
Const Acc,Final Velocity=Initial Velocity+Acceleration*Time;Distance=Init*Time+Acc*Time*Time/2
Const Acc,Final Velocity=sqr(Initial Velocity*Initial V+2*Acceleration*Distance)
Const Acc,Distance=(Initial Velocity+Final Velocity)*Time/2
Const Acc,Energy=Mass*(-Initial Velocity*Initial V+Final Velocity*Final V)/2
Force=Mass*Acceleration
Momentum=Mass*Velocity
Final Speed=(Initial Speed 1*Mass 1+Initial Speed 2*Mass 2)/(Mass 1+Mass 2)
Joules=Newtons*Metres
Newtons=kg*MetresPerSec2
Focal Length=1/(1/Object Dist+1/Image Dist)
Image Dist=1/(1/Focal Length-1/Object Dist)
Pendulum Period(sec),:2=2*pi*sqr(Metres/9.807)
Pendulum Period(sec),:2=2*pi*sqr(Feet/32.17)

Earth Satellite,R:=6370+Km Height;Speed(Kms/sec):2=6370*sqr(9.8e-3/R);Period(Hours):2=2*pi*R/Speed/3600
Resistance2,:2=1/(1/Resistance 1+1/Resistance 2)
Resistance3,:2=1/(1/Resistance 1+1/Resistance 2+1/Resistance 3)
Resistance4,:2=1/(1/Resistance 1+1/Resistance 2+1/Resistance 3+1/Resistance 4)
RL Circuit constant V,Amps Growth=Voltage/Ohms*(1-exp(-Ohms*Seconds/Henrys))
RL Circuit,Amps Decay=Init Amps*(exp(-Ohms*Seconds/Henrys))
Coulombs Law,Energy=Charge 1*Charge 2*8.98e9/Radius
Boyles Law,Pressure=Gas Constant/Volume
Boyles Law,Volume=Gas Constant/Pressure
Adiabatic Gas Law,X:=Init Vol/Final Vol;Pressure=Init Pressure*(X**Gamma);Kelvin=Init Kelvin*(X**(Gamma-1));Work=(Final V*Pressure-Init V*Init P)/(1-Gamma)
Ideal Gas Law,Cubic Metres:2=8.31*Moles*Kelvin/Pascal
Ideal Gas Law,Pascal:2=8.31*Moles*Kelvin/Cubic Metres
Expanding Gas (Isothermal),Joules=8.31*Moles*Kelvin*(ln(Final Cu M/Init Cu M))
Expanding Gas (Adiabatic),Joules=(Final Pascals*Final Cu M-Init Pascals*Init Cu M)/(Gamma-1)
Deniers=9e6*Kg/Metres
Kg=Deniers*Metres/9e6
Metres=9e6*Kg/Deniers

Radar range,Nmiles:1=1.22*sqr(Height in Feets);Km:1=1.85*Nmiles
Radar range,Nmiles:1=2.21*sqr(Height in Metres);Km:1=1.85*Nmiles
Sea Horizon,Nmiles:1=1.17*sqr(Height in Feet);Km:1=1.85*Nmiles
Sea Horizon,Nmiles:1=2.12*sqr(Height in Metres);Km:1=1.85*Nmiles
Extreme range,Nmiles:1=1.17*(sqr(Observer Height in Feet)+sqr(Object Height in Feet));Km:1=1.85*Nmiles
Extreme range,Nmiles:1=2.12*(sqr(Observer Height in Metres)+sqr(Object Height in Metres));Km:1=1.85*Nmiles
Barometer Correction to Mean Sea Level,approx:1=Feet/26-Celsius*Feet/7000
Barometer Correction to Mean Sea Level,approx:1=Metres/8-Celsius*Metres/2100
A:=App Speed;B:=App Bear;C:=Drift Speed;D:=Drift Bear;X:=pi-rad(B-D);True Speed:2=sqr(A*A+C*C-2*A*C*cos(X));Y:=B+(1+2*(((D<B)and(D+180>B))or((D>B)and(D>B+180))))*deg(atan(sqr((1/(1-(sin(X)*C/True Speed)**2))-1)));True Bear:0=Y+360*((Y>=360)-(Y<0))
A:=True Speed;B:=True Bear;C:=Drift Speed;D:=Drift Bear;X:=rad(D-B);App Speed:2=sqr(A*A+C*C-2*A*C*cos(X));Y:=B-(1+2*(((D<B)and(D+180>B))or((D>B)and(D>B+180))))*deg(atan(sqr((1/(1-(sin(X)/App Speed*C)**2))-1)));App Bear:0=Y+360*((Y>=360)-(Y<0))
Photo printing,New Exposure:2=Old exposure*(New Height/Old Height)**2
Rectangular room,Wall Area=2*Height*(Width+Length);Ceiling/Floor=Width*Length;Total Area=Wall+2*Ceiling