Main Page | File List | Globals | Related Pages

MathLib.c

00001 /* MathLib: Pilot shared library of IEEE-754 double math functions
00002  *
00003  * Convenience functions for the calling application.  These functions
00004  * provide a programmer-friendly wrapper around the raw system trap
00005  * invocations which actually call the library routines.  The idea
00006  * is to allow the programmer to say:
00007  *    y = sqrt(x);
00008  * instead of requiring:
00009  *         MathLibSqrt(MathLibRef, x, &y);
00010  * like the system trap interface requires.  The system trap form is
00011  * not only harder to read, but can't directly replace the traditional
00012  * function call in ported code, and can't be nested inside an expression.
00013  * Just add this source file to your project or makefile, and include
00014  * "MathLib.h" in any source file that needs to call these.
00015  *
00016  * The downside to these routines is that they'll take up some space
00017  * in your program, though CodeWarrior at least is smart enough to
00018  * only link in the ones which you actually use, so it doesn't really
00019  * cost you that much.  In fact, if you call these enough they'll pay
00020  * for themselves, since "x=sqrt(x)" generates much less code than
00021  * calling MathLibSqrt() directly.
00022  *
00023  * Released to the public domain; use as you like.
00024  *
00025  * Version 1.1.01, 6 February 2003, Rick Huebner
00026  *    Corrected licensing of this file; no executable code changes.
00027  */
00028 #include <PalmOS.h>
00029 
00030 #include "MathLib.h"
00031 
00032 // Library reference returned by SysLibFind() or SysLibLoad()
00033 UInt16 MathLibRef;
00034 
00035 
00036 
00037 double acos(double x) {
00038         double result;
00039         MathLibACos(MathLibRef, x, &result);
00040         return result;
00041 }
00042 
00043 double asin(double x) {
00044         double result;
00045         MathLibASin(MathLibRef, x, &result);
00046         return result;
00047 }
00048 
00049 double atan(double x) {
00050         double result;
00051         MathLibATan(MathLibRef, x, &result);
00052         return result;
00053 }
00054 
00055 double atan2(double y, double x) {
00056         double result;
00057         MathLibATan2(MathLibRef, y, x, &result);
00058         return result;
00059 }
00060 
00061 double cos(double x) {
00062         double result;
00063         MathLibCos(MathLibRef, x, &result);
00064         return result;
00065 }
00066 
00067 double sin(double x) {
00068         double result;
00069         MathLibSin(MathLibRef, x, &result);
00070         return result;
00071 }
00072 
00073 double tan(double x) {
00074         double result;
00075         MathLibTan(MathLibRef, x, &result);
00076         return result;
00077 }
00078 
00079 void sincos(double x, double *sinx, double *cosx) {
00080         MathLibSinCos(MathLibRef, x, sinx, cosx);
00081 }
00082 
00083 double cosh(double x) {
00084         double result;
00085         MathLibCosH(MathLibRef, x, &result);
00086         return result;
00087 }
00088 
00089 double sinh(double x) {
00090         double result;
00091         MathLibSinH(MathLibRef, x, &result);
00092         return result;
00093 }
00094 
00095 double tanh(double x) {
00096         double result;
00097         MathLibTanH(MathLibRef, x, &result);
00098         return result;
00099 }
00100 
00101 double acosh(double x) {
00102         double result;
00103         MathLibACosH(MathLibRef, x, &result);
00104         return result;
00105 }
00106 
00107 double asinh(double x) {
00108         double result;
00109         MathLibASinH(MathLibRef, x, &result);
00110         return result;
00111 }
00112 
00113 double atanh(double x) {
00114         double result;
00115         MathLibATanH(MathLibRef, x, &result);
00116         return result;
00117 }
00118 
00119 double exp(double x) {
00120         double result;
00121         MathLibExp(MathLibRef, x, &result);
00122         return result;
00123 }
00124 
00125 double frexp(double x, Int16 *exponent) {
00126         double fraction;
00127         MathLibFrExp(MathLibRef, x, &fraction, exponent);
00128         return fraction;
00129 }
00130 
00131 double ldexp(double x, Int16 exponent) {
00132         double result;
00133         MathLibLdExp(MathLibRef, x, exponent, &result);
00134         return result;
00135 }
00136 
00137 double log(double x) {
00138         double result;
00139         MathLibLog(MathLibRef, x, &result);
00140         return result;
00141 }
00142 
00143 double log10(double x) {
00144         double result;
00145         MathLibLog10(MathLibRef, x, &result);
00146         return result;
00147 }
00148 
00149 double modf(double x, double *intpart) {
00150         double fraction;
00151         MathLibModF(MathLibRef, x, intpart, &fraction);
00152         return fraction;
00153 }
00154 
00155 double expm1(double x) {
00156         double result;
00157         MathLibExpM1(MathLibRef, x, &result);
00158         return result;
00159 }
00160 
00161 double log1p(double x) {
00162         double result;
00163         MathLibLog1P(MathLibRef, x, &result);
00164         return result;
00165 }
00166 
00167 double logb(double x) {
00168         double result;
00169         MathLibLogB(MathLibRef, x, &result);
00170         return result;
00171 }
00172 
00173 double log2(double x) {
00174         double result;
00175         MathLibLog2(MathLibRef, x, &result);
00176         return result;
00177 }
00178 
00179 double pow(double x, double y) {
00180         double result;
00181         MathLibPow(MathLibRef, x, y, &result);
00182         return result;
00183 }
00184 
00185 double sqrt(double x) {
00186         double result;
00187         MathLibSqrt(MathLibRef, x, &result);
00188         return result;
00189 }
00190 
00191 double hypot(double x, double y) {
00192         double result;
00193         MathLibHypot(MathLibRef, x, y, &result);
00194         return result;
00195 }
00196 
00197 double cbrt(double x) {
00198         double result;
00199         MathLibCbrt(MathLibRef, x, &result);
00200         return result;
00201 }
00202 
00203 double ceil(double x) {
00204         double result;
00205         MathLibCeil(MathLibRef, x, &result);
00206         return result;
00207 }
00208 
00209 double fabs(double x) {
00210         double result;
00211         MathLibFAbs(MathLibRef, x, &result);
00212         return result;
00213 }
00214 
00215 double floor(double x) {
00216         double result;
00217         MathLibFloor(MathLibRef, x, &result);
00218         return result;
00219 }
00220 
00221 double fmod(double x, double y) {
00222         double result;
00223         MathLibFMod(MathLibRef, x, y, &result);
00224         return result;
00225 }
00226 
00227 Int16 isinf(double x) {
00228         Int16 result;
00229         MathLibIsInf(MathLibRef, x, &result);
00230         return result;
00231 }
00232 
00233 Int16 finite(double x) {
00234         Int16 result;
00235         MathLibFinite(MathLibRef, x, &result);
00236         return result;
00237 }
00238 
00239 double scalbn(double x, Int16 exponent) {
00240         double result;
00241         MathLibScalBN(MathLibRef, x, exponent, &result);
00242         return result;
00243 }
00244 
00245 double drem(double x, double y) {
00246         double result;
00247         MathLibDRem(MathLibRef, x, y, &result);
00248         return result;
00249 }
00250 
00251 double significand(double x) {
00252         double result;
00253         MathLibSignificand(MathLibRef, x, &result);
00254         return result;
00255 }
00256 
00257 double copysign(double x, double y) {
00258         double result;
00259         MathLibCopySign(MathLibRef, x, y, &result);
00260         return result;
00261 }
00262 
00263 Int16 isnan(double x) {
00264         Int16 result;
00265         MathLibIsNaN(MathLibRef, x, &result);
00266         return result;
00267 }
00268 
00269 Int16 ilogb(double x) {
00270         Int16 result;
00271         MathLibILogB(MathLibRef, x, &result);
00272         return result;
00273 }
00274 
00275 double rint(double x) {
00276         double result;
00277         MathLibRInt(MathLibRef, x, &result);
00278         return result;
00279 }
00280 
00281 double nextafter(double x, double y) {
00282         double result;
00283         MathLibNextAfter(MathLibRef, x, y, &result);
00284         return result;
00285 }
00286 
00287 double remainder(double x, double y) {
00288         double result;
00289         MathLibRemainder(MathLibRef, x, y, &result);
00290         return result;
00291 }
00292 
00293 double scalb(double x, double exponent) {
00294         double result;
00295         MathLibScalB(MathLibRef, x, exponent, &result);
00296         return result;
00297 }
00298 
00299 double round(double x) {
00300         double result;
00301         MathLibRound(MathLibRef, x, &result);
00302         return result;
00303 }
00304 
00305 double trunc(double x) {
00306         double result;
00307         MathLibTrunc(MathLibRef, x, &result);
00308         return result;
00309 }
00310 
00311 UInt32 signbit(double x) {
00312         UInt32 result;
00313         MathLibSignBit(MathLibRef, x, &result);
00314         return result;
00315 }

Generated on Sun Aug 29 11:00:40 2004 for GPilotS by doxygen 1.3.4