the HORCOM logo

horcom

The handbook of HORCOM, the astrology program by Robert Rettig

Welcome

HORCOM is a complete astrology program for Windows and Linux. It casts birth charts in seven house systems, optionally with topocentric positions, follows transits and directions, computes solar, lunar and planetary returns, compares two people in double wheels, composites and combines, walks the seven year phases of the Munich rhythm theory and searches whole chart collections statistically. Robert Rettig wrote and refined it from about 1989 until 2010. He computed his own ephemerides for Chiron, Quaoar, Eris and other bodies when none existed, wrote the commentary texts that come with the program, and wished for HORCOM to live on.

Start here

Installation

Download and start HORCOM on Windows or Linux, update it, and find where your settings and chart collections are kept.

Tutorial

From the first chart to reading it, the chart settings, transits, returns, directions, the Munich rhythm theory, partner charts and printing.

Robert's commentaries

Inside the program, ABOUT HORCOM and F1 open Robert Rettig's own explanations of every menu, from the introduction to directions and the Munich rhythm theory.

What you can do

Technical reference

The pages below are for developers and for anyone curious how HORCOM calculates. Each describes one module of the C++ rewrite, explains the original mechanics it preserves, and lets Robert speak in his own words wherever his comments still tell the story best. You do not need them to use the program.

// IT IS BY NO MEANS RECOMMENDED, HOWEVER, TO REFORMULATE ROUTINES USED IN THE CALCULATION CHAIN YOURSELF. THE DEVIL IS ALMOST ALWAYS IN THE DETAIL ! // SO: IN THE CALCULATION CHAIN LEAVE EVERYTHING AS FAR AS POSSIBLE AS IT IS, ESPECIALLY THE ORDER OF THE PROCEDURES AS WELL.
Robert Rettig, in the preamble of his ephemeris source delivery, 2000. This advice is the standing policy of the whole port.

Modules

core

Constants and the angle kernel. Normalisation, the quadrant arctangent, the comparison reconcilers.

PORTED · 100% tests green

time

Calendar and Julian date, time arguments, delta T, sidereal time.

PORTED · 100% tests green

ephem

The position engines. VSOP series, the Moon, Kepler orbits, his integrated ephemeris files, nutation and precession.

PORTED · 100% tests green

chart

The chart pipeline. Geocentric conversion, the protected parallax, angles and houses, the lunar points, the Part of Fortune, the heliocentric mode.

PORTED · 100% tests green

aspects

The harmonic aspect scanner, his orb system, the Schiemenz counters and the midpoints.

PORTED · 100% tests green

render

The wheel as a display list with his geometry, SVG export and the command line front end.

PORTED · 100% tests green

data

His file formats byte for byte. Chart collections, places, the 1252 text bridge, the settings stream, the statistics store with the search conditions, the commentary texts.

PORTED · 100% tests green

app

The Qt shell in the celestial theme of this handbook. The menu bar keeps the five columns of his main menu, grouped for daily work, and every program of the original stands behind them. German natively, English by translation.

THEMED · Qt 6 Widgets

Conventions of the port

Robert's comments travel with the code

Wherever one of his comments still applies to the converted routine it is carried over verbatim, in his German wording, marked with the prefix //RR. One comment per routine names the original HORCOM procedure it was ported from. Code comments stay self contained, they never point at files outside the repository.

Same numbers first

Every ported routine first reproduces the original's output and lands together with its tests, transcription pins plus independent values from the literature Robert himself used, above all Jean Meeus. Only under green tests may a routine be restructured. Where the original and the rewrite disagree, the original is presumed right.

The two integer worlds of GFA BASIC

GFA BASIC has INT, which rounds down, and FIX, which truncates toward zero. The original uses both deliberately. The angle normalisers ng, nb, nh are built on INT and land in [0, period), while wz, the degree within a zodiac sign, is built on FIX and keeps its sign. The port maps them to std::floor and std::trunc and its tests pin both behaviours.

Guards stay where he put them

The epsilon kk = 1e-10 appears in the original exactly where a division or an arctangent argument could hit zero. The port adds it in exactly those places and nowhere else, because the branch behaviour of the aspect logic depends on it.

Verification

The test suite currently holds 131 test cases with 1622 assertions, all green, built with MSVC at warning level 4 and with GCC and Clang on Linux, warnings as errors on all three, and on Linux once more under the address and undefined behaviour sanitizers. The three compilers produce byte identical coordinate tables and wheels, see Installation. The anchors are Jean Meeus's worked examples, the binary data files themselves and cross checks between independent engines, the Chapront theory against the integrated Pluto file among them. The golden reference now exists, tests/golden holds fifty synthetic charts recorded from the original HORCOM7P.EXE running under emulation, dates 1900 to 2012 across both hemispheres, the equator, the polar circle and the calendar edge cases. All 550 planet longitudes agree with the original within one arc second of display rounding, 47 of 50 charts agree on every house cusp, and the three exceptions are a single cusp 1.1 arc minutes off whose cause, the early stop of the original's Placidus iteration in GFA arithmetic, is documented there. tools/compare_golden.py replays the comparison.