ALIs

kommt noch

IMSL-Bibliotheken

Die verschiedenen IMSL-Bibliotheken am LRZ

Die Hersteller- und Lieferfirma der numerischen Bibliotheken ist Visual Numerics, Inc., wobei IMSL ein "registered trademark" von Visual Numerics, Inc. ist.

Mit der Kündigung des Wartungsvertrags mit VNI zu Ende 1997 wurde die IMSL-Software am LRZ praktisch eingefroren (ein Update der C-Library erfolgte noch im Dezember 1998) und verschwindet wegen der Kopplung der Lizenzen an feste Rechner immer weiter: wie z.B. die IMSL Fortran 90 MP Library, die nur an Cray-Rechnern zur Verfügung stand.

Jetzt sind noch die IMSL-Installationen an den Sun-Workstations übriggeblieben:

  • Fortran Numerical Libraries (FNL) Version 3.0,
    formal bestehend aus MATH/Library und STAT/Library, wobei die SFUN-Library (spezielle Funktionen) in der MATH-Library enthalten ist. Die Dokumentation enthält nach wie vor die Teile MATH, STAT und SFUN.
    Installierte Version:
    Von IMSL als Binärversion geliefert (unter Solaris Version 2.3, SPARCompiler FORTRAN 2.0.1 erzeugt)
  • C Numerical Libraries (CNL) Version 2.0
    Die C Bibliothek besteht aus den gleichen Teilen wie die Fortran Bibliothek, die entsprechenden Funktionsnamen sind der Dokumentation zu entnehmen.
    Installierte Version:
    Von IMSL als Binärversion geliefert (unter Solaris Version 2.3, SPARCompiler C 3.0 erzeugt)
  • Exponent Graphics (EG) Version 2.1
    Diese Grafikbibliothek ist über selbst zu schreibende C- bzw. (nach der später erfolgten Erweiterung) auch über eigene Fortran-Programme zu benutzen. Dabei enthält sie auch eine Untermenge von numerischen Routinen in C bzw. Fortran, die für unmittelbare grafische Darstellungen von Kurven, Flächen, Körpern usw. als Berechnungsgrundlage notwendig sind. Über Modifikationen von Attributen und Parametern innerhalb gewisser Files kann man ein Problem variieren, ohne es immer wieder neu übersetzen zu müssen. Durch diese Vielfalt grafischer Gestaltungsmöglichkeit war sie als geeignete Ergänzung zur numerischen IMSL-Bibliothek gedacht.

Dokumentation zur numerischen IMSL-Bibliothek

  • Herstellerdokumentation:
          MATH/Library User's Manual
          STAT/Library User's Manual
          SFUN/library User's Manual
    
    (Benutzerleihschrift (3 Softcoverbände) über Benutzersekretariat)
  • Die über /client/bin/imslhelp an den Suns als aufrufbar konzipierte Online-Dokumentation ist wegen zu grosser Abhängigkeit von der Herstellerprogrammierung praktisch nicht mehr benutzbar (insbesondere nicht unter VistaExceed, vielleicht noch an X-Terminals).
    Voraussetzung war dabei eine richtig gesetzte DISPLAY-Environmentvariable.

Single- und Double-Precision-Variante der IMSL-Subroutinen:

Im Gegensatz zu NAG gibt es innerhalb der IMSL-Bibliothek jede Routine sowohl in single als auch in double Precision. Um zur Double-Precision-Variante einer Subroutine zu gelangen, wird dem Namen der Single-Precision-Routine ein D vorangestellt. Etwas differenzierter ist die Namensgebung bei den BLAS-Routinen.
Die Auswahl - single oder double Precision - kann daher bei IMSL im Verhältnis zur notwendigen Genauigkeit bzw. zur Verfahrensgenauigkeit erfolgen.
Um aber vergleichsweise die Genauigkeit von Rechnungen auf den alten Mainframes auch auf den Suns zu erzielen, müßten rein schematisch die Double-Precision-Varianten jeder in single Precision verwendeten IMSL-Subroutine aufgerufen werden.
Vgl. auch die Hinweise zur Verwendung der Double-Precion-Version für die NAG-Library.

Inhalt der numerischen IMSL-Bibliotheken

Der Inhalt für f77- und C-Bibliothek ist gleich:

MATH/Library
      Linear Systems
      Eigensystem Analysis
      Interpolation and Approximation
      Integration and Differentiation
      Differential Equations
      Transforms
      Nonlinear Equations
      Optimization
      Basic Matrix/Vector Operations
      Utilities

STAT/Library
      Basic Statistics
      Regression
      Correlation
      Analysis of Variance
      Categorical and Discrete Data Analysis
      Nonparametric Statistics
      Test of Goodness of Fit and Randomness
      Time Series Analysis and Forecasting
      Covariance Structures and Factor Analysis
      Discriminant Analysis
      Cluster Analysis
      Sampling
      Survival Analysis, Life Testing and Reliability
      Multidimensional Scaling
      Density and Hazard Estimation
      Line Printer Graphics
      Probability Distribution Functions
      Random Number Generation
      Utilities
      Mathematical Support

SFUN/Library
      Special Functions

Zugriff auf die Bibliotheken

Die zwei Teilbibliotheken der IMSL-Library (MATH und STAT) sind zu einer einzigen Bibliothek IMSL zusammengefaßt.

Der Anschluß von IMSL-Unterprogrammen an ein Benutzerprogramm am Sun-Cluster unter Solaris:
Ausführliche Information steht im File /client/doc/imsl und sollte unbedingt beachtet werden.
Anders als bei bisherigen Installationen:

  • Das Setzen einer Environmentvariablen ist erforderlich, die den Zugang zum Lizenzfile ermöglicht.
  • Außer der Angabe von -limsl beim Laden sind noch weitere Bibliotheken zuzuladen, am besten über eine vorher gesetzte Environmentvariable.
  • Speziell für die C-Library wurde im Zuge des Updates auf die Version 2.0 dieser Library ein Setup-Script bereitgestellt. In Abhängigkeit der zu verwendenden Shell setzt man eins der folgenden Kommandos ab:

    source /client/bin/imsl_cnl.setup.csh

    bzw.

    .   imsl_cnl.setup.sh

    Aus dem Script selbst entnimmt man, welche Environment-Variablen gesetzt werden und verwendbar sind.

Fehlerbehandlung in IMSL

Zur Fehlerbehandlung sind üblicherweise drei Fragen zu beantworten:

  1. Was wird im Fehlerfall getan? (Wird eine Fehlermeldung ausgegeben? Wird die Programmausfürung abgebrochen?)
  2. Wohin werden gegebenenfalls die Fehlermeldungen geschrieben?
  3. Wie erfärt das aufrufende Programm, ob und welche Fehler vorliegen?

Die Fehlerbehandlung erfolgt ausschließlich über Dienstroutinen.

UMACH     Kanalnummer für Fehlermeldungen setzen oder abfragen.
IERCD     Fehlercode abfragen.
ERSET     Aktion für Fehlerfall definieren (Meldung drucken?, STOP?).

Das Verhalten im Fehlerfall wird durch die Routine ERSET gesteuert. Für jede der fünf Fehlerstufen ("severity level") kann angegeben werden, ob eine Fehlermeldung zu schreiben ist und ob die Programmausfürung abzubrechen ist. Der Fehlercode kann nach der Rückkehr aus einer IMSL-Routine mit der parameterlosen IMSL-Function IERCD abgefragt werden:

      ICODE = IERCD ()

Die Kanalnummern für die Ein-/Ausgabe durch IMSL-Routinen (und damit auch für Fehlermeldungen) wird durch die Routine UMACH verwaltet. Die entsprechenden Aufrufe sind:

      CALL UMACH (2, NOUT)              für Abfrage,
      CALL UMACH (-2, NOUT)             für neue Definition.

Voreingestellt ist Kanal 6.
Die Version IMSL 2.0 ermölicht die Ausgabe der IMSL-Fehlermeldungen auf ein separates File:

      CALL UMACH (3, NOUT)              für Abfrage,
      CALL UMACH (-3, NOUT)             für neue Definition.

Voreinstellung ist ebenso Kanal 6.

Namenskonflikte zu anderen Bibliotheken

Keine Probleme verursachen:

      BLAS-Routinen           in mehreren Bibliotheken

IMSL Version 2 : Hier erfolgten Umbenennungen wegen Namenskonflikten.

      PGOPT  ersetzt PAGE
      CPSEC  ersetzt CTIME
      TIMDY  ersetzt DTIME