[Flavors] Flavors Technology, Inc.


Paracell Users' Guide

  • Table of Contents
  • Introduction
  • Programming Model
  • Elements of the Language
  • Structure of the Language
  • Elements of Variables
  • Operators
  • Appendices
  • Keyword Listing
  • Index
  • A through K
  • L through Z
  • Special Characters
  • Flavors Home
  • Flavors Product Information
  • PIM/Paracell Presentation
  • PIM Configurations
  • Product Documentation
  • PIM/Paracell Product Summary
  • Paracell User's Guide
  • Application Notes
  • Flavors Staff
  • Flavors Links
  • Flavors Download Page

  • Keyword Listing

    Here is a list of all keywords in the Paracell language and related information.

    Examples of keyword use are provided under each keyword heading. In some instances, these examples are simple phrases, while in other sections are self-contained and can be compiled as a unit. Such sections of compileable code are shown in green.

    Keywords that appear in red have recently been implemented in the latest release of the Paracell compiler. Further information will be added to these keywords shortly!


    less, less than

    Word Type: Relational Operator

    Description: Compares the values of two expressions. If the first expression is less than the second value, then evaluates to true, otherwise false.

    Syntax:

    {an expression} is less than {an expression}

    Examples:

      if x is less than 5         /* this is the same as:  if x < 5 */
        then add 17 to x.
    
      #kappa is a local machine integer initially OFF.
      if #iota is less than #theta
        then #kappa is ON
        else #kappa is OFF.

     Related Topics

    <

     Operators

    Exception Values propagation for lesser
    < -RAIL -OK 0 +OK +RAIL NAN
    -RAIL unknown true true true true unknown
    -OK false OK true true true unknown
    0 false false false true true unknown
    +OK tfalserue false false OK true unknown
    +RAIL false false false false unknown unknown
    unknown unknown unknown unknown unknown unknown unknown

    Inputs:
    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value

    Results:
    OK: a valid value within range of representation (i.e., true or false)
    unknown: neither true nor false


    ln

    Word Type:

    Description: natural logarithm, base e

    Syntax:

    Examples:

      #two is a local float initially 2.
      lambda is a float initially 0.
      lambda = ln #two.   // lambda = ln 2 = .6931


    local

    Word Type:

    Description:

    Syntax:

    Examples:

      #two is a local paracell number initially 2.
      lambda is a float initially 0.
      lambda = ln two.   // lambda = ln 2 = .6931

    log

    Word Type:

    Description: common logarithm, base 10

    Syntax:

    Examples:

      #two is a local paracell number initially 2.    // base 10 log
      mu is a floating point number initially 0.
      mu = log (10 * #two).                           // mu = log 20 = 1.3010


    log2

    Word Type:

    Description: base 2 logarithm

    Syntax:

    Examples:

      #sixtyFour is a local safe integer initially 64.
      nu is a pnumber initially 0.
      nu = log2 (#sixtyFour).     // nu = 6 = log2(64);  2**6 = 64


    logical, logicals

    Word Type:

    Description: logicals may only have values of TRUE, FALSE or UNKNOWN

    Syntax:

    Examples:

      xi is a logical initially TRUE.
      if kappa is OFF
        then xi is TRUE
        else xi is FALSE.


    machine

    Word Type:

    Description:

    Syntax:

    Examples:

      #one is a local machine integer initially 1.


    max

    Word Type: Special Function

    Description: Finds the maximum from a given set of values.

    Syntax:

    max {set of variables}

    Examples:

      max (x, y, Generator_1)
      max (x, y, and Generator_1)
      foo = max (#one, #two, #three).
    
      #one is a local machine integer initially 1.
      #two is a local machine integer initially 2.
      #three is a local machine integer initially 3.
      foo is a machine integer initially 0.
      foo = max(#one, #two, #three).           // foo = 3

     Related Topics

    min

     Operators

    Exception Values propagation for max
    max -RAIL -OK 0 +OK +RAIL NAN
    -RAIL -RAIL -OK 0 +OK +RAIL NAN
    -OK -OK OK 0 +OK +RAIL NAN
    0 0 0 0 +OK +RAIL NAN
    +OK +OK +OK +OK +OK +RAIL NAN
    +RAIL +RAIL +RAIL +RAIL +RAIL +RAIL NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    min

    Word Type: Special Function

    Description: Finds the minimum from a given set of values.

    Syntax:

    min {set of variables}

    Examples:

      min (x, y, Generator_1)
      min (x, y, and Generator_1)
      bar = min (#one, #two, #three).
    
      #one is a local machine integer initially 1.
      #two is a local machine integer initially 2.
      #three is a local machine integer initially 3.
      bar is a machine integer initially 0.
      bar = min(#one, #two, #three).              // bar = 1

     

     Related Topics

    max

    Operators

    Exception Values propagation for min
    min -RAIL -OK 0 +OK +RAIL NAN
    -RAIL -RAIL -RAIL -RAIL -RAIL -RAIL NAN
    -OK -RAIL -OK -OK -OK -OK NAN
    0 -RAIL -OK 0 0 0 NAN
    +OK -RAIL -OK 0 +OK +OK NAN
    +RAIL -RAIL -OK 0 +OK +RAIL NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    minus

    Word Type: Arithemitic Operator

    Description: Computes the difference of two numbers.

    Syntax:

    {expression} minus {expression}

    Examples:

      17 minus x      /* this is the same as 17 - x */
      y minus (x + z) /* this is the same as y - (x + z) */
    
      alpha = 1 minus 3.          // alpha = -2

     Related Topics

    -

     subtract

     decrement

     Operators

    Exception Values propagation for minus
    minus -RAIL -OK 0 +OK +RAIL NAN
    -RAIL NAN NAN -RAIL -RAIL -RAIL NAN
    -OK NAN OK -OK -??? -RAIL NAN
    0 +RAIL +OK 0 -OK -RAIL NAN
    +OK +RAIL +??? +OK OK NAN NAN
    +RAIL +RAIL +RAIL +RAIL NAN NAN NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    mod

    Word Type: Arithemitic Operator

    Description:
    Applies the modulus function to two variables. It has a number of uses with examples below.

    Syntax:

    {expression} mod {expression}

    Examples:

      Generator_2 mod Generator_2
      Gernerator_2 mod (x + y + Generator_1)
    
      PI is the constant 2 * acos 0.
      gamma and delta are paracell numbers.
      epsilon and zeta are machine integers.
      rho is a floating point number.
      #beta is a local float initially 0.
      #temp is a local safe integer.
      #four is a local pnumber initially 4.
      if #beta < 1000
        then add PI to #beta
        else #beta = 0.
      gamma = #beta mod 1.        // #gamma = the fractional part of #beta
      rho = #beta mod 1.          // the same as the above line, but a float
      delta = #beta mod #four.    // #delta takes on real values from 0 to 4
      epsilon = #beta mod #four.  // rounding up can cause #epsilon to be 4
      #temp = #beta.              // convert #beta to an integer
      zeta = #temp mod #four.     // #zeta can only be 0, 1, 2 or 3

     Related Topics

     /

     divide

     Operators

    Exception Values propagation for modulo
    mod -RAIL -OK 0 +OK +RAIL NAN
    -RAIL NAN NAN NAN NAN NAN NAN
    -OK NAN -OK NAN +OK NAN NAN
    0 0 0 NAN 0 0 NAN
    +OK NAN -OK NAN +OK NAN NAN
    +RAIL NAN NAN NAN NAN NAN NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    multiply

    Word Type: Command Verb (Setter)

    Description: Sets the value of the variable to the product of the variable and a specified value. The value to be multiplied is specified by the keyword "by".

    Syntax:

    	multiply {a variable} by {an expression}

    Examples:

      multiply x by 6  /* this is the same as x = x * 6.           */
      multiply generator_1 by (y + 1). /* this is the same as:
                                          generator_1 = generator_1 * (y + 1) */

     Related Topics

     *

     times

     Operators

    Exception Values propagation for Multiplication
    * -RAIL -OK -0.x 0 +0.x +OK +RAIL NAN
    -RAIL +RAIL +RAIL NAN 0 NAN -RAIL -RAIL NAN
    -OK +RAIL +??? +OK 0 -OK -??? -RAIL NAN
    -0.x NAN +OK +OK 0 -OK -OK NAN NAN
    0 0 0 0 0 0 0 0 NAN
    +0.x NAN -OK -OK 0 +OK +OK NAN NAN
    +OK -RAIL -??? -OK 0 +OK +??? +RAIL NAN
    +RAIL -RAIL -RAIL NAN 0 NAN +RAIL +RAIL NAN
    NAN NAN NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    ???: an unknown valid value
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    NAN

    Word Type: Exceptional Value

    Description:

    1. Denotes non-representable number (Not A Number).
    2. Denotes the Unknown condition branch in a Conditional Sentence; used in place of the keyword, UNKNOWN.

    Syntax:

    	see If...then...else...UNKNOWN

    Examples:

      If x is less than 5
        then multiply x by 6
        NAN multiplpy generator_1 by (y + 1).

     Related Topics

     If...then...else...unknown

     Conditional Sentences

     Safe Numbers and Exceptional Values


    not

    Word Type: Logical Operator

    Description: Performs the logical NOT operation.

    Syntax:

    not {an expression}

    Examples:

    foo is a boolean initially FALSE.
    bar is a pnumber initially 0.
    if foo is not TRUE
    then increment bar
    else bar = 666
    endif.

     Related Topics

    Operators

     Conditional Sentences

    Exception Values propagation for NOT
    true false unknown
    not false true unknown


    number, numbers

    Word Type:

    Description:

    Syntax:

    Examples:

      theta is a paracell number initially 0.
      if theta is not equal to 100
        then increment theta
        else theta = 0.
    
      #myArray is a local array[1..3] of paracell numbers initially 0.
      #myArray[1] = 1.
      #myArray[2] = 2.
      #myArray[3] = 3.


    of

    Word Type:

    Description:

    Syntax:

    Examples:

      myArray is an array[1..3] of paracell numbers initially 0.
      myArray[1] = 1.
      myArray[2] = 2.
      myArray[3] = 3.


    off, on

    Word Type:

    Description:

    Syntax:

    Examples:

      iota is a local boolean initially TRUE.
      #theta is a machine integer initially 100.
      if #theta > 50
        then iota is OFF
        else iota is ON.


    or

    Word Type: Logical Operator

    Description: Performs the logical OR operation.

    Syntax:

    	{an expression} or {an expression}

    Examples:

      x or y
      If (x is 3) or (y is 4) 
        then add y plus 17 to x.      // x, y, and z are Paracell Numbers.
    
      foo is a paracell number initially 0.
      If foo > 100
        or foo is NAN
          then foo = 1
          else foo = foo + 1.

     Related Topics

    and

     Operators

    Exception Values propagation for operator OR
    or true false unknown
    true true true true
    false true false unknown
    unknown true unknown unknown


    paracell

    Word Type:

    Description:

    Syntax:

    Examples:

      kappa is a paracell number initially 0.
      #lambda is a local pnumber initially 1.
      if kappa < 100
        then kappa = kappa plus #lambda
        else kappa = 0.


    plus

    Word Type: Arithmetic Operator

    Description: Computes the sum of two numbers.

    Syntax:

    	{an expression} plus {an expression}

    Examples:

      17 plus x    /* this is the same as 17 + x  */
      y plus x    /* this is the same as y + x  */
    
      foo is a machine integer initially 1.
      If foo < 100
        then foo = foo plus foo
        else foo = 1.

     Related Topics

     +

     add

     increment

     Operators

    Exception Values propagation for addition
    + -RAIL -OK 0 +OK +RAIL NAN
    -RAIL -RAIL -RAIL -RAIL NAN NAN NAN
    -OK -RAIL -??? -OK OK NAN NAN
    0 -RAIL -OK 0 +OK +RAIL NAN
    +OK NAN OK +OK +??? +RAIL NAN
    +RAIL NAN NAN +RAIL +RAIL +RAIL NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    ???: an unknown valid value
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    pnumber, pnumbers

    Word Type:

    Description:

    Syntax:

    Examples:

      kappa is a paracell number initially 0.
      #lambda is a local pnumber initially 1.
      if kappa < 100
        then kappa = kappa plus #lambda
        else kappa = 0.
    
      mu and nu are local pnumbers initially 1.01.
      xi is a local floating point number initially 0.
      xi = mu ** nu.
      if mu is RAIL
        then mu = 1.01
        else mu = mu * mu.


    point

    Word Type:

    Description:

    Syntax:

    Examples:

      mu and nu are local pnumbers initially 1.01.
      xi is a local floating point number initially 0.
      xi = mu ** nu.
      if mu is RAIL
        then mu = 1.01
        else mu = mu * mu.
    
    

    RAIL

    Word Type: Exceptional Value

    Description: Denotes a value greater or less than what is representable.

    Syntax:

    Examples:

      mu and nu are local pnumbers initially 1.01.
      xi is a local floating point number initially 0.
      xi = mu ** nu.
      if mu is RAIL
        then mu = 1.01
        else mu = mu * mu.

     Related Topics

    Paracell Numbers

     Safe Numbers and Exceptional Values


    round

    Word Type:

    Description:

    Syntax:

    Examples:

      #mu is a paracell number initially 3.1416.
      nu is a paracell number initially 0.
      nu = round(#mu).     // nu = 3.0000


    safe

    Word Type:

    Description:

    Syntax:

    Examples:

      omicron is a safe integer initially 60.
      rho is a paracell number initially 0.
      set rho to sec(omicron)°.      // rho = sec(60 deg) = 2


    sec

    Word Type:

    Description:

    Syntax:

    Examples:

      omicron is a local safe integer initially 60.
      rho is a local paracell number initially 0.
      set rho to sec(omicron)°.      // rho = sec(60 deg) = 2


    set

    Word Type: Command Verb (Setter)

    Description: Sets a variable to a specified value.

    Syntax:

    	set {a variable} to {an expression}

    Examples:

      Set x to 5.                    /* this is the same as x = 5.   */
      Set generator_1 to Y + X * Z.  /* this is the same as Generator_1 = x + y * z.  /*
      Set rho to sec (omicron)

     Related Topics

     =

     Commands

     Assign


    sin

    Word Type:

    Description: sine

    Syntax:

    Examples:

      #omicron is a local pnumber initially 60.
      sigma is a float initially 0.
      sigma = sin(#omicron)°.              // sin(60 deg) = sqrt3 / 2 = .8860


    sinh

    Word Type:

    Description: hyperbolic sine

    Syntax:

    Examples:

      #one is a local machine integer initially 1.
      tau is a floating point number.
      tau = sinh(#one).                    // sinh(1) = 1.1752


    sqrt

    Word Type:

    Description: square root

    Syntax:

    Examples:

      upsilon is a local machine integer initially 1000.
      if upsilon > 0
        then subtract sqrt(upsilon) from upsilon
        else upsilon = 1000.


    subtract

     

    Word Type: Command Verb (Assigner)

    Description: Assigns the difference of the variable and a specified value to the variable.

    Syntax:

    subtract{expression} from {expression}

    Examples:

      Subtract 17 from x   /* this is the same as 17 - x */
      subract y from x     /* this is the same as y - x  */
    
      upsilon is a machine integer initially 1000.
      if upsilon > 0
        then subtract sqrt(upsilon) from upsilon
        else upsilon = 1000.

     Related Topics

    -

     minus

     decrement

     Operators

    Exception Values propagation for minus
    minus -RAIL -OK 0 +OK +RAIL NAN
    -RAIL NAN NAN -RAIL -RAIL -RAIL NAN
    -OK NAN OK -OK -??? -RAIL NAN
    0 +RAIL +OK 0 -OK -RAIL NAN
    +OK +RAIL +??? +OK OK NAN NAN
    +RAIL +RAIL +RAIL +RAIL NAN NAN NAN
    NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    tan

    Word Type:

    Description: tangent

    Syntax:

    Examples:

      #PI is the local constant 2 * acos 0.
      #four is a local paracell number initially 4.
      foo is a paracell number initially 1.
      foo = tan(#PI / #four).           // tan(pi/4) = 1


    tanh

    Word Type:

    Description: hyperbolic tangent

    Syntax:

    Examples:

      #one is a local paracell number initially 1.
      bar is a float initially 1.
      bar = tanh(#one).            // tanh(1) = .7616


    than

    Word Type:

    Description:

    Syntax:

    Examples:

      alpha is a paracell number initially 1.1.
      #ONE_THOUSAND is the local constant 1000.
      if alpha is greater than #ONE_THOUSAND
        then alpha = 1.1
        else alpha = alpha times 1.1.


    the

    Word Type:

    Description:

    Syntax:

    Examples:

      alpha is a paracell number initially 1.1.
      #ONE_THOUSAND is the local constant 1000.
      if alpha is greater than #ONE_THOUSAND
        then alpha = 1.1
        else alpha = alpha times 1.1.


    then

    Word Type:

    Description:

    Syntax:

    Examples:

      alpha is a paracell number initially 1.1.
      #ONE_THOUSAND is the local constant 1000.
      if alpha is greater than #ONE_THOUSAND
        then alpha = 1.1
        else alpha = alpha times 1.1.


    times

    Word Type: Arithmetic Operator

    Description: Computes the product of two values. The value to be multiplied is specified by the keyword "by".

    Syntax:

    	{an expression} times {an expression}

    Examples:

      17 times x       /* this is the same as 17 * x       */
      y times (x + z). /* this is the same as y * (x + z)  */
    
      alpha is a paracell number initially 1.1.
      #ONE_THOUSAND is the local constant 1000.
      if alpha is greater than #ONE_THOUSAND
        then alpha = 1.1
        else alpha = alpha times 1.1.

     Related Topics

    *

     Operators

    Exception Values propagation for Multiplication
    * -RAIL -OK -0.x 0 +0.x +OK +RAIL NAN
    -RAIL +RAIL +RAIL NAN 0 NAN -RAIL -RAIL NAN
    -OK +RAIL +??? +OK 0 -OK -??? -RAIL NAN
    -0.x NAN +OK +OK 0 -OK -OK NAN NAN
    0 0 0 0 0 0 0 0 NAN
    +0.x NAN -OK -OK 0 +OK +OK NAN NAN
    +OK -RAIL -??? -OK 0 +OK +??? +RAIL NAN
    +RAIL -RAIL -RAIL NAN 0 NAN +RAIL +RAIL NAN
    NAN NAN NAN NAN NAN NAN NAN NAN NAN

    OK: a valid value within range of representation
    ???: an unknown valid value
    RAIL: a value outside the range of representation
    NAN: (Not A Number) a non-representable number or otherwise unknown value


    to

    Word Type: Preposition

    Description: Used in assignment commands.

    Syntax:

    	assign {an expression} to {a variable}
    
     set {a variable} to {an expression}

    Examples:

      Assign 5 to x.  /*  this is the same as x = 5  */
      Set x to 5.     /*  this is the same as x = 5  */

     Related Topics

     assign

     set

     commands


    true

    Word Type:

    Description:

    Syntax:

    Examples:

      beta is of type paracell number.
      gamma is a boolean initially true.
      delta is a pnumber.
      epsilon is a pnumber initially 99.99.
      if gamma is true
        and delta is unknown
        then delta = 1,
           beta = 1,
           epsilon = 99.99,
           gamma is false
        else epsilon = sqrt(epsilon),
           set beta to truncate(epsilon),
           delta = 1 / (1 - epsilon),
           gamma is true.


    truncate

    Word Type:

    Description:

    Syntax:

    Examples:

      beta is of type paracell number.
      gamma is a boolean initially true.
      delta is a pnumber.
      epsilon is a pnumber initially 99.99.
      if gamma is true
        and delta is unknown
        then delta = 1,
           beta = 1,
           epsilon = 99.99,
           gamma is false
        else epsilon = sqrt(epsilon),
           set beta to truncate(epsilon),
           delta = 1 / (1 - epsilon),
           gamma is true.


    type

    Word Type:

    Description:

    Syntax:

    Examples:

      beta is of type paracell number.
      gamma is a boolean initially true.
      delta is a pnumber.
      epsilon is a pnumber initially 99.99.
      if gamma is true
        and delta is unknown
        then delta = 1,
           beta = 1,
           epsilon = 99.99,
           gamma is false
        else epsilon = sqrt(epsilon),
           set beta to truncate(epsilon),
           delta = 1 / (1 - epsilon),
           gamma is true.


    unknown

    Word Type:

    Description: Denotes the Unknown condition branch in a Conditional Sentence.

    Syntax:

     see if...then...else...Unknown

    Examples:

      if x is less than 5
        then multiply x by 6
        UNKNOWN multiply generator_1 by (y + 1).
    
     beta is of type paracell number.
     gamma is a boolean initially true.
     delta is a pnumber.
     epsilon is a pnumber initially 99.99.
     if gamma is true
      and delta is unknown
      then delta = 1,
         beta = 1,
         epsilon = 99.99,
         gamma is false
      else epsilon = sqrt(epsilon),
         set beta to truncate(epsilon),
         delta = 1 / (1 - epsilon),
         gamma is true.

     Related Topics

    If...then...else...unknown

     Conditional Sentences


    Next: Appendix: Special Characters, Top: Table of Contents


     

     Flavors Technology, Inc.
    Sunrise Labs
    5 Dartmouth Drive
    Auburn, NH 03032 USA
    Internet: info@flavors.com
    Telephone: 603-644-4500 / Fax: 603-622-9797

    Copyright© 1993-6 by Flavors Technology, Inc. All rights Reserved.