AminetAminet
Search:
84476 packages online
About
Recent
Browse
Search
Upload
Setup
Services

util/cli/yaeval.lha

Mirror:Random
Showing:m68k-amigaosppc-amigaosppc-morphosi386-arosi386-amithlonppc-warpupppc-powerupgeneric
No screenshot available
Short:Yet Another Eval replacement
Author:Peter Gordon
Uploader:"Peter Gordon" <pete petergordon org uk>
Type:util/cli
Version:1.0
Architecture:ppc-amigaos >= 4.0.5
Date:2008-04-03
Download:http://aminet.net/util/cli/yaeval.lha - View contents
Readme:http://aminet.net/util/cli/yaeval.readme
Downloads:600

Yet Another Eval v1.0
=====================

By Peter Gordon (pete at 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?


Contents of util/cli/yaeval.lha
 PERMSSN    UID  GID    PACKED    SIZE  RATIO METHOD CRC     STAMP          NAME
---------- ----------- ------- ------- ------ ---------- ------------ -------------
[generic]                  154     248  62.1% -lh5- d4f0 Apr  2 11:37 src/makefile
[generic]                 5840   26345  22.2% -lh5- 1bf0 Apr  2 12:33 src/yae.c
[generic]                11143   34184  32.6% -lh5- 295b Apr  2 12:36 yae
[generic]                 1820    5665  32.1% -lh5- d01f Apr  2 12:36 yae.txt
---------- ----------- ------- ------- ------ ---------- ------------ -------------
 Total         4 files   18957   66442  28.5%            Apr  3 06:37

Aminet © 1992-2024 Urban Müller and the Aminet team. Aminet contact address: <aminetaminet net>