99 lines
2.8 KiB
C++
99 lines
2.8 KiB
C++
/*
|
|
* MIRACL C++ Flash functions flash.cpp
|
|
*
|
|
* AUTHOR : N.Coghlan
|
|
* Modified by M.Scott
|
|
*
|
|
* PURPOSE : Implementation of Class Flash functions
|
|
*
|
|
*/
|
|
|
|
#include "flash.h"
|
|
|
|
#ifdef MR_FLASH
|
|
|
|
|
|
BOOL Flash::iszero() const
|
|
{ if (size(fn)==0) return TRUE; return FALSE; }
|
|
|
|
Big Flash::trunc(Flash *rem) {Big b;
|
|
if (rem==NULL) ftrunc(fn,b.fn,b.fn);
|
|
else ftrunc(fn,b.fn,rem->fn);
|
|
return b;}
|
|
|
|
Big Flash::num(void) {Big b; numer(fn,b.fn); return b;}
|
|
Big Flash::den(void) {Big b; denom(fn,b.fn); return b;}
|
|
|
|
Flash operator-(const Flash& f) {Flash nf; negify(f.fn,nf.fn); return nf;}
|
|
|
|
Flash operator+(const Flash& f1, const Flash& f2)
|
|
{Flash aff; fadd(f1.fn,f2.fn,aff.fn); return aff;}
|
|
|
|
Flash operator-(const Flash& f1, const Flash& f2)
|
|
{Flash mff; fsub(f1.fn,f2.fn,mff.fn); return mff;}
|
|
|
|
Flash operator*(const Flash& f1, const Flash& f2)
|
|
{Flash xff; fmul(f1.fn,f2.fn,xff.fn); return xff;}
|
|
|
|
Flash operator/(const Flash& f1, const Flash& f2)
|
|
{Flash dff; fdiv(f1.fn,f2.fn,dff.fn); return dff;}
|
|
Flash operator%(const Flash& f1, const Flash& f2)
|
|
{Flash rff; fmodulo(f1.fn,f2.fn,rff.fn); return rff;}
|
|
|
|
Flash pi() {Flash z; fpi(z.fn); return z;}
|
|
|
|
Flash inverse(const Flash& f) {Flash z; frecip(f.fn, z.fn); return z;}
|
|
|
|
Flash cos(const Flash& f) {Flash z; fcos(f.fn, z.fn); return z;}
|
|
Flash sin(const Flash& f) {Flash z; fsin(f.fn, z.fn); return z;}
|
|
Flash tan(const Flash& f) {Flash z; ftan(f.fn, z.fn); return z;}
|
|
|
|
Flash acos(const Flash& f){Flash z; facos(f.fn, z.fn);return z;}
|
|
Flash asin(const Flash& f){Flash z; fasin(f.fn, z.fn);return z;}
|
|
Flash atan(const Flash& f){Flash z; fatan(f.fn, z.fn);return z;}
|
|
|
|
Flash cosh(const Flash& f){Flash z; fcosh(f.fn, z.fn);return z;}
|
|
Flash sinh(const Flash& f){Flash z; fsinh(f.fn, z.fn);return z;}
|
|
Flash tanh(const Flash& f){Flash z; ftanh(f.fn, z.fn);return z;}
|
|
|
|
Flash acosh(const Flash& f){Flash z; facosh(f.fn, z.fn);return z;}
|
|
Flash asinh(const Flash& f){Flash z; fasinh(f.fn, z.fn);return z;}
|
|
Flash atanh(const Flash& f){Flash z; fatanh(f.fn, z.fn);return z;}
|
|
|
|
Flash log(const Flash& f) {Flash z; flog(f.fn, z.fn); return z;}
|
|
Flash exp(const Flash& f) {Flash z; fexp(f.fn, z.fn); return z;}
|
|
Flash pow(const Flash& f1,const Flash& f2)
|
|
{Flash z;fpowf(f1.fn,f2.fn,z.fn); return z;}
|
|
|
|
Flash sqrt(const Flash& f) {Flash z; froot(f.fn, 2, z.fn); return z;}
|
|
Flash nroot(const Flash& f,int n) {Flash z; froot(f.fn,n,z.fn); return z;}
|
|
Flash fabs(const Flash& f) {Flash z; absol(f.fn,z.fn); return z;}
|
|
|
|
#ifndef MR_NO_STANDARD_IO
|
|
|
|
istream& operator>>(istream& s, Flash& x)
|
|
{
|
|
miracl *mip=get_mip();
|
|
s >> mip->IOBUFF;
|
|
if (s.eof() || s.bad())
|
|
{
|
|
zero(x.fn);
|
|
return s;
|
|
}
|
|
cinstr(x.fn,mip->IOBUFF);
|
|
return s;
|
|
}
|
|
|
|
ostream& operator<<(ostream& s, const Flash& x)
|
|
{
|
|
miracl *mip=get_mip();
|
|
cotstr(x.fn,mip->IOBUFF);
|
|
s << mip->IOBUFF;
|
|
return s;
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|