campo-sirio/gfm/dcox.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

68 lines
1.3 KiB
C
Executable File

/* void _CosDec80Bit(pDst,pSrc)
*
* ARGUMENT
* DEC *pDst, *pSrc;
*
* DESCRIPTION
* Sets pDst = the cosine of pSrc radians.
*
* SIDE EFFECTS
* None.
*
* RETURNS
* None. No errors are possible.
*
* AUTHOR
* Jared Levy October 16, 1987
* Copyright (C) 1987-1990 Greenleaf Software Inc. All rights reserved.
*
* MODIFICATIONS
*
*/
#include <stdio.h>
#include "gm.h"
#include "gmsystem.h"
void _CosDec80Bit(pDst,pSrc)
DEC *pDst, *pSrc;
{
DEC dnsrc, *nsrc, dtemp, *temp;
int isn=0;
nsrc = &dnsrc;
_MacDCopy(nsrc, pSrc);
/* scale nsrc to range 0 to pi */
if (_MacIsDecN(nsrc))
_MacDChgs(nsrc);
if (CompareDecimal(nsrc, &decPi) == 1) {
temp = &dtemp;
(void) _DivRndDec80Bit(temp, nsrc, &dec2Pi, 0);
(void) _MulDec80Bit(temp, temp, &dec2Pi);
(void) _SubDec80Bit(nsrc, nsrc, temp);
if (_MacIsDecN(nsrc))
_MacDChgs(nsrc);
}
/* scale nsrc to range 0 to pi / 2 */
if (CompareDecimal(nsrc, &decPiOver2) == 1) {
isn = 1;
(void) _SubDec80Bit(nsrc, &decPi, nsrc);
}
/* calculate appropriate Taylor series */
if (CompareDecimal(nsrc, &decPiOver4) == 1) {
(void) _SubDec80Bit(nsrc, &decPiOver2, nsrc);
_SinDecSmall(pDst, nsrc); /* sine series */
}
else
_CosDecSmall(pDst, nsrc); /* cosine series */
/* adjust for negative values */
if (isn)
_MacDChgs(pDst);
}