summaryrefslogtreecommitdiff
path: root/packages/univint/src/fp.pas
diff options
context:
space:
mode:
Diffstat (limited to 'packages/univint/src/fp.pas')
-rw-r--r--packages/univint/src/fp.pas1887
1 files changed, 1887 insertions, 0 deletions
diff --git a/packages/univint/src/fp.pas b/packages/univint/src/fp.pas
new file mode 100644
index 0000000000..f571401955
--- /dev/null
+++ b/packages/univint/src/fp.pas
@@ -0,0 +1,1887 @@
+{
+ File: fp.p
+
+ Contains: FPCE Floating-Point Definitions and Declarations.
+
+ Version: Technology: MathLib v2
+ Release: Universal Interfaces 3.4.2
+
+ Copyright: © 1987-2002 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://www.freepascal.org/bugs.html
+
+}
+
+{
+ Modified for use with Free Pascal
+ Version 200
+ Please report any bugs to <gpc@microbizz.nl>
+}
+
+{$mode macpas}
+{$packenum 1}
+{$macro on}
+{$inline on}
+{$CALLING MWPASCAL}
+
+unit fp;
+interface
+{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
+{$setc GAP_INTERFACES_VERSION := $0200}
+
+{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
+ {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
+{$endc}
+
+{$ifc defined CPUPOWERPC and defined CPUI386}
+ {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
+{$endc}
+{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
+ {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
+{$endc}
+
+{$ifc not defined __ppc__ and defined CPUPOWERPC}
+ {$setc __ppc__ := 1}
+{$elsec}
+ {$setc __ppc__ := 0}
+{$endc}
+{$ifc not defined __i386__ and defined CPUI386}
+ {$setc __i386__ := 1}
+{$elsec}
+ {$setc __i386__ := 0}
+{$endc}
+
+{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
+ {$error Conflicting definitions for __ppc__ and __i386__}
+{$endc}
+
+{$ifc defined __ppc__ and __ppc__}
+ {$setc TARGET_CPU_PPC := TRUE}
+ {$setc TARGET_CPU_X86 := FALSE}
+{$elifc defined __i386__ and __i386__}
+ {$setc TARGET_CPU_PPC := FALSE}
+ {$setc TARGET_CPU_X86 := TRUE}
+{$elsec}
+ {$error Neither __ppc__ nor __i386__ is defined.}
+{$endc}
+{$setc TARGET_CPU_PPC_64 := FALSE}
+
+{$ifc defined FPC_BIG_ENDIAN}
+ {$setc TARGET_RT_BIG_ENDIAN := TRUE}
+ {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
+{$elifc defined FPC_LITTLE_ENDIAN}
+ {$setc TARGET_RT_BIG_ENDIAN := FALSE}
+ {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
+{$elsec}
+ {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
+{$endc}
+{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
+{$setc CALL_NOT_IN_CARBON := FALSE}
+{$setc OLDROUTINENAMES := FALSE}
+{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
+{$setc OPAQUE_UPP_TYPES := TRUE}
+{$setc OTCARBONAPPLICATION := TRUE}
+{$setc OTKERNEL := FALSE}
+{$setc PM_USE_SESSION_APIS := TRUE}
+{$setc TARGET_API_MAC_CARBON := TRUE}
+{$setc TARGET_API_MAC_OS8 := FALSE}
+{$setc TARGET_API_MAC_OSX := TRUE}
+{$setc TARGET_CARBON := TRUE}
+{$setc TARGET_CPU_68K := FALSE}
+{$setc TARGET_CPU_MIPS := FALSE}
+{$setc TARGET_CPU_SPARC := FALSE}
+{$setc TARGET_OS_MAC := TRUE}
+{$setc TARGET_OS_UNIX := FALSE}
+{$setc TARGET_OS_WIN32 := FALSE}
+{$setc TARGET_RT_MAC_68881 := FALSE}
+{$setc TARGET_RT_MAC_CFM := FALSE}
+{$setc TARGET_RT_MAC_MACHO := TRUE}
+{$setc TYPED_FUNCTION_POINTERS := TRUE}
+{$setc TYPE_BOOL := FALSE}
+{$setc TYPE_EXTENDED := FALSE}
+{$setc TYPE_LONGLONG := TRUE}
+uses MacTypes,ConditionalMacros;
+
+{*******************************************************************************
+* *
+* A collection of numerical functions designed to facilitate a wide *
+* range of numerical programming as required by C9X. *
+* *
+* The <fp.h> declares many functions in support of numerical programming. *
+* It provides a superset of <math.h> and <SANE.h> functions. Some *
+* functionality previously found in <SANE.h> and not in the FPCE <fp.h> *
+* can be found in this <fp.h> under the heading "__NOEXTENSIONS__". *
+* *
+* All of these functions are IEEE 754 aware and treat exceptions, NaNs, *
+* positive and negative zero and infinity consistent with the floating- *
+* point standard. *
+* *
+*******************************************************************************}
+
+
+{$ALIGN MAC68K}
+
+{*******************************************************************************
+* *
+* Efficient types *
+* *
+* float_t Most efficient type at least as wide as float *
+* double_t Most efficient type at least as wide as double *
+* *
+* CPU float_t(bits) double_t(bits) *
+* -------- ----------------- ----------------- *
+* PowerPC float(32) double(64) *
+* 68K long double(80/96) long double(80/96) *
+* x86 double(64) double(64) *
+* *
+*******************************************************************************}
+{$ifc TARGET_CPU_PPC}
+
+type
+ float_t = Float32;
+ double_t = Float64;
+{$elsec}
+ {$ifc TARGET_CPU_68K}
+type
+ float_t = extended;
+ double_t = extended;
+ {$elsec}
+ {$ifc TARGET_CPU_X86}
+
+type
+ float_t = Float64;
+ double_t = Float64;
+ {$elsec}
+ {$ifc TARGET_CPU_MIPS}
+
+type
+ float_t = Double;
+ double_t = Double;
+ {$elsec}
+ {$ifc TARGET_CPU_ALPHA}
+
+type
+ float_t = Double;
+ double_t = Double;
+ {$elsec}
+ {$ifc TARGET_CPU_SPARC}
+
+type
+ float_t = Double;
+ double_t = Double;
+ {$elsec}
+{ Unsupported CPU }
+ {$endc}
+ {$endc}
+ {$endc}
+ {$endc}
+ {$endc}
+{$endc}
+
+{*******************************************************************************
+* *
+* Define some constants. *
+* *
+* HUGE_VAL IEEE 754 value of infinity. *
+* INFINITY IEEE 754 value of infinity. *
+* NAN A generic NaN (Not A Number). *
+* DECIMAL_DIG Satisfies the constraint that the conversion from *
+* double to decimal and back is the identity function. *
+* *
+*******************************************************************************}
+const
+{$ifc TARGET_CPU_PPC}
+ DECIMAL_DIG = 17;
+{$elsec}
+ DECIMAL_DIG = 21;
+{$endc}
+{$ifc TARGET_OS_MAC}
+{*******************************************************************************
+* *
+* Trigonometric functions *
+* *
+* acos result is in [0,pi]. *
+* asin result is in [-pi/2,pi/2]. *
+* atan result is in [-pi/2,pi/2]. *
+* atan2 Computes the arc tangent of y/x in [-pi,pi] using the sign of *
+* both arguments to determine the quadrant of the computed value. *
+* *
+*******************************************************************************}
+{
+ * cos()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function cos(x: double_t): double_t; external name '_cos';
+
+{
+ * sin()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function sin(x: double_t): double_t; external name '_sin';
+
+{
+ * tan()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function tan(x: double_t): double_t; external name '_tan';
+
+{
+ * acos()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function acos(x: double_t): double_t; external name '_acos';
+
+{
+ * asin()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function asin(x: double_t): double_t; external name '_asin';
+
+{
+ * atan()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function atan(x: double_t): double_t; external name '_atan';
+
+{
+ * atan2()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function atan2(y: double_t; x: double_t): double_t; external name '_atan2';
+
+
+{*******************************************************************************
+* *
+* Hyperbolic functions *
+* *
+*******************************************************************************}
+{
+ * cosh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function cosh(x: double_t): double_t; external name '_cosh';
+
+{
+ * sinh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function sinh(x: double_t): double_t; external name '_sinh';
+
+{
+ * tanh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function tanh(x: double_t): double_t; external name '_tanh';
+
+{
+ * acosh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function acosh(x: double_t): double_t; external name '_acosh';
+
+{
+ * asinh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function asinh(x: double_t): double_t; external name '_asinh';
+
+{
+ * atanh()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function atanh(x: double_t): double_t; external name '_atanh';
+
+
+{*******************************************************************************
+* *
+* Exponential functions *
+* *
+* expm1 expm1(x) = exp(x) - 1. But, for small enough arguments, *
+* expm1(x) is expected to be more accurate than exp(x) - 1. *
+* frexp Breaks a floating-point number into a normalized fraction *
+* and an integral power of 2. It stores the SInt16 in the *
+* object pointed by *exponent. *
+* ldexp Multiplies a floating-point number by an SInt16 power of 2. *
+* log1p log1p = log(1 + x). But, for small enough arguments, *
+* log1p is expected to be more accurate than log(1 + x). *
+* logb Extracts the exponent of its argument, as a signed integral *
+* value. A subnormal argument is treated as though it were first *
+* normalized. Thus: *
+* 1 <= x * 2^(-logb(x)) < 2 *
+* modf Returns fractional part of x as function result and returns *
+* integral part of x via iptr. Note C9X uses double not double_t. *
+* scalb Computes x * 2^n efficently. This is not normally done by *
+* computing 2^n explicitly. *
+* *
+*******************************************************************************}
+{
+ * exp()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function exp(x: double_t): double_t; external name '_exp';
+
+{
+ * expm1()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function expm1(x: double_t): double_t; external name '_expm1';
+
+{
+ * exp2()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function exp2(x: double_t): double_t; external name '_exp2';
+
+{
+ * frexp()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function frexp(x: double_t; var exponent: SInt32): double_t; external name '_frexp';
+
+{
+ * ldexp()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function ldexp(x: double_t; n: SInt32): double_t; external name '_ldexp';
+
+{
+ * log()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function log(x: double_t): double_t; external name '_log';
+
+{
+ * log2()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function log2(x: double_t): double_t; external name '_log2';
+
+{
+ * log1p()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function log1p(x: double_t): double_t; external name '_log1p';
+
+{
+ * log10()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function log10(x: double_t): double_t; external name '_log10';
+
+{
+ * logb()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function logb(x: double_t): double_t; external name '_logb';
+
+{
+ * modf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function modf(x: double_t; var iptr: double_t): double_t; external name '_modf';
+
+{
+ * modff()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function modff(x: Single; var iptrf: Single): Single; external name '_modff';
+
+
+{
+ Note: For compatiblity scalb(x,n) has n of type
+ int on Mac OS X
+ long on Mac OS
+}
+
+type
+ _scalb_n_type = SInt32;
+ {
+ * scalb()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function scalb(x: double_t; n: _scalb_n_type): double_t; external name '_scalb';
+
+
+{*******************************************************************************
+* *
+* Power and absolute value functions *
+* *
+* hypot Computes the square root of the sum of the squares of its *
+* arguments, without undue overflow or underflow. *
+* pow Returns x raised to the power of y. Result is more accurate *
+* than using exp(log(x)*y). *
+* *
+*******************************************************************************}
+{
+ * fabs()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function fabs(x: double_t): double_t; external name '_fabs';
+
+{
+ * hypot()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function hypot(x: double_t; y: double_t): double_t; external name '_hypot';
+
+{
+ * pow()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 2.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function pow(x: double_t; y: double_t): double_t; external name '_pow';
+
+{
+ * sqrt()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function sqrt(x: double_t): double_t; external name '_sqrt';
+
+
+{*******************************************************************************
+* *
+* Gamma and Error functions *
+* *
+* erf The error function. *
+* erfc Complementary error function. *
+* gamma The gamma function. *
+* lgamma Computes the base-e logarithm of the absolute value of *
+* gamma of its argument x, for x > 0. *
+* *
+*******************************************************************************}
+{
+ * erf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function erf(x: double_t): double_t; external name '_erf';
+
+{
+ * erfc()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function erfc(x: double_t): double_t; external name '_erfc';
+
+{
+ * gamma()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function gamma(x: double_t): double_t; external name '_gamma';
+
+{
+ * lgamma()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function lgamma(x: double_t): double_t; external name '_lgamma';
+
+
+{*******************************************************************************
+* *
+* Nearest SInt16 functions *
+* *
+* rint Rounds its argument to an integral value in floating point *
+* format, honoring the current rounding direction. *
+* *
+* nearbyint Differs from rint only in that it does not raise the inexact *
+* exception. It is the nearbyint function recommended by the *
+* IEEE floating-point standard 854. *
+* *
+* rinttol Rounds its argument to the nearest long int using the current *
+* rounding direction. NOTE: if the rounded value is outside *
+* the range of long int, then the result is undefined. *
+* *
+* round Rounds the argument to the nearest integral value in floating *
+* point format similar to the Fortran "anint" function. That is: *
+* add half to the magnitude and chop. *
+* *
+* roundtol Similar to the Fortran function nint or to the Pascal round. *
+* NOTE: if the rounded value is outside the range of long int, *
+* then the result is undefined. *
+* *
+* trunc Computes the integral value, in floating format, nearest to *
+* but no larger in magnitude than its argument. NOTE: on 68K *
+* compilers when using -elems881, trunc must return an int *
+* *
+*******************************************************************************}
+{
+ * ceil()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function ceil(x: double_t): double_t; external name '_ceil';
+
+{
+ * floor()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function floor(x: double_t): double_t; external name '_floor';
+
+{
+ * rint()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function rint(x: double_t): double_t; external name '_rint';
+
+{
+ * nearbyint()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function nearbyint(x: double_t): double_t; external name '_nearbyint';
+
+{
+ * rinttol()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function rinttol(x: double_t): SInt32; external name '_rinttol';
+
+{
+ * round()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function roundd(x: double_t): double_t; external name '_round';
+
+{
+ * roundtol()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function roundtol(round: double_t): SInt32; external name '_roundtol';
+
+{
+ Note: For compatiblity trunc(x) has a return type of
+ int for classic 68K with FPU enabled
+ double_t everywhere else
+}
+{$ifc TARGET_RT_MAC_68881}
+
+type
+ _trunc_return_type = SInt32;
+{$elsec}
+
+type
+ _trunc_return_type = double_t;
+{$endc} {TARGET_RT_MAC_68881}
+ {
+ * trunc()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function truncd(x: double_t): _trunc_return_type; external name '_trunc';
+
+
+{*******************************************************************************
+* *
+* Remainder functions *
+* *
+* remainder IEEE 754 floating point standard for remainder. *
+* remquo SANE remainder. It stores into 'quotient' the 7 low-order *
+* bits of the SInt16 quotient x/y, such that: *
+* -127 <= quotient <= 127. *
+* *
+*******************************************************************************}
+{
+ * fmod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function fmod(x: double_t; y: double_t): double_t; external name '_fmod';
+
+{
+ * remainder()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function remainder(x: double_t; y: double_t): double_t; external name '_remainder';
+
+{
+ * remquo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function remquo(x: double_t; y: double_t; var quo: SInt32): double_t; external name '_remquo';
+
+
+{*******************************************************************************
+* *
+* Auxiliary functions *
+* *
+* copysign Produces a value with the magnitude of its first argument *
+* and sign of its second argument. NOTE: the order of the *
+* arguments matches the recommendation of the IEEE 754 *
+* floating point standard, which is opposite from the SANE *
+* copysign function. *
+* *
+* nan The call 'nan("n-char-sequence")' returns a quiet NaN *
+* with content indicated through tagp in the selected *
+* data type format. *
+* *
+* nextafter Computes the next representable value after 'x' in the *
+* direction of 'y'. if x == y, then y is returned. *
+* *
+*******************************************************************************}
+{
+ * copysign()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function copysign(x: double_t; y: double_t): double_t; external name '_copysign';
+
+{
+ * nan()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function nan(tagp: ConstCStringPtr): Double; external name '_nan';
+
+{
+ * nanf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function nanf(tagp: ConstCStringPtr): Single; external name '_nanf';
+
+{
+ * nextafterd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function nextafterd(x: Double; y: Double): Double; external name '_nextafterd';
+
+{
+ * nextafterf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function nextafterf(x: Single; y: Single): Single; external name '_nextafterf';
+
+
+{
+ * __fpclassifyd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __fpclassifyd(x: Double): SInt32; external name '___fpclassifyd';
+
+{
+ * __fpclassifyf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __fpclassifyf(x: Single): SInt32; external name '___fpclassifyf';
+
+{
+ * __isnormald()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isnormald(x: Double): SInt32; external name '___isnormald';
+
+{
+ * __isnormalf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isnormalf(x: Single): SInt32; external name '___isnormalf';
+
+{
+ * __isfinited()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isfinited(x: Double): SInt32; external name '___isfinited';
+
+{
+ * __isfinitef()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isfinitef(x: Single): SInt32; external name '___isfinitef';
+
+{
+ * __isnand()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isnand(x: Double): SInt32; external name '___isnand';
+
+{
+ * __isnanf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __isnanf(x: Single): SInt32; external name '___isnanf';
+
+{
+ * __signbitd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __signbitd(x: Double): SInt32; external name '___signbitd';
+
+{
+ * __signbitf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __signbitf(x: Single): SInt32; external name '___signbitf';
+
+{
+ * __inf()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function __inf: double_t; external name '___inf';
+
+
+{*******************************************************************************
+* *
+* Inquiry macros *
+* *
+* fpclassify Returns one of the FP_Å values. *
+* isnormal Non-zero if and only if the argument x is normalized. *
+* isfinite Non-zero if and only if the argument x is finite. *
+* isnan Non-zero if and only if the argument x is a NaN. *
+* signbit Non-zero if and only if the sign of the argument x is *
+* negative. This includes, NaNs, infinities and zeros. *
+* *
+*******************************************************************************}
+
+const
+ FP_SNAN = 0; { signaling NaN }
+ FP_QNAN = 1; { quiet NaN }
+ FP_INFINITE = 2; { + or - infinity }
+ FP_ZERO = 3; { + or - zero }
+ FP_NORMAL = 4; { all normal numbers }
+ FP_SUBNORMAL = 5; { denormal numbers }
+
+
+ { *******************************************************************************
+ * *
+ * Max, Min and Positive Difference *
+ * *
+ * fdim Determines the 'positive difference' between its arguments: *
+ * ( x - y, if x > y ), ( +0, if x <= y ). If one argument is *
+ * NaN, then fdim returns that NaN. if both arguments are NaNs, *
+ * then fdim returns the first argument. *
+ * *
+ * fmax Returns the maximum of the two arguments. Corresponds to the *
+ * max function in FORTRAN. NaN arguments are treated as missing *
+ * data. If one argument is NaN and the other is a number, then *
+ * the number is returned. If both are NaNs then the first *
+ * argument is returned. *
+ * *
+ * fmin Returns the minimum of the two arguments. Corresponds to the *
+ * min function in FORTRAN. NaN arguments are treated as missing *
+ * data. If one argument is NaN and the other is a number, then *
+ * the number is returned. If both are NaNs then the first *
+ * argument is returned. *
+ * *
+ ******************************************************************************* }
+ {
+ * fdim()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function fdim(x: double_t; y: double_t): double_t; external name '_fdim';
+
+{
+ * fmax()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function fmax(x: double_t; y: double_t): double_t; external name '_fmax';
+
+{
+ * fmin()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function fmin(x: double_t; y: double_t): double_t; external name '_fmin';
+
+
+{******************************************************************************
+* Constants *
+******************************************************************************}
+
+{*******************************************************************************
+* *
+* Non NCEG extensions *
+* *
+*******************************************************************************}
+{$ifc undefined __NOEXTENSIONS__}
+{*******************************************************************************
+* *
+* Financial functions *
+* *
+* compound Computes the compound interest factor "(1 + rate)^periods" *
+* more accurately than the straightforward computation with *
+* the Power function. This is SANE's compound function. *
+* *
+* annuity Computes the present value factor for an annuity *
+* "(1 - (1 + rate)^(-periods)) /rate" more accurately than *
+* the straightforward computation with the Power function. *
+* This is SANE's annuity function. *
+* *
+*******************************************************************************}
+{
+ * compound()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function compound(rate: double_t; periods: double_t): double_t; external name '_compound';
+
+{
+ * annuity()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function annuity(rate: double_t; periods: double_t): double_t; external name '_annuity';
+
+
+{*******************************************************************************
+* *
+* Random function *
+* *
+* randomx A pseudorandom number generator. It uses the iteration: *
+* (7^5*x)mod(2^31-1) *
+* *
+*******************************************************************************}
+{
+ * randomx()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function randomx(var x: double_t): double_t; external name '_randomx';
+
+
+{******************************************************************************
+* Relational operator *
+******************************************************************************}
+{ relational operator }
+
+type
+ relop = SInt16;
+
+const
+ GREATERTHAN = 0;
+ LESSTHAN = 1;
+ EQUALTO = 2;
+ UNORDERED = 3;
+
+ {
+ * relation()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function relation(x: double_t; y: double_t): relop; external name '_relation';
+
+
+{*******************************************************************************
+* *
+* Binary to decimal conversions *
+* *
+* SIGDIGLEN Significant decimal digits. *
+* *
+* decimal A record which provides an intermediate unpacked form for *
+* programmers who wish to do their own parsing of numeric input *
+* or formatting of numeric output. *
+* *
+* decform Controls each conversion to a decimal string. The style field *
+* is either FLOATDECIMAL or FIXEDDECIMAL. If FLOATDECIMAL, the *
+* value of the field digits is the number of significant digits. *
+* If FIXEDDECIMAL value of the field digits is the number of *
+* digits to the right of the decimal point. *
+* *
+* num2dec Converts a double_t to a decimal record using a decform. *
+* dec2num Converts a decimal record d to a double_t value. *
+* dec2str Converts a decform and decimal to a string using a decform. *
+* str2dec Converts a string to a decimal struct. *
+* dec2d Similar to dec2num except a double is returned (68k only). *
+* dec2f Similar to dec2num except a float is returned. *
+* dec2s Similar to dec2num except a short is returned. *
+* dec2l Similar to dec2num except a long is returned. *
+* *
+*******************************************************************************}
+const
+ SIGDIGLEN = 36;
+ DECSTROUTLEN = 80;
+type
+ DecimalKindItem = (FLOATDECIMAL, FIXEDDECIMAL);
+ DecimalKind = DecimalKindItem;
+
+ decimal = record
+ sgn: 0..1; { sign 0 for +, 1 for - }
+ exp: SInt16;
+ sig: Str36;
+ end;
+
+ decform = record
+ style: DecimalKind;
+ digits: SInt16;
+ end;
+
+{
+ * num2dec()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+procedure num2dec(const (*var*) f: decform; x: double_t; var d: decimal); external name '_num2dec';
+
+{
+ * dec2num()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function dec2num(const (*var*) d: decimal): double_t; external name '_dec2num';
+
+{
+ * dec2str()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+procedure dec2str(const (*var*) f: decform; const (*var*) d: decimal; s: CStringPtr); external name '_dec2str';
+
+{
+ * str2dec()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+procedure str2dec(s: ConstCStringPtr; var ix: SInt16; var d: decimal; var vp: SInt16); external name '_str2dec';
+
+{$ifc TARGET_CPU_68K}
+{$ifc CALL_NOT_IN_CARBON}
+{
+ * dec2d()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ }
+function dec2d(const (*var*) d: decimal): Double; external name '_dec2d';
+
+{$endc} {CALL_NOT_IN_CARBON}
+{$endc} {TARGET_CPU_68K}
+{
+ * dec2f()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function dec2f(const (*var*) d: decimal): Single; external name '_dec2f';
+
+{
+ * dec2s()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function dec2s(const (*var*) d: decimal): SInt16; external name '_dec2s';
+
+{
+ * dec2l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function dec2l(const (*var*) d: decimal): SInt32; external name '_dec2l';
+
+
+{*******************************************************************************
+* *
+* 68k-only Transfer Function Prototypes *
+* *
+*******************************************************************************}
+{$ifc TARGET_CPU_68K}
+{$ifc CALL_NOT_IN_CARBON}
+{
+ * x96tox80()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ }
+procedure x96tox80(const (*var*) x: extended96; var x80: extended80); external name '_x96tox80';
+
+{
+ * x80tox96()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: not available
+ }
+procedure x80tox96(const (*var*) x80: extended80; var x: extended96); external name '_x80tox96';
+
+{$endc} {CALL_NOT_IN_CARBON}
+{$endc} {TARGET_CPU_68K}
+{$endc}
+{*******************************************************************************
+* *
+* PowerPC-only Function Prototypes *
+* *
+*******************************************************************************}
+
+{$ifc TARGET_CPU_PPC}
+
+{
+ * cosl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function cosl(x: LongDouble): LongDouble; external name '_cosl';
+
+
+{
+ * sinl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function sinl(x: LongDouble): LongDouble; external name '_sinl';
+
+
+{
+ * tanl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function tanl(x: LongDouble): LongDouble; external name '_tanl';
+
+
+{
+ * acosl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function acosl(x: LongDouble): LongDouble; external name '_acosl';
+
+
+{
+ * asinl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function asinl(x: LongDouble): LongDouble; external name '_asinl';
+
+
+{
+ * atanl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function atanl(x: LongDouble): LongDouble; external name '_atanl';
+
+
+{
+ * atan2l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function atan2l(y: LongDouble; x: LongDouble): LongDouble; external name '_atan2l';
+
+
+{
+ * coshl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function coshl(x: LongDouble): LongDouble; external name '_coshl';
+
+
+{
+ * sinhl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function sinhl(x: LongDouble): LongDouble; external name '_sinhl';
+
+
+{
+ * tanhl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function tanhl(x: LongDouble): LongDouble; external name '_tanhl';
+
+
+{
+ * acoshl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function acoshl(x: LongDouble): LongDouble; external name '_acoshl';
+
+
+{
+ * asinhl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function asinhl(x: LongDouble): LongDouble; external name '_asinhl';
+
+
+{
+ * atanhl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function atanhl(x: LongDouble): LongDouble; external name '_atanhl';
+
+
+{
+ * expl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function expl(x: LongDouble): LongDouble; external name '_expl';
+
+
+{
+ * expm1l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function expm1l(x: LongDouble): LongDouble; external name '_expm1l';
+
+
+{
+ * exp2l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function exp2l(x: LongDouble): LongDouble; external name '_exp2l';
+
+
+{
+ * frexpl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function frexpl(x: LongDouble; var exponent: SInt32): LongDouble; external name '_frexpl';
+
+
+{
+ * ldexpl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function ldexpl(x: LongDouble; n: SInt32): LongDouble; external name '_ldexpl';
+
+
+{
+ * logl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function logl(x: LongDouble): LongDouble; external name '_logl';
+
+
+{
+ * log1pl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function log1pl(x: LongDouble): LongDouble; external name '_log1pl';
+
+
+{
+ * log10l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function log10l(x: LongDouble): LongDouble; external name '_log10l';
+
+
+{
+ * log2l()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function log2l(x: LongDouble): LongDouble; external name '_log2l';
+
+
+{
+ * logbl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function logbl(x: LongDouble): LongDouble; external name '_logbl';
+
+
+{
+ * scalbl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function scalbl(x: LongDouble; n: SInt32): LongDouble; external name '_scalbl';
+
+
+{
+ * fabsl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function fabsl(x: LongDouble): LongDouble; external name '_fabsl';
+
+
+{
+ * hypotl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function hypotl(x: LongDouble; y: LongDouble): LongDouble; external name '_hypotl';
+
+
+{
+ * powl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function powl(x: LongDouble; y: LongDouble): LongDouble; external name '_powl';
+
+
+{
+ * sqrtl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function sqrtl(x: LongDouble): LongDouble; external name '_sqrtl';
+
+
+{
+ * erfl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function erfl(x: LongDouble): LongDouble; external name '_erfl';
+
+
+{
+ * erfcl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function erfcl(x: LongDouble): LongDouble; external name '_erfcl';
+
+
+{
+ * gammal()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function gammal(x: LongDouble): LongDouble; external name '_gammal';
+
+
+{
+ * lgammal()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function lgammal(x: LongDouble): LongDouble; external name '_lgammal';
+
+
+{
+ * ceill()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 2.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function ceill(x: LongDouble): LongDouble; external name '_ceill';
+
+
+{
+ * floorl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function floorl(x: LongDouble): LongDouble; external name '_floorl';
+
+
+{
+ * rintl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function rintl(x: LongDouble): LongDouble; external name '_rintl';
+
+
+{
+ * nearbyintl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function nearbyintl(x: LongDouble): LongDouble; external name '_nearbyintl';
+
+
+{
+ * rinttoll()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function rinttoll(x: LongDouble): SInt32; external name '_rinttoll';
+
+
+{
+ * roundl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function roundl(x: LongDouble): LongDouble; external name '_roundl';
+
+
+{
+ * roundtoll()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function roundtoll(x: LongDouble): SInt32; external name '_roundtoll';
+
+
+{
+ * truncl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function truncl(x: LongDouble): LongDouble; external name '_truncl';
+
+
+{
+ * remainderl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function remainderl(x: LongDouble; y: LongDouble): LongDouble; external name '_remainderl';
+
+
+{
+ * remquol()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function remquol(x: LongDouble; y: LongDouble; var quo: SInt32): LongDouble; external name '_remquol';
+
+
+{
+ * copysignl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function copysignl(x: LongDouble; y: LongDouble): LongDouble; external name '_copysignl';
+
+
+{
+ * fdiml()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function fdiml(x: LongDouble; y: LongDouble): LongDouble; external name '_fdiml';
+
+
+{
+ * fmaxl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function fmaxl(x: LongDouble; y: LongDouble): LongDouble; external name '_fmaxl';
+
+
+{
+ * fminl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function fminl(x: LongDouble; y: LongDouble): LongDouble; external name '_fminl';
+
+{$ifc undefined __NOEXTENSIONS__}
+{
+ * relationl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function relationl(x: LongDouble; y: LongDouble): relop; external name '_relationl';
+
+
+{
+ * num2decl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+procedure num2decl(const (*var*) f: decform; x: LongDouble; var d: decimal); external name '_num2decl';
+
+
+{
+ * dec2numl()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+function dec2numl(const (*var*) d: decimal): LongDouble; external name '_dec2numl';
+
+{$endc}
+{$endc} {TARGET_CPU_PPC}
+{$endc} {TARGET_OS_MAC}
+
+{$ifc undefined __NOEXTENSIONS__}
+{
+ MathLib v2 has two new transfer functions: x80tod and dtox80. They can
+ be used to directly transform 68k 80-bit extended data types to double
+ and back for PowerPC based machines without using the functions
+ x80told or ldtox80. Double rounding may occur.
+ }
+{
+ * x80tod()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 2.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+function x80tod(const (*var*) x80: extended80): Double; external name '_x80tod';
+
+{
+ * dtox80()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 2.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ }
+procedure dtox80((*const*) var x: Double; var x80: extended80); external name '_dtox80';
+
+{$ifc TARGET_CPU_PPC}
+{
+ * x80told()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+procedure x80told(const (*var*) x80: extended80; var x: LongDouble); external name '_x80told';
+
+
+{
+ * ldtox80()
+ *
+ * Availability:
+ * Non-Carbon CFM: in MathLib 1.0 and later or as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: not available
+ }
+procedure ldtox80((*const*) var x: LongDouble; var x80: extended80); external name '_ldtox80';
+
+{$endc} {TARGET_CPU_PPC}
+{$endc}
+
+{$ALIGN MAC68K}
+
+
+end.