mathlib.c
来自「WAP browser is based on the Wireless App」· C语言 代码 · 共 316 行
C
316 行
/* MathLib: Pilot shared library of IEEE-754 double math functions
*
* Convenience functions for the calling application. These functions
* provide a programmer-friendly wrapper around the raw system trap
* invocations which actually call the library routines. The idea
* is to allow the programmer to say:
* y = sqrt(x);
* instead of requiring:
* MathLibSqrt(MathLibRef, x, &y);
* like the system trap interface requires. The system trap form is
* not only harder to read, but can't directly replace the traditional
* function call in ported code, and can't be nested inside an expression.
* Just add this source file to your project or makefile, and include
* "MathLib.h" in any source file that needs to call these.
*
* The downside to these routines is that they'll take up some space
* in your program, though CodeWarrior at least is smart enough to
* only link in the ones which you actually use, so it doesn't really
* cost you that much. In fact, if you call these enough they'll pay
* for themselves, since "x=sqrt(x)" generates much less code than
* calling MathLibSqrt() directly.
*
* Released to the public domain; use as you like.
*
* Version 1.1.01, 6 February 2003, Rick Huebner
* Corrected licensing of this file; no executable code changes.
*/
#include <PalmOS.h>
#include "MathLib.h"
// Library reference returned by SysLibFind() or SysLibLoad()
UInt16 MathLibRef;
double acos(double x) {
double result;
MathLibACos(MathLibRef, x, &result);
return result;
}
double asin(double x) {
double result;
MathLibASin(MathLibRef, x, &result);
return result;
}
double atan(double x) {
double result;
MathLibATan(MathLibRef, x, &result);
return result;
}
double atan2(double y, double x) {
double result;
MathLibATan2(MathLibRef, y, x, &result);
return result;
}
double cos(double x) {
double result;
MathLibCos(MathLibRef, x, &result);
return result;
}
double sin(double x) {
double result;
MathLibSin(MathLibRef, x, &result);
return result;
}
double tan(double x) {
double result;
MathLibTan(MathLibRef, x, &result);
return result;
}
void sincos(double x, double *sinx, double *cosx) {
MathLibSinCos(MathLibRef, x, sinx, cosx);
}
double cosh(double x) {
double result;
MathLibCosH(MathLibRef, x, &result);
return result;
}
double sinh(double x) {
double result;
MathLibSinH(MathLibRef, x, &result);
return result;
}
double tanh(double x) {
double result;
MathLibTanH(MathLibRef, x, &result);
return result;
}
double acosh(double x) {
double result;
MathLibACosH(MathLibRef, x, &result);
return result;
}
double asinh(double x) {
double result;
MathLibASinH(MathLibRef, x, &result);
return result;
}
double atanh(double x) {
double result;
MathLibATanH(MathLibRef, x, &result);
return result;
}
double exp(double x) {
double result;
MathLibExp(MathLibRef, x, &result);
return result;
}
double frexp(double x, Int16 *exponent) {
double fraction;
MathLibFrExp(MathLibRef, x, &fraction, exponent);
return fraction;
}
double ldexp(double x, Int16 exponent) {
double result;
MathLibLdExp(MathLibRef, x, exponent, &result);
return result;
}
double log(double x) {
double result;
MathLibLog(MathLibRef, x, &result);
return result;
}
double log10(double x) {
double result;
MathLibLog10(MathLibRef, x, &result);
return result;
}
double modf(double x, double *intpart) {
double fraction;
MathLibModF(MathLibRef, x, intpart, &fraction);
return fraction;
}
double expm1(double x) {
double result;
MathLibExpM1(MathLibRef, x, &result);
return result;
}
double log1p(double x) {
double result;
MathLibLog1P(MathLibRef, x, &result);
return result;
}
double logb(double x) {
double result;
MathLibLogB(MathLibRef, x, &result);
return result;
}
double log2(double x) {
double result;
MathLibLog2(MathLibRef, x, &result);
return result;
}
double pow(double x, double y) {
double result;
MathLibPow(MathLibRef, x, y, &result);
return result;
}
double sqrt(double x) {
double result;
MathLibSqrt(MathLibRef, x, &result);
return result;
}
double hypot(double x, double y) {
double result;
MathLibHypot(MathLibRef, x, y, &result);
return result;
}
double cbrt(double x) {
double result;
MathLibCbrt(MathLibRef, x, &result);
return result;
}
double ceil(double x) {
double result;
MathLibCeil(MathLibRef, x, &result);
return result;
}
double fabs(double x) {
double result;
MathLibFAbs(MathLibRef, x, &result);
return result;
}
double floor(double x) {
double result;
MathLibFloor(MathLibRef, x, &result);
return result;
}
double fmod(double x, double y) {
double result;
MathLibFMod(MathLibRef, x, y, &result);
return result;
}
Int16 isinf(double x) {
Int16 result;
MathLibIsInf(MathLibRef, x, &result);
return result;
}
Int16 finite(double x) {
Int16 result;
MathLibFinite(MathLibRef, x, &result);
return result;
}
double scalbn(double x, Int16 exponent) {
double result;
MathLibScalBN(MathLibRef, x, exponent, &result);
return result;
}
double drem(double x, double y) {
double result;
MathLibDRem(MathLibRef, x, y, &result);
return result;
}
double significand(double x) {
double result;
MathLibSignificand(MathLibRef, x, &result);
return result;
}
double copysign(double x, double y) {
double result;
MathLibCopySign(MathLibRef, x, y, &result);
return result;
}
Int16 isnan(double x) {
Int16 result;
MathLibIsNaN(MathLibRef, x, &result);
return result;
}
Int16 ilogb(double x) {
Int16 result;
MathLibILogB(MathLibRef, x, &result);
return result;
}
double rint(double x) {
double result;
MathLibRInt(MathLibRef, x, &result);
return result;
}
double nextafter(double x, double y) {
double result;
MathLibNextAfter(MathLibRef, x, y, &result);
return result;
}
double remainder(double x, double y) {
double result;
MathLibRemainder(MathLibRef, x, y, &result);
return result;
}
double scalb(double x, double exponent) {
double result;
MathLibScalB(MathLibRef, x, exponent, &result);
return result;
}
double round(double x) {
double result;
MathLibRound(MathLibRef, x, &result);
return result;
}
double trunc(double x) {
double result;
MathLibTrunc(MathLibRef, x, &result);
return result;
}
UInt32 signbit(double x) {
UInt32 result;
MathLibSignBit(MathLibRef, x, &result);
return result;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?