【C】
//LSB[SignFlap 0:N 1:Y]
coe* CoeTaylor(coe* dest, unsigned char dptor, const coe* period, size_t digcut);
//
int CoeIsNAN(const coe* co);
//
int CoeIsINF(const coe* co);
// Initial and set the necessary system structure.
void CoeInit();
// Reset the length of the digits. If the real precise is less, zero will be moved at the end of coff from expo; if more, will cut.
// param:direction 1:+inf 2:nearest 3:-inf 4:out
void CoeDig(coe* obj, size_t digits, int direction);
// Cut trailing zeros of coff and append to expo. This is usually used at the end of the operation, so some adaptation is done here.
coe* CoeCtz(coe* dest);
//
coe* CoeDivrAlign(coe* o1, coe* o2);
//
coe* CoeDivrUnit(coe* obj, size_t kept_precise);
//
int CoeExpoAlign(coe* o1, coe* o2);
//
coe* CoeNew(const char* coff, const char* expo, const char* divr);
//
void CoeDel(coe* elm);
//
coe* CoeCpy(const coe* obj);
// Coe Version Of StrReheapStr
coe* CoeRst(coe* dest, char* coff, char* expo, char* divr);
// 取反。
coe* CoeNeg(coe* dest);
// 加法。
coe* CoeAdd(coe* dest, const coe* sors);
// 减法。
coe* CoeSub(coe* dest, const coe* sors);
// 比较。
int CoeCmp(const coe* o1, const coe* o2);
// 乘法。
coe* CoeMul(coe* dest, const coe* sors);
// 平方。
coe* CoeSquare(coe* dest);
// 绝对值。
coe* CoeHypot(coe* dest, const coe* sors);
// 除法。
coe* CoeDiv(coe* dest, const coe* sors);
// 取整数部分。
// CoeRem: make dest < unit_period
// Clear the mantissa part. Based on CoeExpoAlign().
coe* CoeInt(coe* dest);
// 幂。
coe* CoePow(coe* dest, const coe* sors);
// 带符号平方根。 Return a negative if dest is negative, otherwise a positive.
coe* CoeSqrt(coe* dest);
// 立方根。
// CoeCbrt
// 正弦。
coe* CoeSin(coe* dest);
// 余弦。
coe* CoeCos(coe* dest);
// 正切。
coe* CoeTan(coe* dest);
// 正弦反函数。
coe* CoeAsin(coe* dest);
// 余弦反函数。
coe* CoeAcos(coe* dest);
// 正切反函数。
coe* CoeAtan(coe* dest);
// Log`10(x) == Log`(default e)(x)/Log`e(10)
coe* CoeLog(coe* dest);
// 取符号。
int CoeSgn(const coe* dest);
// 自然幂。
coe* CoeExp(coe* dest);//TEST-STAGE
// 整数阶乘。
coe* CoeFac(coe* dest);
// 动态 圆周率常数。
coe* CoePi();
// 动态 自然常数。
coe* CoeE();
// 双曲正弦函数。
coe* CoeSinh(coe* dest);
// 双曲余弦函数。
coe* CoeCosh(coe* dest);
// 双曲正切函数。
coe* CoeTanh(coe* dest);
// 双曲正弦反函数。
coe* CoeAsinh(coe* dest);
// 双曲余弦反函数。
coe* CoeAcosh(coe* dest);
// 双曲正切反函数。
coe* CoeAtanh(coe* dest);
// coe 转 字符串。
// opt: 0[auto] 1[int or float] 2[e format]
char* CoeToLocale(const coe* obj, int opt);
// 字符串转 coe。
coe* CoeFromLocale(const char* str);
// coe 转 double。
double CoeToDouble(const coe* dest);
// 有符号整型转 coe。
coe* CoeFromInteger(ptrdiff_t integ);
// double 型转 coe。
coe* CoeFromDouble(double flt);
【C++】
namespace uni {
class Coe /*: public coe*/ {
public:
Coe(const char* coff, const char* divr, const char* expo = "+0", stduint dimension = 0);
Coe(double num);
Coe(const char* local_str);
Coe(const Coe& c);
Coe(coe* c);
~Coe();
bool isnan();
bool isinf();
double GetReal() const;
static Coe pi();
static Coe e();
String ToString(int opt = 0) const;
operator double() const;
operator String() const;
//// 运算符的定义
//{TEMP} no using: Coe res(CoeCpy(this->co)); CoeSin(res.co);
Coe Sin() { return Coe(sin (operator double())); }
Coe Cos() { return Coe(cos (operator double())); }
Coe Tan() { return Coe(tan (operator double())); }
Coe ASin() { return Coe(asin (operator double())); }
Coe ACos() { return Coe(acos (operator double())); }
Coe ATan() { return Coe(atan (operator double())); }
Coe Sinh() { return Coe(sinh (operator double())); }
Coe Cosh() { return Coe(cosh (operator double())); }
Coe Tanh() { return Coe(tanh (operator double())); }
Coe ASinh() { return Coe(asinh(operator double())); }
Coe ACosh() { return Coe(acosh(operator double())); }
Coe ATanh() { return Coe(atanh(operator double())); }
// ...
};
extern const Coe coe_pi;
extern const Coe coe_e;
}