/*      Greenleaf Financial MathLib
*       Function Call Prototypes
*       Copyright (C) 1987-1990 Greenleaf Software Inc.  All rights reserved.
*/
#ifndef FILE
#include <stdio.h>
#endif

#if defined(WIN32) && defined(_USRDLL)
#define GFM_EXPORT __declspec(dllexport)
#else
#define GFM_EXPORT
#endif

#define ELLIPSES ...

#ifdef __cplusplus
extern "C" {
#endif

GFM_EXPORT DEC          *AbsoluteDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *AddAscii( DEC *, char *, char * );
GFM_EXPORT void          AddsToDate360( int *, int *, int *, int , int , int , int );
GFM_EXPORT void          AddsToDate365( int *, int *, int *, int , int , int , int );
GFM_EXPORT void          AddsToDate365NoLeap( int *, int *, int *, int , int , int , int );
GFM_EXPORT DEC          *AddDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC         **AddDecimalArrays( DEC *[], DEC *[], DEC *[], int );
GFM_EXPORT DEC         **AddDecimalToDecimalArray( DEC *[], DEC *[], DEC *, int );
GFM_EXPORT DEC          *AddDoubleToDecimal( DEC *, DEC *, double  );
GFM_EXPORT DEC          *AddIntToDecimal( DEC *, DEC *, int  );
GFM_EXPORT DEC          *AddLongToDecimal( DEC *, DEC *, long  );
GFM_EXPORT DEC          *AddPercent( DEC *, DEC *, DEC *);
GFM_EXPORT DEC          *AddUnsLongToDecimal( DEC *, DEC *, unsigned long  );
GFM_EXPORT DEC          *AddUnsToDecimal( DEC *, DEC *, unsigned int  );
GFM_EXPORT DEC          *AdvancePayment( int , DEC *, DEC *, DEC *, DEC *, int , int );
GFM_EXPORT DEC          *AllocateDecimal( void );
GFM_EXPORT DEC*         *AllocateDecimalArray( DEC *[], int );
GFM_EXPORT void          Amortize( DEC *, DEC *, DEC *, DEC *, DEC *, DEC *, int , int );
GFM_EXPORT void          AmortizeTable( DEC *[], DEC *[], DEC *[], DEC *, DEC *, DEC *,
                                        int , int );
GFM_EXPORT DEC          *AntiLog10Decimal( DEC *, DEC * );
GFM_EXPORT DEC          *AntiLogEDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *ArcCosineDecimal( DEC *, DEC *);
GFM_EXPORT DEC          *ArcSineDecimal( DEC *, DEC *);
GFM_EXPORT DEC          *ArcTangentDecimal( DEC *, DEC *);
GFM_EXPORT DEC          *BondPrice( DEC *, DEC *, DEC *, DEC *, int , int , int , int ,
                                    int , int , int );
GFM_EXPORT DEC          *BondYield( DEC *, DEC *, DEC *, int , int , int , int , int ,
                                    int , int );
GFM_EXPORT DEC          *ChangeSignDecimal( DEC *, DEC * );
GFM_EXPORT void          ClearMathError( void );
GFM_EXPORT int           CompareDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *CompoundInterest( int *, DEC *, DEC *, DEC *, DEC *, int , int );
GFM_EXPORT DEC          *CompoundInterestCompound( DEC *, DEC *, DEC *, DEC *, DEC *, int ,
                                        int );
GFM_EXPORT DEC          *CompoundInterestSimple( DEC *, DEC *, DEC *, DEC *, DEC *, int ,
                                      int );
GFM_EXPORT DEC          *ConvAsciiToDecimal( DEC *, char * );
GFM_EXPORT DEC          *ConvAsciiToDecimalRound( DEC *, char *, int );
GFM_EXPORT char         *ConvDecimalToAscii( char *, DEC * );
GFM_EXPORT char         *ConvDecimalToAsciiComma(char *, DEC * );
GFM_EXPORT char         *ConvDecimalToAsciiCommaRound( char *, DEC *, int );
GFM_EXPORT char         *ConvDecimalToAsciiRound( char *, DEC *, int );
GFM_EXPORT long          ConvDecimalToDollarsAnd( int *, DEC * );
GFM_EXPORT double        ConvDecimalToDouble( DEC * );
GFM_EXPORT char         *ConvDecimalToEngineering( char *, DEC *, int  );
GFM_EXPORT long          ConvDecimalToFraction( int *, DEC *, int  );
GFM_EXPORT int           ConvDecimalToInt( DEC * );
GFM_EXPORT long          ConvDecimalToLong( DEC * );
GFM_EXPORT char         *ConvDecimalToScientific( char *, DEC *, int  );
GFM_EXPORT unsigned int  ConvDecimalToUns( DEC * );
GFM_EXPORT unsigned long ConvDecimalToUnsLong( DEC * );
GFM_EXPORT DEC          *ConvDegreesToRadians( DEC *, DEC * );
GFM_EXPORT DEC          *ConvDollarsAndToDecimal( DEC *, long , int  );
GFM_EXPORT DEC          *ConvDoubleToDecimal( DEC *, double  );
GFM_EXPORT DEC          *ConvDoubleToDecimalRound( DEC *, double , int  );
GFM_EXPORT DEC          *ConvEffectiveToNominal( DEC *, DEC *, int );
GFM_EXPORT DEC          *ConvFractionToDecimal( DEC *, long , int , int  );
GFM_EXPORT DEC          *ConvIntToDecimal( DEC *, int  );
GFM_EXPORT DEC          *ConvLongToDecimal( DEC *, long  );
GFM_EXPORT DEC          *ConvNominalToEffective( DEC *, DEC *, int );
GFM_EXPORT DEC          *ConvPeriodicToly( DEC *, DEC *, int );
GFM_EXPORT DEC          *ConvRadiansToDegrees( DEC *, DEC * );
GFM_EXPORT DEC          *ConvUnsLongToDecimal( DEC *, unsigned long  );
GFM_EXPORT DEC          *ConvUnsToDecimal( DEC *, unsigned int  );
GFM_EXPORT DEC          *ConvlyToPeriodic( DEC *, DEC *, int );
GFM_EXPORT DEC          *CopyDecimal( DEC *, DEC * );
GFM_EXPORT DEC         **CopyDecimalArray( DEC *[], DEC *[], int  );
GFM_EXPORT DEC          *CosineDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *CotangentDecimal( DEC *, DEC * );
GFM_EXPORT int           DaysBetweenDates360( int , int , int , int , int , int  );
GFM_EXPORT int           DaysBetweenDates365( int , int , int , int , int , int  );
GFM_EXPORT int           DaysBetweenDates365NoLeapYear( int , int , int , int , int ,
                                             int );
GFM_EXPORT long          DecimalMantissa( DEC * );
GFM_EXPORT DEC          *DecimalModuloDouble( DEC *, DEC *, double );
GFM_EXPORT DEC          *DecimalModuloInt( DEC *, DEC *, int );
GFM_EXPORT DEC          *DecimalModuloLong( DEC *, DEC *, long );
GFM_EXPORT DEC          *DecimalModuloUns( DEC *, DEC *, unsigned int );
GFM_EXPORT DEC          *DecimalModuloUnsLong( DEC *, DEC *, unsigned long );
GFM_EXPORT DEC          *DecimalPercentage( DEC *, DEC *, int );
GFM_EXPORT int           DecimalPrecision( DEC * );
GFM_EXPORT DEC          *DeleteTrailingZeroes( DEC *, DEC * );
GFM_EXPORT DEC          *DepreciateDeclining( DEC *, DEC *, DEC *, DEC *, DEC *, int ,
                                              DEC *, int );
GFM_EXPORT DEC*         *DepreciateDecliningTable( DEC *[], DEC *[], DEC *, DEC *, DEC *,
                                                   int , DEC *);
GFM_EXPORT DEC          *DepreciateDoubleDeclining( DEC *, DEC *, DEC *, DEC *, int ,
                                                    DEC *, int );
GFM_EXPORT DEC*         *DepreciateDoubleDecliningTable( DEC *[], DEC *[], DEC *, DEC *,
                                                         int , DEC *);
GFM_EXPORT DEC          *DepreciateStraightLine( DEC *, DEC *, DEC *, DEC *, int , DEC *,
                                                 int );
GFM_EXPORT DEC*         *DepreciateStraightLineTable( DEC *[], DEC *[], DEC *, DEC *, int ,
                                                      DEC *);
GFM_EXPORT DEC          *DepreciateSumOfYears( DEC *, DEC *, DEC *, DEC *, int , DEC *,
                                               int );
GFM_EXPORT DEC*         *DepreciateSumOfYearsTable( DEC *[], DEC *[], DEC *, DEC *, int ,
                                                    DEC *);
GFM_EXPORT DEC          *DivideAscii( DEC *, char *, char *);
GFM_EXPORT DEC          *DivideDecimal( DEC *, DEC *, DEC *);
GFM_EXPORT DEC          *DivideDecimalAndRound( DEC *, DEC *, DEC *, int  );
GFM_EXPORT DEC          *DivideDecimalAndTruncate( DEC *, DEC *, DEC *, int  );
GFM_EXPORT DEC*         *DivideDecimalArrayByDecimal( DEC *[], DEC *[], DEC *, int  );
GFM_EXPORT DEC         **DivideDecimalArrays( DEC *[], DEC *[], DEC *[], int  );
GFM_EXPORT DEC          *DivideDecimalByDouble( DEC *, DEC *, double );
GFM_EXPORT DEC          *DivideDecimalByInt( DEC *, DEC *, int );
GFM_EXPORT DEC          *DivideDecimalByLong( DEC *, DEC *, long );
GFM_EXPORT DEC          *DivideDecimalByUns( DEC *, DEC *, unsigned int );
GFM_EXPORT DEC          *DivideDecimalByUnsLong( DEC *, DEC *, unsigned long );
GFM_EXPORT DEC          *DividePercent( DEC *, DEC *, DEC *);
GFM_EXPORT char         *ErrorName( char *, int );
GFM_EXPORT DEC          *Factorial( DEC *, unsigned int );
GFM_EXPORT int           FilePrintDecimal( FILE *, char *, ELLIPSES);
GFM_EXPORT int           FileScanDecimal( FILE *, char *, ELLIPSES);
GFM_EXPORT DEC          *FindMaximumDecimalArray( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *FindMinimumDecimalArray( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *FractionDecimal( DEC *, DEC * );
GFM_EXPORT void          FreeDecimal( DEC * );
GFM_EXPORT void          FreeDecimalArray( DEC *[] );
GFM_EXPORT char         *FunctionName( char *, int );
GFM_EXPORT DEC          *IntegerPartDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *InternalRateOfReturn( DEC *, DEC *[], int );
GFM_EXPORT int           IsDecimalEqual( DEC *, DEC * );
GFM_EXPORT int           IsDecimalGreater( DEC *, DEC * );
GFM_EXPORT int           IsDecimalGreaterOrEqual( DEC *, DEC * );
GFM_EXPORT int           IsDecimalInt( DEC * );
GFM_EXPORT int           IsDecimalLess( DEC *, DEC * );
GFM_EXPORT int           IsDecimalLessOrEqual( DEC *, DEC * );
GFM_EXPORT int           IsDecimalNegative( DEC * );
GFM_EXPORT int           IsDecimalNotEqual( DEC *, DEC * );
GFM_EXPORT int           IsDecimalPositive( DEC * );
GFM_EXPORT int           IsDecimalZero( DEC * );
GFM_EXPORT DEC          *LinearEstimate( DEC *, DEC *, DEC *, DEC *[], DEC *[], int  );
GFM_EXPORT DEC          *Log10Decimal( DEC *, DEC * );
GFM_EXPORT DEC          *LogEDecimal( DEC *, DEC * );
GFM_EXPORT int           LookUpDecimalArray( DEC *[], DEC *, int , int  );
GFM_EXPORT int           MagnitudeOfDecimal( DEC * );
GFM_EXPORT DEC          *MakeDecimalFromInt( DEC *, int , int  );
GFM_EXPORT DEC          *MakeDecimalFromLong( DEC *, long , int  );
GFM_EXPORT DEC          *MakeDecimalFromUns( DEC *, unsigned int , int  );
GFM_EXPORT DEC          *MakeDecimalFromUnsLong( DEC *, unsigned long , int  );
GFM_EXPORT DEC          *MaximumDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *Median( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *MinimumDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *ModifiedIRR( DEC *, DEC *[], int , DEC *, DEC *);
GFM_EXPORT DEC          *ModuloDecimal( DEC *, DEC *, DEC *);
GFM_EXPORT DEC          *MultiplyAscii( DEC *, char *, char * );
GFM_EXPORT DEC          *MultiplyDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *MultiplyDecimalAndRound( DEC *, DEC *, DEC *, int  );
GFM_EXPORT DEC          *MultiplyDecimalAndTruncate( DEC *, DEC *, DEC *, int  );
GFM_EXPORT DEC*         *MultiplyDecimalArrayByDecimal( DEC *[], DEC *[], DEC *, int  );
GFM_EXPORT DEC*         *MultiplyDecimalArrays( DEC *[], DEC *[], DEC *[], int  );
GFM_EXPORT DEC          *MultiplyDecimalByDouble( DEC *, DEC *, double  );
GFM_EXPORT DEC          *MultiplyDecimalByInt( DEC *, DEC *, int  );
GFM_EXPORT DEC          *MultiplyDecimalByLong( DEC *, DEC *, long );
GFM_EXPORT DEC          *MultiplyDecimalByUns( DEC *, DEC *, unsigned int  );
GFM_EXPORT DEC          *MultiplyDecimalByUnsLong( DEC *, DEC *, unsigned long  );
GFM_EXPORT DEC          *MultiplyPercent( DEC *, DEC *, DEC *);
GFM_EXPORT DEC          *NetFutureValue( DEC *, DEC *[], int , DEC *);
GFM_EXPORT DEC          *NetPresentValue( DEC *, DEC *[], int , DEC *);
GFM_EXPORT DEC          *PercentChange( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *PercentOf( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *PowerDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *PowerInteger( DEC *, DEC *, int  );
GFM_EXPORT DEC          *PowerRational( DEC *, DEC *, int , int  );
GFM_EXPORT DEC          *PredictX( DEC *, DEC * );
GFM_EXPORT DEC          *PredictY( DEC *, DEC * );
GFM_EXPORT int           PrintDecimal( char *, ELLIPSES);
GFM_EXPORT int           ReturnErrFuncNumAndClear( void );
GFM_EXPORT int           ReturnMathErrAndClear( void );
GFM_EXPORT DEC          *RootDecimal( DEC *, DEC *, DEC *);
GFM_EXPORT DEC          *RootInteger( DEC *, DEC *, int );
GFM_EXPORT DEC          *RoundCents( DEC *, DEC *, int  );
GFM_EXPORT DEC          *RoundDecimal( DEC *, DEC *, int );
GFM_EXPORT int           ScanDecimal( char *, ELLIPSES);
GFM_EXPORT void          SetMathErrVector( void (*)( int , int ) );
GFM_EXPORT DEC          *SimpleInterest360( int *, DEC *, DEC *, DEC *, int );
GFM_EXPORT DEC          *SimpleInterest365( int *, DEC *, DEC *, DEC *, int );
GFM_EXPORT DEC          *SineDecimal( DEC *, DEC *);
GFM_EXPORT DEC          *SinglePaymentFutureValue( DEC *, DEC *, int );
GFM_EXPORT DEC          *SinglePaymentPresentValue( DEC *, DEC *, int );
GFM_EXPORT DEC          **SortDecimalArray( DEC *[], DEC *[], int , int );
GFM_EXPORT DEC          *SquareRootDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *StandardDeviation( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *StatMean( DEC *, DEC *[], int  );
GFM_EXPORT int           StringPrintDecimal( char *, char *, ELLIPSES);
GFM_EXPORT int           StringScanDecimal( char *, char *, ELLIPSES);
GFM_EXPORT DEC          *SubtractAscii( DEC *, char *, char *);
GFM_EXPORT DEC          *SubtractDecimal( DEC *, DEC *, DEC * );
GFM_EXPORT DEC*         *SubtractDecimalArrays( DEC *[], DEC *[], DEC *[], int  );
GFM_EXPORT DEC*         *SubtractDecimalFromDecimalArray( DEC *[], DEC *[], DEC *, int  );
GFM_EXPORT DEC          *SubtractDoubleFromDecimal( DEC *, DEC *, double  );
GFM_EXPORT DEC          *SubtractIntFromDecimal( DEC *, DEC *, int  );
GFM_EXPORT DEC          *SubtractLongFromDecimal( DEC *, DEC *, long  );
GFM_EXPORT DEC          *SubtractPercent( DEC *, DEC *, DEC * );
GFM_EXPORT DEC          *SubtractUnsFromDecimal( DEC *, DEC *, unsigned int  );
GFM_EXPORT DEC          *SubtractUnsLongFromDecimal( DEC *, DEC *, unsigned long  );
GFM_EXPORT DEC          *SumDecimalArray( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *SumDecimalArrayNegative( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *SumDecimalArrayPositive( DEC *, DEC *[], int  );
GFM_EXPORT DEC          *SwapDecimal( DEC *, DEC * );
GFM_EXPORT DEC          *TangentDecimal( DEC *, DEC *);
GFM_EXPORT int           TestSignDecimal( DEC * );
GFM_EXPORT DEC          *TruncateCents( DEC *, DEC *, int );
GFM_EXPORT DEC          *TruncateDecimal( DEC *, DEC *, int  );
GFM_EXPORT DEC          *UniformSeriesFutureValue( DEC *, DEC *, int );
GFM_EXPORT DEC          *UniformSeriesPresentValue( DEC *, DEC *, int );
GFM_EXPORT DEC          *WeightedMean( DEC *, DEC *[], DEC *[], int  );
GFM_EXPORT DEC          *ZeroDecimal( DEC * );
GFM_EXPORT DEC*         *ZeroDecimalArray( DEC *[], int  );

#ifdef __cplusplus
}
#endif