<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
<!DOCTYPE interface-description SYSTEM 'file:///usr/pkgsrc/lang/oo2c/work.macaroon/oo2c_32-2.0.11/rsrc/OOC/xml/interface-description.dtd'>
<interface-description name='RealMath' id=''>
  <oberon-doc>
    <summary>Note: The functions defined here used to use to <left-quote/>*f<right-quote/> versions of the math functions.</summary>
    <p pad-after='yes' no-indent='yes'>Note: The functions defined here used to use to <left-quote/>*f<right-quote/> versions of the math functions.  These turned out to be ISO C functions, and are not available on Mac OSX at the time of writing.  Therefore, they were replaced with some C level type cast trickery, which prevent them from being used in a procedure variable, but should work fine otherwise.</p>
  </oberon-doc>
  <import-decl name='LRealMath' id='LRealMath' export='no' module='LRealMath'/>
  <const-decl name='pi' id='pi' export='yes' value='unknown'/>
  <const-decl name='exp1' id='exp1' export='yes' value='unknown'/>
  <procedure name='sqrt' id='sqrt' export='yes'>
    <oberon-doc>
      <summary>Returns the positive square root of x where x &gt;= 0.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the positive square root of x where x &gt;= 0.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='sqrt.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='exp' id='exp' export='yes'>
    <oberon-doc>
      <summary>Returns the exponential of x for x &lt; Ln(MAX(REAL).</summary>
      <p pad-after='yes' no-indent='yes'>Returns the exponential of x for x &lt; Ln(MAX(REAL).</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='exp.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='ln' id='ln' export='yes'>
    <oberon-doc>
      <summary>Returns the natural logarithm of x for x &gt; 0.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the natural logarithm of x for x &gt; 0.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='ln.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='sin' id='sin' export='yes'>
    <formal-parameters>
      <parameter-decl name='x' id='sin.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='cos' id='cos' export='yes'>
    <formal-parameters>
      <parameter-decl name='x' id='cos.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='tan' id='tan' export='yes'>
    <oberon-doc>
      <summary>Returns the tangent of x where x cannot be an odd multiple of pi/2.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the tangent of x where x cannot be an odd multiple of pi/2.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='tan.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arcsin' id='arcsin' export='yes'>
    <oberon-doc>
      <summary>Returns the arcsine of x, in the range [-pi/2, pi/2] where -1 &lt;= x &lt;= 1.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the arcsine of x, in the range [-pi/2, pi/2] where -1 &lt;= x &lt;= 1.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arcsin.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arccos' id='arccos' export='yes'>
    <oberon-doc>
      <summary>Returns the arccosine of x, in the range [0, pi] where -1 &lt;= x &lt;= 1.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the arccosine of x, in the range [0, pi] where -1 &lt;= x &lt;= 1.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arccos.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arctan' id='arctan' export='yes'>
    <oberon-doc>
      <summary>Returns the arctangent of x, in the range [-pi/2, pi/2] for all x.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the arctangent of x, in the range [-pi/2, pi/2] for all x.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arctan.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='power' id='power' export='yes'>
    <oberon-doc>
      <summary>Returns the value of the number base raised to the power exponent for base &gt; 0.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the value of the number base raised to the power exponent for base &gt; 0.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='base' id='power.base' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <parameter-decl name='exponent' id='power.exponent' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='round' id='round' export='yes'>
    <oberon-doc>
      <summary>Returns the value of x rounded to the nearest integer.</summary>
      <p pad-after='yes' no-indent='yes'>Returns the value of x rounded to the nearest integer.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='round.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='LONGINT'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='sincos' id='sincos' export='yes'>
    <oberon-doc>
      <summary>More efficient sin/cos implementation if both values are needed.</summary>
      <p pad-after='yes' no-indent='yes'>More efficient sin/cos implementation if both values are needed.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='sincos.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <parameter-decl name='sin' id='sincos.sin' export='no' variable-parameter='yes'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <parameter-decl name='cos' id='sincos.cos' export='no' variable-parameter='yes'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
    </formal-parameters>
  </procedure>
  <procedure name='arctan2' id='arctan2' export='yes'>
    <oberon-doc>
      <summary>arctan2(xn,xd) is the quadrant-correct arc tangent atan(xn/xd).</summary>
      <p pad-after='yes' no-indent='yes'>arctan2(xn,xd) is the quadrant-correct arc tangent atan(xn/xd).  If the denominator xd is zero, then the numerator xn must not be zero.  All arguments are legal except xn = xd = 0.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='xn' id='arctan2.xn' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <parameter-decl name='xd' id='arctan2.xd' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='sinh' id='sinh' export='yes'>
    <oberon-doc>
      <summary>sinh(x) is the hyperbolic sine of x.</summary>
      <p pad-after='yes' no-indent='yes'>sinh(x) is the hyperbolic sine of x.  The argument x must not be so large that exp(|x|) overflows.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='sinh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='cosh' id='cosh' export='yes'>
    <oberon-doc>
      <summary>cosh(x) is the hyperbolic cosine of x.</summary>
      <p pad-after='yes' no-indent='yes'>cosh(x) is the hyperbolic cosine of x.  The argument x must not be so large that exp(|x|) overflows.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='cosh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='tanh' id='tanh' export='yes'>
    <oberon-doc>
      <summary>tanh(x) is the hyperbolic tangent of x.</summary>
      <p pad-after='yes' no-indent='yes'>tanh(x) is the hyperbolic tangent of x.  All arguments are legal.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='tanh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arcsinh' id='arcsinh' export='yes'>
    <oberon-doc>
      <summary>arcsinh(x) is the arc hyperbolic sine of x.</summary>
      <p pad-after='yes' no-indent='yes'>arcsinh(x) is the arc hyperbolic sine of x.  All arguments are legal.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arcsinh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arccosh' id='arccosh' export='yes'>
    <oberon-doc>
      <summary>arccosh(x) is the arc hyperbolic cosine of x.</summary>
      <p pad-after='yes' no-indent='yes'>arccosh(x) is the arc hyperbolic cosine of x.  All arguments greater than or equal to 1 are legal.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arccosh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <procedure name='arctanh' id='arctanh' export='yes'>
    <oberon-doc>
      <summary>arctanh(x) is the arc hyperbolic tangent of x.</summary>
      <p pad-after='yes' no-indent='yes'>arctanh(x) is the arc hyperbolic tangent of x.  |x| &lt; 1 - sqrt(em), where em is machine epsilon.  Note that |x| must not be so close to 1 that the result is less accurate than half precision.</p>
    </oberon-doc>
    <formal-parameters>
      <parameter-decl name='x' id='arctanh.x' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='REAL'/>
        </type>
      </parameter-decl>
      <result-type>
        <type-name module='#predef' name='REAL'/>
      </result-type>
    </formal-parameters>
  </procedure>
  <import-decl name='-RT0' id='-RT0' export='no' module='RT0'/>
  <import-decl name='-Object' id='-Object' export='no' module='Object'/>
  <import-decl name='-Exception' id='-Exception' export='no' module='Exception'/>
</interface-description>
