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 + -
显示快捷键?