campo-sirio/gfm/gmglobal.c
alex ba237a9d91 Patch level : no patch
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
2002-02-26 12:19:02 +00:00

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;