Montag, 23. Dezember 2013

Einstellungen, Vorbereitungen, Genauigkeit

Schön, die Debugging-Perspektive von Eclipse CDT! Überhaupt fühlt sich diese IDE robust und zuverlässig an.

Den Fehler konnte ich als vom letzten Testfall herrührend identifizieren und habe ihn dann mit einer separaten Fixture tcr1.bin, die nur diesen einen Fall enthält, analysiert.

TESTCASE
description:New mode: Barycentric, directly from file
planets:0-9,12-16
flags:416048  # NEW_MODE + ICRS + BARYCTR + XYZ + TRUEPOS + J2000
dates:1.1.1000-31.12.2000,5,randomly
Es war dann relativ leicht zu finden. Mir fiel wieder ein, dass dieser letzte Testfall einen experimentellen Modus prüfen sollte, in dem ich, statt das ganze System allmählich umzubauen, den direkten Weg zur Planetenposition über das File gehe.

Dabei hatte ich mich darauf focussiert, schnell zum Ziel des Experiments zu kommen und alles so zu bauen, dass es gerade durchläuft. Hierfür hatte ich den Ephemeridenpfad direkt angegeben, was nach der Portierung natürlich nicht mehr stimmte. Das Lesen des Files führte dann zu einem Abbruch.

Hier die Korrektur:

// File name   
   swi_gen_filename(tjd, ipl, fname);
   strcpy(qfname, "/usr/swisseph/ephe/");  // temporary
   strcat(qfname, fname);
   printf("%15.5f %.2d: %s\n",tjd,ipl,fname);
"Temporary" natürlich, weil an dieser Stelle, wenn sich dieser Weg als gangbar erweist, die Auswertung des Umgebungsparameters stehen wird.

Der Test läuft nun für die inneren Planeten mit OK, während die äusseren Planeten ein NOK bringen. Der Grund ist, wie ich mich dunkel erinnere, dass die äusseren Planeten mit einem anderen Verfahren im File gespeichert werden als die inneren. Das war damals noch offen geblieben.

Die DOS-Zeilenvorschübe 0D0A wirkten sich beim Einlesen der Kommentarzeilen aus den Fixtures schädlich auf die Ausgabe aus: In der Konsole wirken sie wie "Wagenrücklauf ohne Zeilenvorschub", so dass die gerade ausgegebene Zeile mit dem nächsten String überschrieben wird. Habe sie daher im vi mit dem Kommando %s/^M//g (tippe "Ctrl+V,Ctrl+M") in die plattformgemäss richtige Form gebracht (nur 0A).

In meinem .profile habe ich noch folgende Einstellungen eingetragen:

# Set dynamical load library path 
export LD_LIBRARY_PATH="/opt/lib:$LD_LIBRARY_PATH:."

# Look also in current directory 
export PATH="$PATH:."

export SE_EPHE_PATH=/usr/swisseph/ephe
Wobei allerdings merkwürdigerweise der LD_LIBRARY_PATH-Export nicht funktioniert. Wenn ich eine neue Konsole öffne, ist der Pfad wieder initial.

In den übrigen Testfällen "nach alt" gibt es für alle Planeten Abweichungen im Bereich von 10^-8. Woher diese stammen, wäre noch zu klären. Ich weiss auch nicht mehr, ob ich sie auch auf dem Windows-Rechner vor zwei Jahren noch hatte, vermute aber eher nicht. Mögliche Gründe:

  • Änderungen, die ich vor zwei Jahren an den swe... Files gemacht und im neuen Projekt noch nicht nachgezogen habe. Hier wäre eine diff-Tour angebracht.
  • Weiterentwicklungen der Swiss Ephemeris (denn ich habe das Projekt auf dem neuesten Stand der Swiss Ephemeris aufgesetzt).

Keine Kommentare:

Kommentar veröffentlichen