Sophie

Sophie

distrib > Mageia > 1 > i586 > by-pkgid > d92aa75c2d384ff9f513aed09a46f703 > files > 218

parrot-doc-3.1.0-2.mga1.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Parrot  - Mathematical Opcodes</title>
        <link rel="stylesheet" type="text/css"
            href="../../../resources/parrot.css"
            media="all">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    </head>
    <body>
        <div id="wrapper">
            <div id="header">

                <a href="http://www.parrot.org">
                <img border=0 src="../../../resources/parrot_logo.png" id="logo" alt="parrot">
                </a>
            </div> <!-- "header" -->
            <div id="divider"></div>
            <div id="mainbody">
                <div id="breadcrumb">
                    <a href="../../../html/index.html">Home</a> &raquo; <a href="../../../html/ops.html">Opcodes</a> &raquo; Mathematical Opcodes
                </div>

<h1><a name="NAME"
>NAME</a></h1>

<p>math.ops &#45; Mathematical Opcodes</p>

<h1><a name="DESCRIPTION"
>DESCRIPTION</a></h1>

<p>Operations that perform basic mathematics.
See <em>src/dynoplibs/</em> for more advanced operations.</p>

<p>When making changes to any ops file,
run <code>make bootstrap&#45;ops</code> to regenerate all generated ops files.</p>

<h2><a name="Arithmetic_operations"
>Arithmetic operations</a></h2>

<p>These operations store the results of arithmetic on other registers and constants into their destination register,
$1.</p>

<dl>
<dt><a name="abs(inout_INT)"
><b>abs</b>(inout INT)</a></dt>

<dt><a name="abs(inout_NUM)"
><b>abs</b>(inout NUM)</a></dt>

<dt><a name="abs(invar_PMC)"
><b>abs</b>(invar PMC)</a></dt>
Set $1 to its absolute value.
<dt><a name="abs(out_INT,_in_INT)"
><b>abs</b>(out INT,
in INT)</a></dt>

<dt><a name="abs(out_NUM,_in_NUM)"
><b>abs</b>(out NUM,
in NUM)</a></dt>

<dt><a name="abs(out_PMC,_invar_PMC)"
><b>abs</b>(out PMC,
invar PMC)</a></dt>
Set $1 to absolute value of $2.
<dt><a name="add(inout_INT,_in_INT)"
><b>add</b>(inout INT,
in INT)</a></dt>

<dt><a name="add(inout_NUM,_in_NUM)"
><b>add</b>(inout NUM,
in NUM)</a></dt>

<dt><a name="add(invar_PMC,_invar_PMC)"
><b>add</b>(invar PMC,
invar PMC)</a></dt>

<dt><a name="add(invar_PMC,_in_INT)"
><b>add</b>(invar PMC,
in INT)</a></dt>

<dt><a name="add(invar_PMC,_in_NUM)"
><b>add</b>(invar PMC,
in NUM)</a></dt>
Increase $1 by the amount in $2.
<dt><a name="add(out_INT,_in_INT,_in_INT)"
><b>add</b>(out INT,
in INT,
in INT)</a></dt>

<dt><a name="add(out_NUM,_in_NUM,_in_NUM)"
><b>add</b>(out NUM,
in NUM,
in NUM)</a></dt>

<dt><a name="add(invar_PMC,_invar_PMC,_invar_PMC)"
><b>add</b>(invar PMC,
invar PMC,
invar PMC)</a></dt>

<dt><a name="add(invar_PMC,_invar_PMC,_in_INT)"
><b>add</b>(invar PMC,
invar PMC,
in INT)</a></dt>

<dt><a name="add(invar_PMC,_invar_PMC,_in_NUM)"
><b>add</b>(invar PMC,
invar PMC,
in NUM)</a></dt>
Set $1 to the sum of $2 and $3.
<dt><a name="dec(inout_INT)"
><b>dec</b>(inout INT)</a></dt>

<dt><a name="dec(inout_NUM)"
><b>dec</b>(inout NUM)</a></dt>

<dt><a name="dec(invar_PMC)"
><b>dec</b>(invar PMC)</a></dt>
Decrease $1 by one.
<dt><a name="div(inout_INT,_in_INT)"
><b>div</b>(inout INT,
in INT)</a></dt>

<dt><a name="div(inout_NUM,_in_NUM)"
><b>div</b>(inout NUM,
in NUM)</a></dt>

<dt><a name="div(invar_PMC,_invar_PMC)"
><b>div</b>(invar PMC,
invar PMC)</a></dt>

<dt><a name="div(invar_PMC,_in_INT)"
><b>div</b>(invar PMC,
in INT)</a></dt>

<dt><a name="div(invar_PMC,_in_NUM)"
><b>div</b>(invar PMC,
in NUM)</a></dt>
Divide $1 by $2.
<dt><a name="div(out_INT,_in_INT,_in_INT)"
><b>div</b>(out INT,
in INT,
in INT)</a></dt>

<dt><a name="div(out_NUM,_in_NUM,_in_NUM)"
><b>div</b>(out NUM,
in NUM,
in NUM)</a></dt>

<dt><a name="div(invar_PMC,_invar_PMC,_invar_PMC)"
><b>div</b>(invar PMC,
invar PMC,
invar PMC)</a></dt>

<dt><a name="div(invar_PMC,_invar_PMC,_in_INT)"
><b>div</b>(invar PMC,
invar PMC,
in INT)</a></dt>

<dt><a name="div(invar_PMC,_invar_PMC,_in_NUM)"
><b>div</b>(invar PMC,
invar PMC,
in NUM)</a></dt>
Set $1 to the quotient of $2 divided by $3.
In the case of INTVAL division,
the result is truncated (NOT rounded or floored).
If the denominator is zero,
a &#39;Divide by zero&#39; exception is thrown.
<dt><a name="fdiv(inout_INT,_in_INT)"
><b>fdiv</b>(inout INT,
in INT)</a></dt>

<dt><a name="fdiv(inout_NUM,_in_NUM)"
><b>fdiv</b>(inout NUM,
in NUM)</a></dt>

<dt><a name="fdiv(invar_PMC,_invar_PMC)"
><b>fdiv</b>(invar PMC,
invar PMC)</a></dt>

<dt><a name="fdiv(invar_PMC,_in_INT)"
><b>fdiv</b>(invar PMC,
in INT)</a></dt>

<dt><a name="fdiv(invar_PMC,_in_NUM)"
><b>fdiv</b>(invar PMC,
in NUM)</a></dt>
Floor divide $1 by $2.
<dt><a name="fdiv(out_INT,_in_INT,_in_INT)"
><b>fdiv</b>(out INT,
in INT,
in INT)</a></dt>

<dt><a name="fdiv(out_NUM,_in_NUM,_in_NUM)"
><b>fdiv</b>(out NUM,
in NUM,
in NUM)</a></dt>

<dt><a name="fdiv(invar_PMC,_invar_PMC,_invar_PMC)"
><b>fdiv</b>(invar PMC,
invar PMC,
invar PMC)</a></dt>

<dt><a name="fdiv(invar_PMC,_invar_PMC,_in_INT)"
><b>fdiv</b>(invar PMC,
invar PMC,
in INT)</a></dt>

<dt><a name="fdiv(invar_PMC,_invar_PMC,_in_NUM)"
><b>fdiv</b>(invar PMC,
invar PMC,
in NUM)</a></dt>
Set $1 to the quotient of $2 divided by $3.
The result is the floor() of the division i.e.
the next whole integer towards &#45;inf.
If the denominator is zero,
a &#39;Divide by zero&#39; exception is thrown.
<dt><a name="ceil(inout_NUM)"
><b>ceil</b>(inout NUM)</a></dt>
Set $1 to the smallest integral value greater than or equal to $1.
<dt><a name="ceil(out_INT,_in_NUM)"
><b>ceil</b>(out INT,
in NUM)</a></dt>

<dt><a name="ceil(out_NUM,_in_NUM)"
><b>ceil</b>(out NUM,
in NUM)</a></dt>
Set $1 to the smallest integral value greater than or equal to $2.
<dt><a name="floor(inout_NUM)"
><b>floor</b>(inout NUM)</a></dt>
Set $1 to the largest integral value less than or equal to $1.
<dt><a name="floor(out_INT,_in_NUM)"
><b>floor</b>(out INT,
in NUM)</a></dt>

<dt><a name="floor(out_NUM,_in_NUM)"
><b>floor</b>(out NUM,
in NUM)</a></dt>
Set $1 to the largest integral value less than or equal to $2.
<dt><a name="inc(inout_INT)"
><b>inc</b>(inout INT)</a></dt>

<dt><a name="inc(inout_NUM)"
><b>inc</b>(inout NUM)</a></dt>

<dt><a name="inc(invar_PMC)"
><b>inc</b>(invar PMC)</a></dt>
Increase $1 by one.
<dt><a name="mod(out_INT,_in_INT,_in_INT)"
><b>mod</b>(out INT,
in INT,
in INT)</a></dt>

<dt><a name="mod(out_NUM,_in_NUM,_in_NUM)"
><b>mod</b>(out NUM,
in NUM,
in NUM)</a></dt>

<dt><a name="mod(invar_PMC,_invar_PMC,_invar_PMC)"
><b>mod</b>(invar PMC,
invar PMC,
invar PMC)</a></dt>

<dt><a name="mod(invar_PMC,_invar_PMC,_in_INT)"
><b>mod</b>(invar PMC,
invar PMC,
in INT)</a></dt>

<dt><a name="mod(invar_PMC,_invar_PMC,_in_NUM)"
><b>mod</b>(invar PMC,
invar PMC,
in NUM)</a></dt>
Sets $1 to the modulus of $2 and $3.
<dt><a name="mod(inout_INT,_in_INT)"
><b>mod</b>(inout INT,
in INT)</a></dt>

<dt><a name="mod(inout_NUM,_in_NUM)"
><b>mod</b>(inout NUM,
in NUM)</a></dt>

<dt><a name="mod(invar_PMC,_invar_PMC)"
><b>mod</b>(invar PMC,
invar PMC)</a></dt>

<dt><a name="mod(invar_PMC,_in_INT)"
><b>mod</b>(invar PMC,
in INT)</a></dt>

<dt><a name="mod(invar_PMC,_in_NUM)"
><b>mod</b>(invar PMC,
in NUM)</a></dt>
Sets $1 to the modulus of $1 and $2.NOTE: This &#34;corrected mod&#34; algorithm is based on the C code on page 70 of [1].
Assuming correct behavior of the built&#45;in mod operator (%) with positive arguments,
this algorithm implements a mathematically convenient version of mod,
defined thus:
<pre>  x mod y = x &#45; y * floor(x / y)</pre>
For more information on this definition of mod, see section 3.4 of [2], pages 81&#45;85.References:
<pre>  [1] Donald E. Knuth, *MMIXware: A RISC Computer for the Third
      Millennium* Springer, 1999.

  [2] Ronald L. Graham, Donald E. Knuth and Oren Patashnik, *Concrete
      Mathematics*, Second Edition. Addison&#45;Wesley, 1994.</pre>

<dt><a name="mul(inout_INT,_in_INT)"
><b>mul</b>(inout INT, in INT)</a></dt>

<dt><a name="mul(inout_NUM,_in_NUM)"
><b>mul</b>(inout NUM, in NUM)</a></dt>

<dt><a name="mul(invar_PMC,_invar_PMC)"
><b>mul</b>(invar PMC, invar PMC)</a></dt>

<dt><a name="mul(invar_PMC,_in_INT)"
><b>mul</b>(invar PMC, in INT)</a></dt>

<dt><a name="mul(invar_PMC,_in_NUM)"
><b>mul</b>(invar PMC, in NUM)</a></dt>
Set $1 to the product of $1 and $2.
<dt><a name="mul(out_INT,_in_INT,_in_INT)"
><b>mul</b>(out INT, in INT, in INT)</a></dt>

<dt><a name="mul(out_NUM,_in_NUM,_in_NUM)"
><b>mul</b>(out NUM, in NUM, in NUM)</a></dt>

<dt><a name="mul(invar_PMC,_invar_PMC,_invar_PMC)"
><b>mul</b>(invar PMC, invar PMC, invar PMC)</a></dt>

<dt><a name="mul(invar_PMC,_invar_PMC,_in_INT)"
><b>mul</b>(invar PMC, invar PMC, in INT)</a></dt>

<dt><a name="mul(invar_PMC,_invar_PMC,_in_NUM)"
><b>mul</b>(invar PMC, invar PMC, in NUM)</a></dt>
Set $1 to the product of $2 and $3.
<dt><a name="neg(inout_INT)"
><b>neg</b>(inout INT)</a></dt>

<dt><a name="neg(inout_NUM)"
><b>neg</b>(inout NUM)</a></dt>

<dt><a name="neg(invar_PMC)"
><b>neg</b>(invar PMC)</a></dt>
Set $1 to its negative.
<dt><a name="neg(out_INT,_in_INT)"
><b>neg</b>(out INT, in INT)</a></dt>

<dt><a name="neg(out_NUM,_in_NUM)"
><b>neg</b>(out NUM, in NUM)</a></dt>

<dt><a name="neg(out_PMC,_invar_PMC)"
><b>neg</b>(out PMC, invar PMC)</a></dt>
Set $1 to the negative of $2.
<dt><a name="sub(inout_INT,_in_INT)"
><b>sub</b>(inout INT, in INT)</a></dt>

<dt><a name="sub(inout_NUM,_in_NUM)"
><b>sub</b>(inout NUM, in NUM)</a></dt>

<dt><a name="sub(invar_PMC,_invar_PMC)"
><b>sub</b>(invar PMC, invar PMC)</a></dt>

<dt><a name="sub(invar_PMC,_in_INT)"
><b>sub</b>(invar PMC, in INT)</a></dt>

<dt><a name="sub(invar_PMC,_in_NUM)"
><b>sub</b>(invar PMC, in NUM)</a></dt>
Decrease $1 by the amount in $2.
<dt><a name="sub(out_INT,_in_INT,_in_INT)"
><b>sub</b>(out INT, in INT, in INT)</a></dt>

<dt><a name="sub(out_NUM,_in_NUM,_in_NUM)"
><b>sub</b>(out NUM, in NUM, in NUM)</a></dt>

<dt><a name="sub(invar_PMC,_invar_PMC,_invar_PMC)"
><b>sub</b>(invar PMC, invar PMC, invar PMC)</a></dt>

<dt><a name="sub(invar_PMC,_invar_PMC,_in_INT)"
><b>sub</b>(invar PMC, invar PMC, in INT)</a></dt>

<dt><a name="sub(invar_PMC,_invar_PMC,_in_NUM)"
><b>sub</b>(invar PMC, invar PMC, in NUM)</a></dt>
Set $1 to $2 minus $3.
<dt><a name="sqrt(out_NUM,_in_NUM)"
><b>sqrt</b>(out NUM, in NUM)</a></dt>
Set $1 to the square root of $2.</dl>

<h1><a name="COPYRIGHT"
>COPYRIGHT</a></h1>

<p>Copyright (C) 2001&#45;2009, Parrot Foundation.</p>

<h1><a name="LICENSE"
>LICENSE</a></h1>

<p>This program is free software. It is subject to the same license as the Parrot interpreter itself.</p>
            </div> <!-- "mainbody" -->
            <div id="divider"></div>
            <div id="footer">
	        Copyright &copy; 2002-2011, Parrot Foundation.
            </div>
        </div> <!-- "wrapper" -->
    </body>
</html>