Files correlati : Ricompilazione Demo : [ ] Commento : Aggiunti i sorgenti per Greenleaf Math Library (gfm.dll) git-svn-id: svn://10.65.10.50/trunk@10079 c028cbd2-c16b-5b4b-a496-9718f37d4682
166 lines
5.4 KiB
C
Executable File
166 lines
5.4 KiB
C
Executable File
/* gmglobal.c
|
|
*
|
|
* ARGUMENT
|
|
* None.
|
|
*
|
|
* DESCRIPTION
|
|
* Global variable definitions for the math lib.
|
|
*
|
|
* SIDE EFFECTS
|
|
* None.
|
|
*
|
|
* RETURNS
|
|
* None.
|
|
*
|
|
* AUTHOR
|
|
* Andy Anderson 13-JAN-1987 18:35
|
|
* Copyright (C) 1987-1990 Greenleaf Software Inc. All rights reserved.
|
|
*
|
|
* MODIFICATIONS
|
|
* Don Killen - 10-19-1989 18:22:09 Added Imbedded Copyright Notice.
|
|
*/
|
|
#include <stdio.h>
|
|
#include "gm.h"
|
|
#include "gmsystem.h"
|
|
|
|
/* place for error return values */
|
|
int wGMError=GM_SUCCESS;
|
|
/* function # that caused error */
|
|
int wGMFunErrNum=0;
|
|
/* default error function handler */
|
|
|
|
void (*pfnGMErrVector)(int,int) = GMDefErrHandler;
|
|
|
|
/* global storage for internal use */
|
|
int _wGMUser=0; /* function called by user */
|
|
int wGMTemp1=0;
|
|
int wGMTemp2=0;
|
|
|
|
mbool wfGMRound=TRUE; /* next 30 used for formatted conversions */
|
|
mbool wfFlagNumber=FALSE;
|
|
char cGMSymExp='e';
|
|
int wGMStar=2; /* storage of * arguments for dtoaf */
|
|
int wGMStar2=2;
|
|
char cGMFmt='t'; /* next 20 format string types */
|
|
char cGMFmtComma='v';
|
|
char cGMFmtSci='w';
|
|
char cGMFmtSciE='W';
|
|
char cGMFmtEng='z';
|
|
char cGMFmtEngE='Z';
|
|
char cGMFmtRnd='R';
|
|
char cGMFmtTrunc='T';
|
|
char cGMFmtDlr='$';
|
|
char cGMFmtNegRgt1='m';
|
|
char cGMFmtNegRgt2='M';
|
|
char cGMFmtNegPar='a';
|
|
char cGMFmtNegBrkt='A';
|
|
char cGMFmtZeroBlC='q';
|
|
char cGMFmtZeroBlS='Q';
|
|
char cGMFmtZero=' ';
|
|
char *sGMFmtZeroStr="None";
|
|
char cGMFmtSurrL='[';
|
|
char cGMFmtSurrR=']';
|
|
char *sGMFmt1Pos =" (cr)";
|
|
char *sGMFmt1Neg =" (dr)";
|
|
char *sGMFmt1Zero=" ";
|
|
char *sGMFmt2Pos =" (dr)";
|
|
char *sGMFmt2Neg =" (cr)";
|
|
char *sGMFmt2Zero=" ";
|
|
mbool wfGM3Color=FALSE; /* next 4 used in 3-color printing */
|
|
char cGMCodePos=0x24;
|
|
char cGMCodeNeg=0x25;
|
|
char cGMCodeNon=0x26;
|
|
int wIntrPrec=18;
|
|
/* next used to hold 160-bit partial products */
|
|
int wrgGMPartProd[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
|
|
|
/* A Powers of ten table (25 entries in 80-bit format) */
|
|
unsigned SHORT wrgGMPowersOfTen80Bit[]={0x0001,0x0000,0x0000,0x0000,0x0000,
|
|
0x000a,0x0000,0x0000,0x0000,0x0000,
|
|
0x0064,0x0000,0x0000,0x0000,0x0000,
|
|
0x03e8,0x0000,0x0000,0x0000,0x0000,
|
|
0x2710,0x0000,0x0000,0x0000,0x0000,
|
|
0x86a0,0x0001,0x0000,0x0000,0x0000,
|
|
0x4240,0x000f,0x0000,0x0000,0x0000,
|
|
0x9680,0x0098,0x0000,0x0000,0x0000,
|
|
0xe100,0x05f5,0x0000,0x0000,0x0000,
|
|
0xca00,0x3b9a,0x0000,0x0000,0x0000,
|
|
0xe400,0x540b,0x0002,0x0000,0x0000,
|
|
0xe800,0x4876,0x0017,0x0000,0x0000,
|
|
0x1000,0xd4a5,0x00e8,0x0000,0x0000,
|
|
0xa000,0x4e72,0x0918,0x0000,0x0000,
|
|
0x4000,0x107a,0x5af3,0x0000,0x0000,
|
|
0x8000,0xa4c6,0x8d7e,0x0003,0x0000,
|
|
0x0000,0x6fc1,0x86f2,0x0023,0x0000,
|
|
0x0000,0x5d8a,0x4578,0x0163,0x0000,
|
|
0x0000,0xa764,0xb6b3,0x0de0,0x0000,
|
|
0x0000,0x89e8,0x2304,0x8ac7,0x0000,
|
|
0x0000,0x6310,0x5e2d,0x6bc7,0x0005,
|
|
0x0000,0xdea0,0xadc5,0x35c9,0x0036,
|
|
0x0000,0xb240,0xc9ba,0x19e0,0x021e,
|
|
0x0000,0xf680,0xe14a,0x02c7,0x152d};
|
|
|
|
char _crn_[]={0x43,0x6f,0x70,0x79,0x72,0x69,0x67,0x68,0x74,0x20,0x28,0x43,
|
|
0x29,0x31,0x39,0x38,0x37,0x2d,0x38,0x39,0x20,0x47,0x72,0x65,0x65,0x6e,
|
|
0x6c,0x65,0x61,0x66,0x20,0x53,0x6f,0x66,0x74,0x77,0x61,0x72,0x65,0x20,
|
|
0x49,0x6e,0x63,0x2e,0x20,0x41,0x6c,0x6c,0x20,0x52,0x69,0x67,0x68,0x74,
|
|
0x73,0x20,0x52,0x65,0x73,0x65,0x72,0x76,0x65,0x64,0x2e};
|
|
|
|
/* Powers of ten table in double format for internal use */
|
|
double ergGMPowersOfTenDouble[25]={1.0,1e1,1e2,1e3,1e4,1e5,1e6,1e7,
|
|
1e8,1e9,1e10,1e11,1e12,1e13,1e14,1e15,1e16,1e17,1e18,1e19,1e20,
|
|
1e21,1e22,1e23,1e24};
|
|
|
|
double eTwoTo31= 2147483647.0; /* 2**31 */
|
|
double eTwoTo32= 4294967296.0; /* 2**32 */
|
|
double eTwoTo63= 9223372036854775808.0; /* 2**63 */
|
|
double eTwoTo64=18446744073709551616.0; /* 2**64 */
|
|
|
|
/* 0.7 */
|
|
DEC decPoint7={0,1,{0x0007,0,0,0},0};
|
|
/* Decimal One */
|
|
DEC decOne={0,0,{1,0,0,0},0};
|
|
/* 1.4 */
|
|
DEC decOnePoint4={0,1,{0x000e,0,0,0},0};
|
|
/* 'e' */
|
|
DEC decE={0,23,{0xa69c,0xb692,0x7ae9,0xd5d7,},0x398f};
|
|
DEC decReciprocalOfLn2={0,23,{0xb7f8,0x4faf,0x9c42,0xdd90},0x1e8c};
|
|
DEC decReciprocalOfLn10={0,23,{0x1839,0xcbbd,0xa605,0x50aa},0x0932};
|
|
DEC decLn2={0,23,{0x4b1b,0xb4a3,0xfacf,0x8ef2},0x0ead};
|
|
DEC decLn10={0,23,{0x1787,0xe426,0xa5f0,0x56bb},0x30c2};
|
|
/* maximum exponent for e**x is e**43=4.7279394...E+18 */
|
|
DEC decMaxExp={0,0,{43,0,0,0},0};
|
|
/* minimum exponent for e**x is e**-42=1.5628821...E-18 */
|
|
DEC decMinExp={1,0,{42,0,0,0},0};
|
|
/* constants used in square root */
|
|
DEC decPoint819={0,3,{819,0,0,0},0};
|
|
DEC decPoint259={0,3,{259,0,0,0},0};
|
|
DEC decTwoPoint59={0,2,{259,0,0,0},0};
|
|
DEC decPoint0819={0,4,{819,0,0,0},0};
|
|
DEC decPoint5={0,1,{5,0,0,0},0};
|
|
/* constants used in trig */
|
|
DEC decPi={0,23,{0xde78,0xfbea,0x5cdd,0x9b9f},0x4286};
|
|
DEC decPiOver2={0,23,{0x6f3c,0xfdf5,0xae6e,0x4dcf},0x2143};
|
|
DEC decPiOver4={0,23,{0xb79e,0x7efa,0xd737,0xa6e7},0x10a1};
|
|
DEC dec2Pi={0,22,{0x92e5,0x98c8,0xdf5f,0x1f1f},0x0d4e};
|
|
DEC decPiOver6={0,23,{0xcfbf,0xff51,0x3a24,0x6f45},0x0b16};
|
|
DEC decReciprocalOfSqrt3={0,23,{0x6563,0x8bd3,0xe183,0xd273},0x0c39};
|
|
DEC dec180OverPi={0,22,{0x91ee,0x89a6,0x22fb,0x1ab4},0x7954};
|
|
DEC decPiOver180={0,23,{0x75dc,0xc43e,0x1b89,0x9d4f},0x005e};
|
|
/* statistical globals for linear estimation */
|
|
DEC decMaxLinEst={0,0,{0x4240,0x000f,0,0},0};
|
|
DEC decMinLinEst={1,0,{0x4240,0x000f,0,0},0};
|
|
DEC decMaxTime={0,0,{1000,0,0,0},0};
|
|
DEC decMinusHundred={1,0,{100,0,0,0},0};
|
|
DEC decHundred={0,0,{100,0,0,0},0};
|
|
DEC decMinus50={1,0,{50,0,0,0},0};
|
|
DEC decOnePoint6={0,1,{16,0,0,0},0};
|
|
DEC decGMIRRGuess={0,0,{2,0,0,0},0};
|
|
DEC *pGMIRRGuess=&decGMIRRGuess;
|
|
DEC decPoint01={0,2,{1,0,0,0},0};
|
|
DEC decStatA={0,0,{0,0,0,0},0};
|
|
DEC decStatB={0,0,{1,0,0,0},0};
|
|
DEC *pGMStatA = &decStatA;
|
|
DEC *pGMStatB = &decStatB;
|