bcd.h() Ondalık sayı bildirimleri abs COS log10 sin tanh acos cosh pow sinh asin exp pow10 sqrt atan log real tan tanh
Aşagidaki kodlari kopyaliyim not defterine yapiştiralim kaydederken bcd.h diye kaydedelim ---------------------------------
/* bcd.h BCD Number Library - Include File class bcd: declarations for decimal numbers. Copyright (c) 1987, 1991 by Borland International All Rights Reserved. */ #ifndef __cplusplus #error Must use C++ for the type bcd. #endif #ifndef __BCD_H #define __BCD_H #if !defined( __DEFS_H ) #include <_defs.h> #endif #if !defined( __MATH_H ) #include <math.h> #endif #pragma option -Vo- #define _BcdMaxDecimals 5000 _CLASSDEF(bcd) class _CLASSTYPE bcd { public: // constructors _Cdecl bcd(); _Cdecl bcd(int x); _Cdecl bcd(unsigned int x); _Cdecl bcd(long x); _Cdecl bcd(unsigned long x); _Cdecl bcd(double x, int decimals = _BcdMaxDecimals); _Cdecl bcd(long double x, int decimals = _BcdMaxDecimals); // bcd manipulations friend long double _Cdecl real(bcd &); // Return the real part // Overloaded ANSI C math functions friend bcd _Cdecl abs(bcd &); friend bcd _Cdecl acos(bcd &); friend bcd _Cdecl asin(bcd &); friend bcd _Cdecl atan(bcd &); friend bcd _Cdecl cos(bcd &); friend bcd _Cdecl cosh(bcd &); friend bcd _Cdecl exp(bcd &); friend bcd _Cdecl log(bcd &); friend bcd _Cdecl log10(bcd &); friend bcd _Cdecl pow(bcd & base, bcd & expon); friend bcd _Cdecl sin(bcd &); friend bcd _Cdecl sinh(bcd &); friend bcd _Cdecl sqrt(bcd &); friend bcd _Cdecl tan(bcd &); friend bcd _Cdecl tanh(bcd &); // Binary Operator Functions friend bcd _Cdecl operator+(bcd &, bcd &); friend bcd _Cdecl operator+(long double, bcd &); friend bcd _Cdecl operator+(bcd &, long double); friend bcd _Cdecl operator-(bcd &, bcd &); friend bcd _Cdecl operator-(long double, bcd &); friend bcd _Cdecl operator-(bcd &, long double); friend bcd _Cdecl operator*(bcd &, bcd &); friend bcd _Cdecl operator*(bcd &, long double); friend bcd _Cdecl operator*(long double, bcd &); friend bcd _Cdecl operator/(bcd &, bcd &); friend bcd _Cdecl operator/(bcd &, long double); friend bcd _Cdecl operator/(long double, bcd &); friend int _Cdecl operator==(bcd &, bcd &); friend int _Cdecl operator!=(bcd &, bcd &); friend int _Cdecl operator>=(bcd &, bcd &); friend int _Cdecl operator<=(bcd &, bcd &); friend int _Cdecl operator>(bcd &, bcd &); friend int _Cdecl operator<(bcd &, bcd &); bcd & _Cdecl operator+=(bcd &); bcd & _Cdecl operator+=(long double); bcd & _Cdecl operator-=(bcd &); bcd & _Cdecl operator-=(long double); bcd & _Cdecl operator*=(bcd &); bcd & _Cdecl operator*=(long double); bcd & _Cdecl operator/=(bcd &); bcd & _Cdecl operator/=(long double); bcd _Cdecl operator+(); bcd _Cdecl operator-(); // Implementation private: long mantissa[2]; int expo; }; // const bcd bcd_zero(0); enum bcdexpo { ExpoZero, ExpoInf, ExpoNan, }; extern "C" { long double pascal __bcd_tobinary(const bcd far *p); void pascal __bcd_todecimal(long double x, int decimals, bcd far *p); long double pascal __bcd_log10(bcd far *p); void pascal __bcd_pow10(int n, bcd far *p); } inline _Cdecl bcd::bcd() { /* if you want zero ... mantissa[0] = 0; mantissa[1] = 0; expo = ExpoZero; */ } inline _Cdecl bcd::bcd(long double x, int decimals) { __bcd_todecimal(x,decimals,this); } inline _Cdecl bcd::bcd(double x, int decimals) { __bcd_todecimal(x,decimals,this); } inline _Cdecl bcd::bcd(int x) { mantissa[0] = x; mantissa[1] = x >= 0 ? 0 : -1; expo = 0; } inline _Cdecl bcd::bcd(unsigned int x) { mantissa[0] = x; mantissa[1] = 0; expo = 0; } inline _Cdecl bcd::bcd(long x) { mantissa[0] = x; mantissa[1] = x >= 0 ? 0 : -1; expo = 0; } inline _Cdecl bcd::bcd(unsigned long x) { mantissa[0] = x; mantissa[1] = 0; expo = 0; } inline long double _Cdecl real(bcd& z) { return __bcd_tobinary(&z); } // Definitions of compound-assignment operator member functions inline bcd& _Cdecl bcd::operator+=(bcd& b) { __bcd_todecimal(real(*this)+real(b),_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator+=(long double b) { __bcd_todecimal(real(*this)+b,_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator-=(bcd& b) { __bcd_todecimal(real(*this)-real(b),_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator-=(long double b) { __bcd_todecimal(real(*this)-b,_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator*=(bcd& b) { __bcd_todecimal(real(*this)*real(b),_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator*=(long double b) { __bcd_todecimal(real(*this)*b,_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator/=(bcd& b) { __bcd_todecimal(real(*this)/real(b),_BcdMaxDecimals,this); return *this; } inline bcd& _Cdecl bcd::operator/=(long double b) { __bcd_todecimal(real(*this)/b,_BcdMaxDecimals,this); return *this; } // Definitions of non-member binary operator functions inline bcd _Cdecl operator+(bcd& a, bcd& b) { return bcd(real(a) + real(b)); } inline bcd _Cdecl operator+(long double a, bcd& b) { return bcd(a + real(b)); } inline bcd _Cdecl operator+(bcd& a, long double b) { return bcd(real(a) + b); } inline bcd _Cdecl operator-(bcd& a, bcd& b) { return bcd(real(a) - real(b)); } inline bcd _Cdecl operator-(long double a, bcd& b) { return bcd(a - real(b)); } inline bcd _Cdecl operator-(bcd& a, long double b) { return bcd(real(a) - b); } inline bcd _Cdecl operator*(bcd& a, bcd& b) { return bcd(real(a) * real(b)); } inline bcd _Cdecl operator*(bcd& a, long double b) { return bcd(real(a) * b); } inline bcd _Cdecl operator*(long double a, bcd& b) { return bcd(a * real(b)); } inline bcd _Cdecl operator/(bcd& a, bcd& b) { return bcd(real(a) / real(b)); } inline bcd _Cdecl operator/(long double a, bcd& b) { return bcd(a / real(b)); } inline bcd _Cdecl operator/(bcd& a, long double b) { return bcd(real(a) / b); } inline int _Cdecl operator==(bcd& a, bcd& b) { return real(a) == real(b); } inline int _Cdecl operator!=(bcd& a, bcd& b) { return real(a) != real(b); } inline int _Cdecl operator>=(bcd& a, bcd& b) { return real(a) >= real(b); } inline int _Cdecl operator<=(bcd& a, bcd& b) { return real(a) <= real(b); } inline int _Cdecl operator>(bcd& a, bcd& b) { return real(a) > real(b); } inline int _Cdecl operator<(bcd& a, bcd& b) { return real(a) < real(b); } inline bcd _Cdecl bcd::operator+() { return *this; } inline bcd _Cdecl bcd::operator-() { // return bcd(-real(this)); // 1's comp mantissa[0] = - ++ mantissa[0]; mantissa[1] = - ++ mantissa[1]; // inc if (++mantissa[0] == 0) ++mantissa[1]; return *this; } inline bcd _Cdecl abs(bcd& a) { return bcd(fabs(real(a)));} inline bcd _Cdecl acos(bcd& a) { return bcd(acos(real(a)));} inline bcd _Cdecl asin(bcd& a) { return bcd(asin(real(a)));} inline bcd _Cdecl atan(bcd& a) { return bcd(atan(real(a)));} inline bcd _Cdecl cos(bcd& a) { return bcd(cos(real(a)));} inline bcd _Cdecl cosh(bcd& a) { return bcd(cosh(real(a)));} inline bcd _Cdecl exp(bcd& a) { return bcd(exp(real(a)));} inline bcd _Cdecl log(bcd& a) { return bcd(log(real(a)));} inline bcd _Cdecl log10(bcd& a) { return bcd(__bcd_log10(&a));} inline bcd _Cdecl sin(bcd& a) { return bcd(sin(real(a)));} inline bcd _Cdecl sinh(bcd& a) { return bcd(sinh(real(a)));} inline bcd _Cdecl sqrt(bcd& a) { return bcd(sqrt(real(a)));} inline bcd _Cdecl tan(bcd& a) { return bcd(tan(real(a)));} inline bcd _Cdecl tanh(bcd& a) { return bcd(tanh(real(a)));} inline bcd _Cdecl pow(bcd& a, bcd& b) { return bcd(pow(real(a),real(b)));} inline void _Cdecl pow10(int n, bcd& a) { __bcd_pow10(n,&a);} // bcd stream I/O #if !defined( __IOSTREAM_H ) #include <iostream.h> #endif ostream & pascal operator<<(ostream &, bcd &); istream & pascal operator>>(istream &, bcd &); #pragma option -Vo. #endif // __BCD_H
Hiç yorum yok:
Yorum Gönder
Her yorum bilgidir. Araştırmaya devam...