# Math-Intensive Reports with GNU Emacs and Calc, Part 1

in
Learning some of the secrets of Emacs and its applications for creating magic with numbers and calculations.
Where Does Calc Fit In?

Calc is an elisp package originally written by Dave Gillespie. Lately, however, many others have contributed to its development in the classical manner: hackers working over the Internet. Once it has been downloaded and installed in your local emacsen directory (the place where elisp add-on packages live) and a few lines have been added to your .emacs configuration file, Calc becomes an invisible math miracle worker. In any Emacs buffers you choose, you can slip quickly and silently into and out of Calc mode (any of several such modes, really) with a simple keystroke or two.

A Simple Example of Calc

Let's do a simple calculation of a right triangle. If the two short legs are denoted a and b, where (say)

\$ a := 3.1 \$

and

\$ b := 4.1 \$

then the length of the hypotenuse is

\$ c := sqrt(a^2 + b^2) => 5.14003891036 \$.

I didn't have to get my calculator out to do this. I did it right inside Emacs. Furthermore, this file is live. That means in order to update the calculation for an arbitrary right triangle, all I have to do is is change the values assigned to a, b or both, position the cursor inside the first formula and type M-# e (M for Meta, the Alt key on most PCs; the keystroke sequence therefore is Alt-# e, which is Alt-Shift-3 e). The Calc package loads up, and the value of c is immediately updated.

Now that I have the variables a, b and c defined, I can use their values over and over:

```     \$ a + b + c => 12.3400389104 \$     (the perimeter)
\$ a^2 + b^2 - c^2 => 0. \$          (a check on the calculation)
```
What This Article Is and Is Not

I am going to provide you with a short and incomplete survey of Emacs' ability to perform mathematical and numerical evaluations like my examples, right in the editing buffer, by means of Calc.

I do not intend to explain in detail how to download, install or use Emacs (although the Resources section gives some pointers). Nor do I intend to waste words disparaging other editors (such as vi), nor browbeat their users about the superiority of Emacs. And I won't go into any real detail on how to start up the Calc package, nor will I delve deeply into the keystroke sequences needed to cause Calc to perform its magic. All that stuff is documented elsewhere; you simply need to make your decision to learn Emacs. What I am going to show you are some astounding (and generally unknown) capabilities of Emacs for performing mathematical analysis, courtesy of Calc.

What You Need

To have the capability to write live ASCII math documents, you and your computer must have a few required pieces:

• An environment that is capable of running Emacs;

• Emacs itself, installed and configured to your taste;

• The calc.el math plug-in (I suppose we could call it that) installed in your local emacsen directory; and

• Some practice using Emacs.

Emacs is basically a UNIX program, but it has been written carefully so it may be ported to other operating systems. Versions are available for almost every computing platform in existence: all known Unices and UNIX workalikes (such as Linux and BSD); all versions of Windows since Windows 95; UNIX-like environments, such as the Cygwin tools, that run under Windows; and various other platforms and operating systems as well.

If you run UNIX or Linux, Emacs is probably already available on your system; type emacs at the command prompt and see if it pops up. If it doesn't, it is a simple download away; see the Resources.

If you are a Windows user, you will need to download and install the Windows version of Emacs, called NTEmacs. It is a standard Windows-style self-installing executable. If you are using the Cygwin tools under Windows, be aware that NTEmacs doesn't build under that UNIX-like package but does work well with it.

Next, you need the Calc package, known by the filename calc.el. Download and install it (see Resources), and you can then turn on the calculator any time you are editing by using the M-# keyboard command.

Further Motivation

Here is another example, one that is somewhat close to home for me. I am going to calculate some cross-sectional area properties for a beam. Let's say the beam's cross section is rectangular, of height "height" and width "width". (Of course, I have obtained all the dimensional information from the preliminary engineering drawings.) I merely type the following Calc assignments into my editing buffer (that is to say, directly into the window that shows the article I am writing now):

```     \$ height := 0.65 in \$
\$ width := 0.25 in \$
```

(I am including units here; the dimensions are in inches.) Then I can start Calc and perform the following calculations. First, I need the cross sectional area of the beam. I enter

\$ area := width height => \$

Then I type M-# u, u for update, and I immediately see the ab ve line change to this:

\$ area := width height => 0.1625 in^2 \$

The answer, complete with derived units, pops up on my editing screen, to the right of the => symbol.

Later on, I'll need to use these results to calculate bending stresses. To do that, I first have to calculate the moment of inertia (MI) of the cross section. Without getting into the details, the moment of inertia is an important geometric property of a beam. (The following formula is correct only for a rectangular cross section.)

\$ MI := width height^3 / 12. => 5.72135416667e-3 in^4 \$

For many purposes, the section modulus Z is a more useful number. For this simple rectangular cross section, it is equal to the moment of inertia divided by half the section height:

\$ Z := 2. MI / height => 0.0176041666666 in^3 \$

I did this example in about one minute, entirely inside my editor's screen buffer. And I did not have to use any other program to perform these calculations---only Emacs and Calc, working smoothly together.

A few explanations are in order to help you read this and the following examples:

1. I am using the embedded mode of Calc, which evaluates the formulas in the buffer where they are written. (Other modes of operation are available that show you a calculator pop-up screen or a stack. I won't be using those modes because they are not so useful for reports.)

2. Formulas are bracketed by dollar signs to facilitate recognition by Calc (other syntactical conventions are also supported).

3. Multiplication is indicated by adjacency of the factors ("width height" is width times height). Whitespace must separate the factors.

4. => is the evaluates-to operator; in embedded mode, the value of the expression on its left is inserted on its right.

5. := is an assignment operator. The variable on its left receives the value on its right, and that variable can be used in future calculations.

______________________

Webcast
How to Build an Optimal Hadoop Cluster to Store and Maintain Unlimited Amounts of Data Using Microservers

Realizing the promise of Apache® Hadoop® requires the effective deployment of compute, memory, storage and networking to achieve optimal results. With its flexibility and multitude of options, it is easy to over or under provision the server infrastructure, resulting in poor performance and high TCO. Join us for an in depth, technical discussion with industry experts from leading Hadoop and server companies who will provide insights into the key considerations for designing and deploying an optimal Hadoop cluster.

Learn More

Sponsored by AMD

White Paper
Red Hat White Paper: Using an Open Source Framework to Catch the Bad Guy

Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6

Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.

Learn more about catching the bad guy in this free white paper.

Sponsored by DLT Solutions