campo-sirio/gfm/divarr.c

67 lines
1.3 KiB
C
Raw Normal View History

/* DEC **DivideDecimalArrays(pDst,pSrc1,pSrc2,n)
*
* ARGUMENT
* pDst is a ptr to the array of destination DEC pointers.
* pSrc1 and pSrc2 are ptrs to the arrays of source DEC pointers
* n is the number of elements in pSrc
*
* DESCRIPTION
* Sets pDst[i] = pSrc1[i] / pSrc2[i]. If pDst is null, tries to create a
* DEC structure, then divide. If some of the pSrc structures
* are null, the non-null ones are still divided.
*
* SIDE EFFECTS
* None.
*
* RETURNS
* Returns pointer to the new structure if successful, otherwise
* returns GM_NULLARR.
*
* POSSIBLE ERROR CODES
*
* GM_NULLPOINTER
* GM_OVERFLOW
* GM_UNDERFLOW
* GM_DIV0
* GM_ARGVAL
*
* AUTHOR
* Jared Levy
* Copyright (C) 1987-1990 Greenleaf Software Inc. All rights reserved.
*
* MODIFICATIONS
*
*/
#include <stdio.h>
#include "gm.h"
#include "gmsystem.h"
DEC **DivideDecimalArrays(pDst,pSrc1,pSrc2,n)
DEC **pDst;
DEC **pSrc1, **pSrc2;
int n;
{
int i;
/* source must be supplied !! */
_MacStart(GM_DIVARR);
if (!pSrc1 || !pSrc2 || !pDst) {
_MacErr(GM_NULLPOINTER);
_MacRet(GM_NULLARR);
}
if (n<0) {
_MacErr(GM_ARGVAL);
_MacRet(GM_NULLARR);
}
/* Divide the numbers */
for (i=0; i<n; i++)
(void) DivideDecimal(pDst[i], pSrc1[i], pSrc2[i]);
/* DivideDecimal sets the error flag each time an error occurs */
_MacRet(pDst);
}