All in Java
Programs and Sources
$\newcommand{\I}{\:{\rm i}}$

# Java Programs

Here you will find the Java programs, that have been mentioned on other pages of the site. All jar files may be downloaded and used for free. The programs have been tested under Linux and Windows. Unfortunately, I have no access to a Mac, hence I can say nothing about the usability on this platform. For some of the programs I publish also the sources. These may likewise be downloaded, compiled and modified.

The programs are of varying quality. Some are primitive console applications, written ad hoc  to verify a certain numerical result, others are more elaborated and provide a graphical user interface or a helpfile.

To run the Java programs, it is necessary to install the Java® SE Runtime Environment (JRE) on your computer. Unfortunately, several Linux distributions have a so called openjdk preinstalled, which in most cases is out-of-date. This should be deinstalled by sudo apt-get remove --purge openjdk*, and the original JRE by Oracle® should be installed. The latter is found at webupd8team and some other sites.

## Mappings of the Complex Plane

The motivation to write this program came by reading the book Algebra by Michael Artin. In the chapter about the fundamental theorem of algebra a very ostensive proof is sketched.

Look at the image of a circle in the complex plane mapped by a non constant polynomial with non vanishing constant term. If the circle to be mapped is very large, the highest power of the polynomial dominates the mapping: the image of the circle is a closed curve winding around the origin in great distance. If the circle to be mapped is very small, the constant term dominates: the image of the circle is mapped onto a closed curve winding around the point representing the constant term in very small distance.

To make this plausible, write the complex number $z$ in polar coordinates: $$z = r e^{\I\varphi}$$ Then we have $r \ge 0$, $r \in \mathbb{R}$ and for the powers it holds $$z^n = r^n e^{n\I\varphi}$$ The exponentiation expands the radius for $r \gt 1$ (a circle becomes larger) and it shrinks the radius for $r \lt 1$ (a circle becomes smaller). The term $e^{\I\varphi}$ causes the $n$-fold winding of the image around the origin or the constant term respectively.

If you shrink a very large circle continuously to a very small one, the image curves will change continuously as well. Because the image curve comes from very far away and transforms to a tiny curve around the constant term, it must pass over the origin at one moment [1] – and voila!  We have proved the fundamental theorem of algebra.

Of course, this is only a sketch of a proof. In Artin's book the matter is explored in much more detail. For example you have to study the effects of the powers $a_kz^k$ with $0 \lt k \lt n$ on the image of a circle.

With help of the program you may study the images of different geometric figures (circles, grids, lines etc.) under a polynomial map in the complex plane. The figures may be scaled and moved with the mouse, so one gets a vivid impression, how the image curve expands, shrinks or passes over the origin.

To install the program, it suffices to unpack the file Polynome.zip into an arbitrary directory on your computer. If the JRE has been correctly installed, the program may be started by double clicking on the jar file (with Linux you may have to create a program starter, or you may start it from a console). The sources (Polynome.java, Complex.java) are published as well, but no further documentation is provided.

## Polygon Constructions

It's rather about two programs Hermes and Kompressor, where the only purpose of the second is, to compress the output of the first.

The program Hermes computes the square root expressions, needed for the construction of the regular pentagon, the 17-gon, the 257-gon and the 65537-gon. The mathematical foundation is discussed in length within the scope of a kind of eBook Gauss' Java Trip on this site. In particular, the used algorithms are described in detail in chap.6. In that chapter you will also learn, how to install and run the said programs.

Both of the programs are Java console applications, there is no fancy graphical user interface. Both programs deliberately have a Spartan design, in order not to drown the important algorithms in a sea of trivialities. So even output to a file is abandoned and the lists are printed to System.out (of course Kompressor cannot avoid input  from a file). Consequently, it is strongly recommended, to redirect the output stream to a file, if the calculations for the 65537-Eck are done.

## Siblings and Partners

The program Mischpoke belongs definitely to the mentioned primitive ad hoc  programs. It had been written originally in Java, to check the computations performed in the article The Engagement Party, Because it's so primitive, I have ported it to JavaScript, so you may play around with it on-line. In order to avoid conflicts between the JavaScript of MathJax and the JavaScript of the program, it has been outsourced to a separate page. You will find it ⇒ here.

## A Solar System Simulator

The program Newton simulates the motion of planets in the Solar system. However, you are not restricted to existing objects but may also specify fictional planets, e.g. a mirror-symmetrical twin-planet of the Earth, and watch their movement (if you read the Mathematical Marginal Urmel's Twin Planet on this site, you know the origin of that idea).

Over time several other functions have been built into the program, have a look at the Help File for more information. Of course, the program is no sophisticated planetarium program like Stellarium, but it comes along with the source files, which you may copy, modify and compile as you like it.

To install the program, download the file Newton.zip and unpack it into an arbitrary folder on your computer. Then you may start the program by double-clicking on the file Newton.jar (with Linux you may have to create a program starter, or you may start it from a console). You will find more details about installation and operation of the program in the said help file. The source files are found here:

## Calendrical Calculations

The program ScaligerFX [2] is a calendar program, which rests upon the Julian day count, invented by J. J. Scaliger in 1583. It permits a lot of different calculations with dates.

So you may find out with a few clicks, when your age will exceed the number of days, Euler lived on earth, or you may stagger a friend of yours by congratulations to his or her 20000th day of life, or you get stunned by the fact, that the age of the famous number theorist Igor Rostislawowitsch Schafarewitsch (or Shafarevich in English transliteration), who passed away in January 2017, is 34230 days, a number that splits into the prime factors $2 \cdot 3 \cdot 5 \cdot 7 \cdot 163$ (the significance of 163 is discussed in the article Heegner number in Wikipedia).

Several files with birthdays and obits of prominent persons (extracted from Wikipedia) belong to the program. These files may be edited, to reflect your own opinion with regard to the prominence of people.

The program is equipped with two helpfiles (German and English) as PDF:

I do not publish sources of this program, because it's a rather bulky project with about 5100 lines of code. Furthermore, the interesting mathematics is hidden within the Java SE8 Date-and-Time-API and within the package org.threeten.extra.chrono.JulianChronology. The latter may be used freely, but the copyright is not mine: [(c) 2007-present, Stephen Colebourne & Michael Nascimento Santos]. Because the program ScaligerFX depends on JavaFX, an up-to-date JRE (Java SE Runtime Environment 8u40 or higher) has to be installed on your computer.

To install the program, the file Scaliger.zip has to be downloaded and unpacked into an arbitrary directory on your computer. If the JRE has been correctly installed, the program may be started by double clicking on Scaliger.jar (with Linux you may have to create a program starter, or you may start it from a console). More about the configuration of the program can be found within the aforesaid helpfiles.