@DATABASE "AVOP.guide"
@AUTHOR   "P!\K/AVOP|Un0X"
@(C) "Copyright ©1996 by A Vision of Paradise"
@$VER: Laplace Documentation 0.1 (09-Mar-96)
@WORDWRAP

@NODE Main "Laplace ©1996 by A Vision of Paradise"

                @{BG fill}@{FG highlight} Welcome to Laplace V0.1 (Evaluation) @{FG text}@{BG background}

                @{FG highlight}Getting started :@{FG text}
                    @{" * " LINK INTRO} What is Laplace ?
                    @{" * " LINK COPYRIGHT} Legal stuff
                    @{" * " LINK REGISTRATION} Registration
                    @{" * " LINK ADDRESS} That's me !!!
                    @{" * " LINK GREETS} Greetinx go around the world..
                    @{" * " LINK REQUIRE} Requirements
                    @{" * " LINK INSTALL} Installation
                    @{" * " LINK TODO} Still left to implement..
                    @{" * " LINK HISTORY} Done so far..
                    @{" * " LINK BUGS} Shit happens..

                @{FG highlight}Usage :@{FG text}
                    @{" * " LINK WORK} Working with Laplace
                        @{" * " LINK PROJECT} Projects
                        @{" * " LINK EDITING} Edit capabilities
                        @{" * " LINK MENUS} Menu description
                        @{" * " LINK TYPES} Available object types
                        @{" * " LINK DEFS} Defining objects
                        @{" * " LINK FUNCTIONS} Available functions
                    @{" * " LINK LIBS} Libraries
                        @{" * " LINK LH_INIT} Init.lh
                        @{" * " LINK LH_MATH} math.lh
                        @{" * " LINK LH_PHYSIC} physic.lh
@ENDNODE

@NODE INTRO "Introduction"
@TOC Main
    @{BG fill}@{FG highlight} Introduction : @{BG background}@{FG text}

    Laplace is (or at least should be) an universal tool for mathematical calculations. It lacks such a GUI with hundreds of windows like those other progs I've found on AMIGA. Instead it works like a shell, you enter a command and get the result displayed, which is much more flexible.

    I started programming Laplace, because I was looking for a program for handling matrices, what I needed for my studies. First all programs I found were only able to handle floatpoints, but especially in matrix calculations this leads quite fast to large errors. So I made a simple prog that handled fractions instead of floatpoints. After that I needed something to handle parameters in matrices, and so I started totally rewrote Laplace. This is the result.

    Currently Laplace is everything else than complete. As you notice, even the icon promisses more than Laplace can keep, because Laplace is not even possible to calculate simple things like derivations ;-)
@ENDNODE

@NODE COPYRIGHT "Copyright"
@TOC Main
    @{BG fill}@{FG highlight} Copyright : @{BG background}@{FG text}

    ©1996 by A Vision of Paradise

    This is only an evaluation version of Laplace. I plan to make it SHAREWARE, when it reaches a reasonable state. For know Laplace is FREEWARE.

    You may distribute Laplace only as the original archive. You may uuencode or ??? it, but you must not change the contents.
    You are not allowed to sell it or take more than $4, DM5.- etc for copying it.

    Use it on your own risk. If you plan to build a nuclear plant, I take absolutely NO responsibility for uncontrolled chain reaction caused by false calculations!!!

    Laplace uses @{"MUI V3.3" LINK MUI} by Stefan Stuntz.
    Laplace was compiled with DICE V2.06 by Matthew Dillon.
    Laplace was debug with Enforcer V37 by Michael Sinz.
    Texts were edited with GoldED V3.1.3 by Dietmar Eilert.
@ENDNODE

@NODE MUI "MUI"
@TOC Main
                          This application uses


                        MUI - MagicUserInterface

                (c) Copyright 1993/94 by Stefan Stuntz


MUI is a system to generate and maintain graphical user interfaces. With
the  aid  of  a  preferences program, the user of an application has the
ability to customize the outfit according to his personal taste.

MUI is distributed as shareware. To obtain a complete package containing
lots of examples and more information about registration please look for
a  file  called  "muiXXusr.lha"  (XX means the latest version number) on
your local bulletin boards or on public domain disks.

          If you want to register directly, feel free to send


                         DM 30.-  or  US$ 20.-

                                  to

                             Stefan Stuntz
                        Eduard-Spranger-Straße 7
                             80935 München
                                GERMANY
@ENDNODE

@NODE REGISTRATION "Registration"
@TOC Main
    @{BG fill}@{FG highlight} Registration : @{BG background}@{FG text}

    Since Laplace is currently FREEWARE, there's no need to register. But you may send comments, bug report, flames etc. of course. @{"Send it to..." LINK ADDRESS}
@ENDNODE

@NODE ADDRESS "Author's address"
@TOC Main
    @{BG fill}@{FG highlight} The author : @{BG background}@{FG text}

    s-mail :
        Benjamin Stegemann
        Rohrbacher Str. 66
        69115 Heidelberg
        Germany

    e-mail :
        bstegema@ix.urz.uni-heidelberg.de
        bstegema@urz-mail.urz.uni-heidelberg.de

    actual versions of Laplace can be found in the Aminet directory misc/math.
@ENDNODE

@NODE GREETS "Greetinx"
@TOC Main
    @{BG fill}@{FG highlight} Greetinx : @{BG background}@{FG text}

    Thanks must go to :
        @{FG highlight}Stefan Stuntz@{FG text} for is fantastic @{"MUI" LINK MUI}.
        @{FG highlight}Matthew Dillon@{FG text} for DICE.
        @{FG highlight}Dietmar Eilert@{FG text} for GoldED.
        @{FG highlight}Martin Huttenloher@{FG text} for MagicWB.
        @{FG highlight}Mattias p. Eriksson@{FG text} for additional icons from is MagicRabbit collection.
        @{FG highlight}Kai Iske@{FG text} for MagicCX.
        @{FG highlight}Stefan Sommerfeld and Michael Knoke@{FG text} for MCP.
        @{FG highlight}Michael Sinz@{FG text} for Enforcer.

        And all other folks around this crazy planet, who support the AMIGA !!!!

P!\K of @{FG highlight}/|_ __   . /\  |\__: /|____  /\__:__/\ @{FG text}  . >P!\K/The Un0X Project<
       @{FG highlight}/   |  \  :/  \ |   |/      \/    |    \ @{FG text} :
     @{FG highlight}_/    |   \_|  \ \|  _/   |\   \___   ___/@{FG text}  | A2000/3.5MB
     @{FG highlight}\     |     |   \ \  \    |/   /         \ @{FG text} | A1200/030/6MB
      @{FG highlight}\ _________|____\  _/\ ______/\  __|__  /@{FG text}  :
       @{FG highlight}\|        :     \/   \|       \/  ·  \/@{FG text}   .

@ENDNODE

@NODE REQUIRE "Requirements"
@TOC Main
    @{BG fill}@{FG highlight} Requirements : @{BG background}@{FG text}

    OS3.0 (V38) or better.
    @{"MUI3.3" LINK MUI} which may be found in aminet : dev/gui/muiXXusr.lha.
    avop.library supplied in this archive.

    and a FAAAAAST AMIGA...
@ENDNODE

@NODE INSTALL "Installation"
@TOC Main
    @{BG fill}@{FG highlight} Installation : @{BG background}@{FG text}

    Since Laplace is still under development, I didn't write an installer script ;-)

    To run Laplace, you just need the assign "Laplace:" to the Laplace directory. Simply place
    @{FG highlight}assign Laplace: @{FG text}where_to_find_it@{FG highlight}/Laplace@{FG text}
    to your user-startup or use AssignManager, MCP or similars...

    Fonts and libraries can remain in their directories, but if you want, you may copy them to the according system directories.
@ENDNODE

@NODE TODO "To do"
@TOC Main
    @{BG fill}@{FG highlight} To do : @{BG background}@{FG text}

    As I said before, this is only an evaluation version, so there are quiet a lot of things left to do, before I release Laplace as SHAREWARE. To list all this stuff here would be too much ;-) If you have any @{FG highlight}suggestions@{FG text}, you are invited to send @{"me" LINK ADDRESS} a note!!
@ENDNODE

@NODE HISTORY "History"
@TOC Main
    @{BG fill}@{FG highlight} History : @{BG background}@{FG text}

    @{FG highlight}V0.1 (Evaluation version) :@{FG text}
        First public release.
@ENDNODE

@NODE BUGS "Bugs"
@TOC Main
    @{BG fill}@{FG highlight} Known bugs : @{BG background}@{FG text}

    All bugs I found were removed... All bugs I didn't found... ;-)
    And again, IT'S STILL UNDER DEVELOPMENT!!!

    Since today is my birthday (9.3. ;-) it would be a wonderful gift for me to send tons of bug reports. Remember, I urgently looking for something to do at my next birthday!!
@ENDNODE

@NODE WORK "Working with Laplace"
@TOC Main
    @{BG fill}@{FG highlight} Working with Laplace : @{BG background}@{FG text}

    Laplace works much like a shell, you enter an @{"expression" LINK EXPRESSION} press return and Laplace gives you the result (after some time ;-). See @{"editing" LINK EDITING} or @{"menus" LINK MENUS} for more details.
    Laplace's processing is based on objects. You can @{"define" LINK DEFS} new objects and reference them later.

    When a new window is opened, Laplace tries to execute the command @{"include(Init.lh)" LINK FKT_INCLUDE}. See also @{"Init.lh" LINK LH_INIT}.

    You can load and save sessions, see @{"Projects" LINK PROJECT}.
@ENDNODE

@NODE EDITING "Editing"
@TOC Main
    @{BG fill}@{FG highlight} Editing : @{BG background}@{FG text}

    Currently Laplace uses a simple string gadget as input. There are some special keys :
    @{FG highlight}up@{FG text} : move to previous line.
    @{FG highlight}down@{FG text} : move to next line.
    @{FG highlight}shift-del@{FG text} : remove this line.
    @{FG highlight}alt-del@{FG text} : remove this line's result.
@ENDNODE

@NODE MENUS "Menus"
@TOC Main
    @{BG fill}@{FG highlight} Menus : @{BG background}@{FG text}

    @{FG highlight}Project :@{FG text}
        @{FG highlight}New window@{FG text}
                Open a new, blank window.
        @{FG highlight}Load..@{FG text}
                Open a @{"project" LINK PROJECT} file.
        @{FG highlight}Save@{FG text}
                Save a @{"project" LINK PROJECT} file. Use the current path or select a new.
        @{FG highlight}Save as..@{FG text}
                Save a @{"project" LINK PROJECT} file. Select a new path.
        @{FG highlight}MUI Prefs@{FG text}
                Open @{"MUI" LINK MUI} preferences.
        @{FG highlight}About MUI@{FG text}
                @{"MUI" LINK MUI}, what else ;-)
        @{FG highlight}Quit@{FG text}
                NOOOOOOOO :-O
    @{FG highlight}Windows :@{FG text}
        @{FG highlight}Function list@{FG text}
                Opens a window with all available functions. A doubleclick on an entry will insert the function into the current line.
        @{FG highlight}Debug@{FG text}
                Opens the debug window with a list of all debug strings.
    @{FG highlight}Options :@{FG text}
        @{FG highlight}Always use float@{FG text}
                Use always floatpoints even if fractions could be used.
@ENDNODE

@NODE PROJECT "Projects"
@TOC Main
    @{BG fill}@{FG highlight} Projects : @{BG background}@{FG text}

    Laplace saves project files as plain ASCII files, you may edit them with any standart texteditor. Projects are usually placed in the @{FG highlight}Projects@{FG text} directory.

    Some lines with an leading @{FG highlight}#@{FG text} are used to save options and should not be changed. If you create a new project with an texteditor, you may omit the lines without problems.
@ENDNODE

@NODE EXPRESSION "Expressions"
@TOC Main
    @{BG fill}@{FG highlight} Expressions : @{BG background}@{FG text}

    Expressions are entered in a usual manner, e.g.
    @{FG highlight}1+2/3*(4-2)@{FG text}<RETURN>
    Guess what's the result... More formally, an correct expression is :
    @{FG highlight}a@{FG text} or
    @{FG highlight}a op b@{FG text}
    where is @{FG highlight}+@{FG text}, @{FG highlight}-@{FG text}, @{FG highlight}*@{FG text}, @{FG highlight}/ @{FG text}or @{FG highlight}^ @{FG text}(power of) and
    a,b are valid
        @{"objects" LINK TYPES},
        @{"references" LINK DEFS},
        @{"functions" LINK FUNCTIONS},
        @{"expression lists" LINK EXPLIST} or
        expressions.

    You may enter several expression at once, seperated by commas, e.g.
    @{FG highlight}1+2,2/4,12+10@{FG text}
    The results will be displayed seperated by lines.
@ENDNODE

@NODE EXPLIST "Expression list"
@TOC Main
    @{BG fill}@{FG highlight} Expression list : @{BG background}@{FG text}

    An expression list is an list of expression seperated by commas embedded in @{FG highlight}{}@{FG text} brackets or supplied to the @{"do()" LINK FKT_DO} command.
    All expressions will be evaluated, but only the last result will be used. The result of the list will be this last result. This makes only sense with functions like @{"debug" LINK FKT_DEBUG}.
    E.g.
    @{FG highlight}sin({debug("Hello world!", pi/2})@{FG text}
@ENDNODE

@NODE TYPES "Types"
@TOC Main
    @{BG fill}@{FG highlight} Types : @{BG background}@{FG text}

    Currently support currently three types of objects : Real, Vector and Matrix

    @{FG highlight}Real :@{FG text}
        These are just numbers as well all know them (or do we know them all ?!).
        Numbers can be entered in exponential style, which is @{FG highlight}{+/-/<nothing>}ddddd[.ddddd][e{+/-/<nothing>}dddd]@{FG text}. Ufff, but it's quite easy ;-) to enter e.g. 6.626 * 10^(-34) write @{FG highlight}6.626e-34@{FG text}. The (whole) number after 'e' is just the exponent. Don't use brackets, if the exponent is negative!
        As long as you enter only whole numbers, Laplace tries to use fractions, so enter @{FG highlight}1/2@{FG text} instead of @{FG highlight}0.5@{FG text}. This way you can enter things like 1/7 exactly, and you won't get result which are almost exact zero, when it should be exact ;-)

    @{FG highlight}Vector :@{FG text}
        A vector is a tupel of reals. To create a vector (2,4,1) enter @{FG highlight}vector(2,4,1)@{FG text} or as a short form @{FG highlight}[2,4,1]@{FG text}. A vector may of course contain references to other (real) objects.

    @{FG highlight}Matrix :@{FG text}
        A matrix is something like a 2-dimensional vector.. (if you don't know what's this, you probably won't need them ;-) A matrix is created by e.g. @{FG highlight}matrix([1,a,3],[5,7,b],[c,3,4])@{FG text} or as a short form @{FG highlight}[[1,a,3],[5,7,b],[c,3,4]]@{FG text} where [..] is a column of the matrix. All columns must be of the same height of course
@ENDNODE

@NODE DEFS "Definitions"
@TOC Main
    @{BG fill}@{FG highlight} Definitions : @{BG background}@{FG text}

    If you want to use an result later or just define a variable, write @{FG highlight}name = expression@{FG text}. This creates an objects that can be referenced by it's name in later (!) lines. If you reference to an object, Laplace searches from the actual line back, so you may define an object several times, but only the latest version is used. E.g.
    [1] @{FG highlight}a=1/2@{FG text}
    [2] @{FG highlight}2*a@{FG text}
        gets 'a' from [1]
    [3] @{FG highlight}a=a+1@{FG text}
        'a' on the right side references to the definition in [1]
        and creates a new object called 'a' to be referenced below
    [4] @{FG highlight}a@{FG text}
        gets 'a' from [3]
    If you move back to [2], you still get the same result, because the new 'a' is defined below and cannot be reference from [2].

    There are some special conventions for object names. Valid characters are @{FG highlight}A..Z Ö Ä Ü a..z ö ä ü 0..9 @ § $ '@{FG text}. You may not use a number as the first character.
    There are two special characters which may be used : @{FG highlight}~ @{FG text}(tilde) and @{FG highlight}_ @{FG text}(underscore). @{FG highlight}_ @{FG text}as the first character will create a line above the name, which is often used in mathematics. Inside the name @{FG highlight}_ @{FG text}will create an index, character after @{FG highlight}_ @{FG text}will be used as the index at the bottom of the name. @{FG highlight}~ @{FG text}work similar, but creates an index at the top. You can use both indexes. E.g. @{FG highlight}_a@{FG text}, @{FG highlight}a_1@{FG text}, @{FG highlight}a~1@{FG text} or everything at once @{FG highlight}_a~2_1@{FG text}.

    There are three difference kinds of definitions : variables, parameters and constants.

    When you reference a variable, it's contents will be inserted. Variable are defined using @{FG highlight}name = expression@{FG text}. E.g.
    @{FG highlight}a=3@{FG text}
    @{FG highlight}a+1@{FG text} -> 4

    A reference to a parameter will not be evaluated, it will remain in the result. Use @{FG highlight}name := expression@{FG text} to create a parameter. If you want to get the final result use the @{"eval()" LINK FKT_EVAL} function. E.g.
    @{FG highlight}a:=3@{FG text}
    @{FG highlight}2*(a+2)@{FG text} -> 2*a+4
    @{FG highlight}eval(2*(a+2))@{FG text} -> 10

    Constants have no value, so they won't be evaluate, even with the @{"eval()" LINK FKT_EVAL} function. They are defined using the @{"const()" LINK FKT_CONST} function. E.g.
    @{FG highlight}const(a)@{FG text}
    @{FG highlight}2*(a+2)@{FG text} -> 2*a+4
    @{FG highlight}eval(2*(a+2))@{FG text} -> 2*a+4

    You can also define functions. Just enter a parameter list embedded in bracket after the object name, e.g.
    @{FG highlight}f(x):=x^3@{FG text}
    The parameters will be handled like constants in the function expression. If you want to use other object type than reals, you have to specify the type in the parameter list, the format is line in @{"const()" LINK FKT_CONST}.
    When referencing a function you have to specify the parameters to be inserted into the function's expression, e.g.
    @{FG highlight}f(3)@{FG text} -> 27
    @{FG highlight}const(a)@{FG text}
    @{FG highlight}f(a+1)@{FG text} -> (a+1)^3
@ENDNODE

@NODE FUNCTIONS "Functions"
@TOC Main
    @{BG fill}@{FG highlight} Functions : @{BG background}@{FG text}

    Laplace offers a lot (really? ;-) internal functions. Call them with the parameters seperated by commas embedded in @{FG highlight}()@{FG text} brackets, e.g.
    @{FG highlight}sin(pi)@{FG text}
    @{FG highlight}exp(1)@{FG text}

    @{FG highlight}parameter : ...@{FG text} means that the parameter must evaluate to one of the given @{"object types" LINK TYPES}.
    @{FG highlight}result : ...@{FG text} means that the result is of the given @{"object types" LINK TYPES}. If there are more than one type, each type coresponds to a type in the parameter.

    @{"abs(expression)" LINK FKT_ABS}
    @{"acos(expression)" LINK FKT_TRIGONOM}
    @{"addrows(matrix,row1,row2,expression)" LINK FKT_ADDROWS}
    @{"asin(expression)" LINK FKT_TRIGONOM}
    @{"atan(expression)" LINK FKT_TRIGONOM}
    @{"combine(list)" LINK FKT_COMBINE}
    @{"const(list)" LINK FKT_CONST}
    @{"cos(expression)" LINK FKT_TRIGONOM}
    @{"cosh(expression)" LINK FKT_TRIGONOM}
    @{"cot(expression)" LINK FKT_TRIGONOM}
    @{"debug(string)" LINK FKT_DEBUG}
    @{"det(expression)" LINK FKT_DET}
    @{"dispose(list)" LINK FKT_DISPOSE}
    @{"disposeall()" LINK FKT_DISPOSEALL}
    @{"do(list)" LINK FKT_DO}
    @{"eval(expression)" LINK FKT_EVAL}
    @{"exp(expression)" LINK FKT_EXP}
    @{"include(path)" LINK FKT_INCLUDE}
    @{"inv(expression)" LINK FKT_INV}
    @{"ln(expression)" LINK FKT_LOG}
    @{"log(expression)" LINK FKT_LOG}
    @{"matrix([list],[list],..)" LINK FKT_MATRIX}
    @{"multrow(matrix,row1,expression)" LINK FKT_MULTROW}
    @{"neg(expression)" LINK FKT_NEG}
    @{"rang(expression)" LINK FKT_RANG}
    @{"sin(expression)" LINK FKT_TRIGONOM}
    @{"sinh(expression)" LINK FKT_TRIGONOM}
    @{"solve(expression)" LINK FKT_SOLVE}
    @{"spur(expression)" LINK FKT_SPUR}
    @{"sqrt(expression)" LINK FKT_SQRT}
    @{"swaprows(matrix,row1,row2)" LINK FKT_SWAPROWS}
    @{"tan(expression)" LINK FKT_TRIGONOM}
    @{"tanh(expression)" LINK FKT_TRIGONOM}
    @{"trans(expression)" LINK FKT_TRANS}
    @{"umatrix(size)" LINK FKT_UMATRIX}
    @{"vector(list)" LINK FKT_VECTOR}
    @{"window(reference)" LINK FKT_WINDOW}
@ENDNODE

@NODE FKT_TRIGONOM "Trigonometric functions"
@TOC Functions
    @{BG fill}@{FG highlight} sin(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} cos(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} tan(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} cot(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} asin(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} acos(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} atan(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} sinh(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} cosh(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} tanh(expression) : @{BG background}@{FG text}

    expression : real
    result : real

    Calculate those well known trigonometric functions.
@ENDNODE

@NODE FKT_ABS "abs"
@TOC Functions
    @{BG fill}@{FG highlight} abs(expression) : @{BG background}@{FG text}

    expression : real, vector
    result : real, vector

    Real : Returns the absolute of the real.
    Vector : Returns the absolute of the vector, which is defined as sqrt(a1^2 + a2^2 + ...) where a1, a2 are the components of the vector. (Physically this is the length of the vector.)
@ENDNODE

@NODE FKT_INV "inv"
@TOC Functions
    @{BG fill}@{FG highlight} inv(expression) : @{BG background}@{FG text}

    expression : real, matrix
    result : real, matrix

    Real : Return the invers of the real, which is simple 1/x
    Matrix : Return the invers of the matrix, which is defined that m*inv(m) is the standart matrix.
@ENDNODE

@NODE FKT_SOLVE "solve"
@TOC Functions
    @{BG fill}@{FG highlight} solve(expression) : @{BG background}@{FG text}

    expression : matrix
    result : matrix

    Returns the solution of the matrix. This is the result of basic matrix transformations to convert the left square of the matrix into a standart matrix. This usually make only sense for non-square matrices.
@ENDNODE

@NODE FKT_DET "det"
@TOC Functions
    @{BG fill}@{FG highlight} det(expression) : @{BG background}@{FG text}

    expression : matrix
    result : real

    Returns the determinant of the matrix.
@ENDNODE

@NODE FKT_TRANS "trans"
@TOC Functions
    @{BG fill}@{FG highlight} trans(expression) : @{BG background}@{FG text}

    expression : matrix
    result : matrix

    Returns the transposition of the matrix.
@ENDNODE

@NODE FKT_SPUR "spur"
@TOC Functions
    @{BG fill}@{FG highlight} spur(expression) : @{BG background}@{FG text}

    expression : matrix
    result : real

    Returns the spur of the matrix.
@ENDNODE

@NODE FKT_NEG "neg"
@TOC Functions
    @{BG fill}@{FG highlight} neg(expression) : @{BG background}@{FG text}

    expression : real, vector, matrix
    result : real, vector, matrix

    Returns the negative of the expression.
@ENDNODE

@NODE FKT_RANG "rang"
@TOC Functions
    @{BG fill}@{FG highlight} rang(expression) : @{BG background}@{FG text}

    expression : matrix
    result : real

    Returns the rang of the matrix. This is the number of non-zero rows of solve(expression).
@ENDNODE        

@NODE FKT_LOG "ln/log"
@TOC Functions
    @{BG fill}@{FG highlight} ln(expression) : @{BG background}@{FG text}
    @{BG fill}@{FG highlight} log(expression) : @{BG background}@{FG text}

    expression : real
    result : real

    Returns the natural/common logarithm of the real.
@ENDNODE

@NODE FKT_EXP "exp"
@TOC Functions
    @{BG fill}@{FG highlight} exp(expression) : @{BG background}@{FG text}

    expression : real
    result : real

    Returns e^x of the real. Use this functions instead of entering @{FG highlight}e^x@{FG text} directly
@ENDNODE

@NODE FKT_SQRT "sqrt"
@TOC Functions
    @{BG fill}@{FG highlight} sqrt(expression) : @{BG background}@{FG text}

    expression : real
    result : real

    Returns the square root of the expression.
@ENDNODE

@NODE FKT_DO "do"
@TOC Functions
    @{BG fill}@{FG highlight} do(list) : @{BG background}@{FG text}

    This is a synonym for an @{"expression list" LINK EXPLIST}. E.g.
    @{FG highlight}{debug("Hello world !"), sin(2)}@{FG text} and
    @{FG highlight}do(debug("Hello world !"), sin(2))@{FG text} are equal.
@ENDNODE

@NODE FKT_DEBUG "debug"
@TOC Functions
    @{BG fill}@{FG highlight} debug(string) : @{BG background}@{FG text}

    This will add the string to the debug list.
@ENDNODE

@NODE FKT_WINDOW "window"
@TOC Functions
    @{BG fill}@{FG highlight} window(name) : @{BG background}@{FG text}

    This will open a window, displaying the named object.
@ENDNODE

@NODE FKT_DISPOSE "dispose"
@TOC Functions
    @{BG fill}@{FG highlight} dispose(list) : @{BG background}@{FG text}

    This will dispose the previously defined objects. List is a list of object names seperated by commas.
@ENDNODE

@NODE FKT_DISPOSEALL "disposeall"
@TOC Functions
    @{BG fill}@{FG highlight} disposeall() : @{BG background}@{FG text}

    This will dispose all previously defined objects.
@ENDNODE

@NODE FKT_CONST "const"
@TOC Functions
    @{BG fill}@{FG highlight} const(list) : @{BG background}@{FG text}

    List is a list of object names seperated by commas, where name is @{FG highlight}name[:type]@{FG text} the object name with an optional type specifier :
        @{FG highlight}r@{FG text}, @{FG highlight}real@{FG text} - real object (default)
        @{FG highlight}v@{FG text}, @{FG highlight}vec@{FG text}, @{FG highlight}vector@{FG text} - vector object, any dimension
        @{FG highlight}v[d]@{FG text}, @{FG highlight}vec[d]@{FG text}, @{FG highlight}vector[d]@{FG text} - vector object, dimension d
        @{FG highlight}m@{FG text}, @{FG highlight}mat@{FG text}, @{FG highlight}matrix@{FG text} - matrix object, any size
        @{FG highlight}m[r,c]@{FG text}, @{FG highlight}mat[r,c]@{FG text}, @{FG highlight}matrix[r,c]@{FG text} - matrix object, size r*s

    const() will create the named objects.
@ENDNODE

@NODE FKT_EVAL "eval"
@TOC Functions
    @{BG fill}@{FG highlight} eval(expression) : @{BG background}@{FG text}

    expression : real, vector, matrix
    result : depends on expression

    This will evaluate the given expression. @{"Parameter references" LINK DEFS} are replaced, too.
@ENDNODE

@NODE FKT_MATRIX "matrix"
@TOC Functions
    @{BG fill}@{FG highlight} matrix([list],[list],..) : @{BG background}@{FG text}

    This will create a matrix object. @{FG highlight}[list]@{FG text} is a column of the matrix, and @{FG highlight}list@{FG text} is a list of expressions seperated by commas. The components must evaluate to real. E.g.
    @{FG highlight}matrix([1,2,3],[4,5,6],[7,8,9])@{FG text}
    /1 4 7\
    |2 5 8|
    \3 6 9/
@ENDNODE

@NODE FKT_VECTOR "vector"
@TOC Functions
    @{BG fill}@{FG highlight} vector(list) : @{BG background}@{FG text}

    This will create a vector object. @{FG highlight}list@{FG text} is a list of expressions seperated by commas. The components must evaluate to real. E.g.
    @{FG highlight}vector(1,2,3)@{FG text}
    /1\
    |2|
    \3/
@ENDNODE

@NODE FKT_SWAPROWS "swaprows"
@TOC Functions
    @{BG fill}@{FG highlight} swaprows(matrix,r1,r2) : @{BG background}@{FG text}

    matrix : matrix (must be @{"variable or parameter" LINK DEFS})
    r1 : real (should be integer)
    r2 : real (should be integer)
    result : matrix

    This will copy the input matrix, except that row r1 and row r2 are swapped.
@ENDNODE

@NODE FKT_ADDROWS "addrows"
@TOC Functions
    @{BG fill}@{FG highlight} addrows(matrix,r1,r2,expression) : @{BG background}@{FG text}

    matrix : matrix (must be @{"variable or parameter" LINK DEFS})
    r1 : real (should be integer)
    r2 : real (should be integer)
    expression : real
    result : matrix

    This will copy the input matrix, except that row r1 will be replace by @{FG highlight}(row r1)+expression*(row r2)@{FG text}
@ENDNODE

@NODE FKT_MULTROW "multrow"
@TOC Functions
    @{BG fill}@{FG highlight} multrow(matrix,r,expression) : @{BG background}@{FG text}

    matrix : matrix (must be @{"variable or parameter" LINK DEFS})
    r : real (should be integer)
    expression : real
    result : matrix

    This will copy the input matrix, except that row r will be replace by @{FG highlight}expression*(row r)@{FG text}
@ENDNODE

@NODE FKT_UMATRIX "umatrix"
@TOC Functions
    @{BG fill}@{FG highlight} umatrix(size) : @{BG background}@{FG text}

    result : matrix

    This will create a standart matrix of the given size.
@ENDNODE

@NODE FKT_COMBINE "combine"
@TOC Functions
    @{BG fill}@{FG highlight} combine(list) : @{BG background}@{FG text}

    result : matrix

    List is a list of object names of vectors or matrices (may be mixed).
    This will create a matrix that is a combinition of the input vectors/matrices. E.g.
    @{FG highlight}combine(matrix([1,2],[3,4]),vector(a,b))@{FG text}
    /1 3 a\
    \2 4 b/
@ENDNODE

@NODE FKT_INCLUDE "include"
@TOC Functions
    @{BG fill}@{FG highlight} include(path) : @{BG background}@{FG text}

    This will load and process a file from the directory @{FG highlight}Include@{FG text}.
    See also @{"Libraries" LINK LIBS}.
@ENDNODE

@NODE LIBS "Libraries"
@TOC Main
    @{BG fill}@{FG highlight} Libraries : @{BG background}@{FG text}

    Laplace offers the ability to process external files. These files are plain ASCII files and may be edited with every texteditor. These files will be processed, just as if each line would be entered, blank lines and lines with leading @{FG highlight};@{FG text} will be ignored. The results won't be displayed, so this is only useful for constant and function definitions. Library files have a trailing @{FG highlight}.lh@{FG text} and are located in the @{FG highlight}Include@{FG text} directory. Use the @{"include()" LINK FKT_INCLUDE} command to gain access to a library.

    Some basic files are included :
    @{"Init.lh" LINK LH_INIT}
    @{"math.lh" LINK LH_MATH}
    @{"physic.lh" LINK LH_PHYSIC}

    If you want a library to be available on startup add a line @{FG highlight}source(libname.lh)@{FG text} to the file @{FG highlight}Include/Init.lh@{FG text}, which is always processed on startup.
@ENDNODE

@NODE LH_INIT "Init.lh"
@TOC Main
    @{BG fill}@{FG highlight} Init.lh : @{BG background}@{FG text}

    This file will always be processed on startup. Any definitions or commands that should always be done can be placed here.
@ENDNODE

@NODE LH_MATH "math.lh"
@TOC Main
    @{BG fill}@{FG highlight} math.lh : @{BG background}@{FG text}

    some useful mathematical definitions

    @{FG highlight}pi@{FG text}:=3.141592653589793   ;-)
    @{FG highlight}e@{FG text}:=2.718281828459045    :->

    @{FG highlight}err(x)@{FG text}:=exp(-x^2)       error function
@ENDNODE

@NODE LH_PHYSIC "physic.lh"
@TOC Main
    @{BG fill}@{FG highlight} physic.lh : @{BG background}@{FG text}

    some useful physical definitions

    @{FG highlight}g@{FG text}:=9.81             earth acceleration
    @{FG highlight}N_A@{FG text}:=6.0225e23      avogadro number
    @{FG highlight}R@{FG text}:=8.31             gas constant
    @{FG highlight}k@{FG text}:=eval(R/N_A)

    @{FG highlight}m_p@{FG text}:=1.6725e-27     a proton's mass in kg
    @{FG highlight}m_n@{FG text}:=1.6747e-27     a neutron's mass in kg
    @{FG highlight}m_e@{FG text}:=0.911e-30      an electron's mass in kg
    @{FG highlight}u@{FG text}:=1.66042e-27      nuclear mass unit in kg (1/12 of C12 atom nucleus)
    @{FG highlight}h@{FG text}:=6.626e-34        planck constant
    @{FG highlight}_h@{FG text}:=eval(h/(2*pi))  h/(2*pi)

    @{FG highlight}m_sun@{FG text}:=1.99e30      the sun's mass in kg
    @{FG highlight}r_sun@{FG text}:=6.96e8       the sun's radius in m
    @{FG highlight}m_earth@{FG text}:=5.98e24    the earth's mass in kg
    @{FG highlight}r_earth@{FG text}:=6.37e6     the earth's radius in m
    @{FG highlight}d_earth@{FG text}:=1.49e11    the earth orbits's radius in m
    @{FG highlight}m_moon@{FG text}:=7.34e22     the moon's mass in kg
    @{FG highlight}r_moon@{FG text}:=1.74e6      the moon's radius in m
    @{FG highlight}d_moon@{FG text}:=3.84e8      the moon orbits's radius in m
@ENDNODE

