ETHZ_Logo RAMSES_Logo_Right   RAMSES   RAMSES_Logo_Left Systems Ecology  
Start    search button      Modules:   A-Z   Function   Layer        QuickRefs:   DM   AuxLib   AuxLibE   SciLib   EasyMW   MW   ISIS   RMSLib

DEFINITION MODULE DMMathLib;

  (*******************************************************************

    Module  DMMathLib     ('Dialog Machine' DM_V3.0)

      Copyright (c) 1991-2006 by Andreas Fischlin and ETH Zurich.

    Purpose   Basic mathematical routines operating on 
              type REAL (cf. module DMLongMathLib).

    Remarks   Macintosh implementation:
              ------------------------
              There are several variants of this module
              available: One is using SANE (slower but more
              accurate, since all calculations are actually made
              with 80 Bit reals [extended IEEE format]) and
              another, substantially more efficient version,
              which is bypassing SANE, i.e. is using a native 32
              Bit floating point arithmetic.  The latter is
              similar to a third, for utmost portability
              implemented variant (BatchDM) available.  The
              latter variant should yield the most portable
              results on any platform.  For more details see the
              SANE manual, Addison Wesley and module 'DMFloatEnv'.

              IBM PC implementation:
              ---------------------
              Portable, not necessary most efficient implementation
              provided.

              Sun (Unix) implementation:
              -------------------------
              Portable, not necessary most efficient implementation
              provided.

              There is also a companion module, named DMMathLF,
              available, which directly uses the mathematical
              coprocessor and provides optimally efficient
              algorithms.  However, the price to pay for this
              gain in efficiency is portability, since on some
              machines this code may not be executable if the
              required hardware component is missing.  Using the
              module 'DMMathLib' is always safe and should not
              cause portability problems, but it may not always
              be the most efficient solution.

              This module belongs to the 'Dialog Machine'.


    Programming

      o Design
        Andreas Fischlin          25/06/1991

      o Implementation
        Andreas Fischlin          25/06/1991


    ETH Zurich
    Systems Ecology
    CHN E 35.1
    Universitaetstrasse 16
    8092 Zurich
    SWITZERLAND

    URLs:
        <mailto:RAMSES@env.ethz.ch>
        <http://www.sysecol.ethz.ch>
        <http://www.sysecol.ethz.ch/SimSoftware/RAMSES>


    Last revision of definition:  05/08/1991  AF

  *******************************************************************)


  PROCEDURE Sqrt  (x: REAL):    REAL;
  PROCEDURE Exp   (x: REAL):    REAL;
  PROCEDURE Ln    (x: REAL):    REAL;
  PROCEDURE Sin   (x: REAL):    REAL;
  PROCEDURE Cos   (x: REAL):    REAL;
  PROCEDURE ArcTan(x: REAL):    REAL;
  PROCEDURE Real  (x: INTEGER): REAL;
  PROCEDURE Entier(x: REAL):    INTEGER; (* Entier is similar to TRUNC,
                                         but truncates also negative x
                                         values to the smaller integral
                                         part. Ex.: Entier(-3.3) returns
                                         -4 where TRUNC(-3.3) is -3.  *)


  (*
    Simple random number generators, which return variates in
    ranges [0..upperBound] (RandomInt) resp. (0..1] (RandomReal).
    Don't use these generators for serious stochastic simulations!
    Their properties are not optimal. For better random number
    generators see the modules RandGen, RandGen0, RandGen1,
    RandNormal etc.
  *)
  PROCEDURE Randomize;
  PROCEDURE RandomInt(upperBound: INTEGER): INTEGER;
  PROCEDURE RandomReal(): REAL;

END DMMathLib.

  Contact RAMSES@env.ethz.ch Last updated: 25-Jul-2011 [Top of page]