OS4Depot.net 20130227_1013
  Home Search Mirrors Contact Info Credits

 Readme data for Root » Utility » Misc » yae.lha

Description: Yet Another Eval
Install: yae.lha
Size: 19kb 5
Version: 1.0
Date: 02 Apr 08
Author: Peter Gordon
Submitter: Peter Gordon
Email: pete/petergordon org uk
Homepage: http://www.petergordon.org.uk/
Category: utility/misc
License: Freeware
Distribute: yes
Min OS Version: 4.0
Yet Another Eval v1.0
=====================

By Peter Gordon (pete()petergordon.org.uk)


1. What is it?
--------------

YAE is another replacement for the standard AmigaOS eval command, although
it is not a direct replacement since it doesn't currently use the same
argument format.

It has the following advantages over Eval:

 · Operator precedence
 · Boolean operators
 · Floating point mode with various trigonometry and logarithmic functions
 · Integers can be expressed in decimal, hexadecimal or binary
 · The source is freely available
 · 64bit integer math, double precision floating point math


2. Usage
--------

  YAE takes the following arguments:

    EXPRESSION/A,FLOAT/S,HEX/S

  The first is the expression to evaluate. If the "FLOAT" switch is specified,
  the expression will be evaluated as double-precision floating point instead
  of integer. If the "HEX" switch is specified, the output will be in hex
  instead of decimal.

  If the expression contains spaces, or an equals sign, you should enclose it
  in quotes (").


3. Specifying values
--------------------

  In integer mode, numbers are specified in decimal, binary, or hex:

  Decimal = 100
  Hex     = $64 or 0x64
  Binary  = %1100100

  Values can also be retrieved from environment variables. Simple put the
  variable name, enclosed in apostrophes, into the expression. For example:

  1+'myvar'

  adds one to the value in the environment variable named myvar.


4. Operators
------------

  YAE supports two types of operators; unary and binary.

  Unary operators precede a value and affect only the value immediately after
  them, such as the unary minus (swap sign):

  -1 means minus one.

  Brackets can be used after a unary operator, in which case it will affect
  the result of the expression in the brackets:

  -(2+1) means minus three.
  -(-1) means 1 :)

  YAE knows the following unary operators:

  Operator   Description         Integer mode?     Float mode?
  ------------------------------------------------------------
     -       Unary minus             Yes              Yes
    ABS      Absolute value          Yes              Yes
    NOT      Binary invert           Yes              No
     ~       Binary invert           Yes              No
    SIN      Sine                    No               Yes
    COS      Cosine                  No               Yes
    TAN      Tangent                 No               Yes
    SINH     Hyperbolic Sine         No               Yes
    COSH     Hyperbolic Cosine       No               Yes
    TANH     Hyperbolic Tangent      No               Yes
    ASIN     Arcsine                 No               Yes
    ACOS     Arccosine               No               Yes
    ATAN     Arctangent              No               Yes
    SQRT     Square root             Yes              Yes
    LOG      Logarithm               Yes              Yes
    LOG10    Logarithm               Yes              Yes
    EXP      Exponential func        No               Yes
    ROUND    Round to nearest        No               Yes
    CEIL     Round up                No               Yes
    FLOOR    Round down              No               Yes
    TRUNC    Truncate                No               Yes


  Binary operators operate on two values to provide a result (not to be
  confused with bit-wise operations).

  YAE knows the following binary operators:

  Operator  Description     Precedence        Integer mode?     Float mode?
  -------------------------------------------------------------------------
     *      Multiply             3               Yes             Yes
     ×      Multiply             3               Yes             Yes
     /      Divide               3               Yes             Yes
     ÷      Divide               3               Yes             Yes
     +      Add                  4               Yes             Yes
     -      Subtract             4               Yes             Yes
     ^      Power                3               Yes             Yes
    MOD     Modulo               3               Yes             No
    XOR     Exclusive or         6               Yes             No
    SHR     Shift right          3               Yes             No
    >>      Shift right          3               Yes             No
    SHL     Shift left           3               Yes             No
    <<      Shift left           3               Yes             No
    AND     And                  5               Yes             No
     &      And                  5               Yes             No
    OR      Or                   5               Yes             No
     |      Or                   5               Yes             No
     =      Equal to             7               Yes             No
     >      Greater than         7               Yes             No
     <      Less than            7               Yes             No
    !=      Not equal to         7               Yes             Yes
    >=      Greater or equal     7               Yes             Yes
    <=      Less than or equal   7               Yes             Yes

  (note: the precedence column is a bit counter-intuitive; the lower number
  operators will be evaluated before the higher number ones)

  examples:

    1.Workbench:> yae "1=2"
    0
    1.Workbench:> yae sin(1.25) float
    0.948985
    1.Workbench:> yae $64
    100
    1.Workbench:> yae 2+3*4+5*6
    44

  and so on...


5. To Do
--------

Please feel free to tackle these yourself and pass the source changes back :)

  · Better documentation
  · AmigaGuide or HTML documentation
  · Better output format control
  · Suggestions?





Copyright (c) 2004-2013 Björn Hagström. All rights reserved.
OS4 and its logos are registered trademarks of Hyperion Entertainment