⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tools.h

📁 数值算法库for Unix
💻 H
字号:
#ifndef NTL_tools__H#define NTL_tools__H#include <NTL/config.h>#include <NTL/mach_desc.h>#if (defined(NTL_STD_CXX) || defined(NTL_PSTD_NHF))// new header files#include <cstdlib>#include <cmath>#include <iostream>#else// old header files#include <stdlib.h>#include <math.h>#include <iostream.h>#endif#if (defined(NTL_STD_CXX) || defined(NTL_PSTD_NHF))#define NTL_SNS std ::#define NTL_USE_SNS using namespace std;#elif (defined(NTL_PSTD_NNS))#define NTL_SNS ::#define NTL_USE_SNS #else#define NTL_SNS #define NTL_USE_SNS #endif#if (defined(NTL_STD_CXX) || defined(NTL_PSTD_NNS))#define NTL_NAMESPACE NTL#define NTL_OPEN_NNS namespace NTL_NAMESPACE {#define NTL_CLOSE_NNS  }#define NTL_USE_NNS using namespace NTL_NAMESPACE;#define NTL_NNS NTL_NAMESPACE ::// To make things work, we have to apply using declarations of all std// functions that are both overloaded by NTL and are used in// the implementation of NTL.#define NTL_START_IMPL NTL_USE_SNS NTL_OPEN_NNS \   using NTL_SNS abs; \   using NTL_SNS ceil; \   using NTL_SNS exp; \   using NTL_SNS fabs; \   using NTL_SNS floor; \   using NTL_SNS ldexp; \   using NTL_SNS log; \   using NTL_SNS sqrt; #define NTL_END_IMPL NTL_CLOSE_NNS#else#define NTL_NAMESPACE #define NTL_OPEN_NNS #define NTL_CLOSE_NNS #define NTL_USE_NNS #define NTL_NNS #define NTL_START_IMPL#define NTL_END_IMPL#endif#define NTL_CLIENT NTL_USE_SNS NTL_USE_NNS#if 0namespace foo_bar {class ostream;class istream;typedef unsigned int size_t;double floor(double);float floor(float);}#endif#include <NTL/IsFinite.h>#if (!defined(NTL_CXX_ONLY)) extern "C"#endifdouble _ntl_GetTime();typedef unsigned long _ntl_ulong;typedef _ntl_ulong *_ntl_ulong_ptr;// I made these have "obscure" names to avoid conflict with// (non-standard but common) definitions in standard headers.// Putting u_long inside namespace NTL only tends to creates ambiguities,// for no good reason.NTL_OPEN_NNSstruct INIT_SIZE_STRUCT { };const INIT_SIZE_STRUCT INIT_SIZE = INIT_SIZE_STRUCT();typedef const INIT_SIZE_STRUCT& INIT_SIZE_TYPE;struct INIT_VAL_STRUCT { };const INIT_VAL_STRUCT INIT_VAL = INIT_VAL_STRUCT();typedef const INIT_VAL_STRUCT& INIT_VAL_TYPE;struct INIT_TRANS_STRUCT { };const INIT_TRANS_STRUCT INIT_TRANS = INIT_TRANS_STRUCT();typedef const INIT_TRANS_STRUCT& INIT_TRANS_TYPE;struct INIT_LOOP_HOLE_STRUCT { };const INIT_LOOP_HOLE_STRUCT INIT_LOOP_HOLE = INIT_LOOP_HOLE_STRUCT();typedef const INIT_LOOP_HOLE_STRUCT& INIT_LOOP_HOLE_TYPE;struct INIT_FFT_STRUCT { };const INIT_FFT_STRUCT INIT_FFT = INIT_FFT_STRUCT();typedef const INIT_FFT_STRUCT& INIT_FFT_TYPE;#ifdef NTL_NO_INIT_TRANS#define NTL_OPT_RETURN(t, x) return x#else#define NTL_OPT_RETURN(t, x) return t(x, INIT_TRANS)#endif#ifndef NTL_NO_MIN_MAXinline int min(int a, int b) { return (a < b) ?  a : b; } inline int max(int a, int b) { return (a < b) ? b : a; }inline long min(long a, long b) { return (a < b) ?  a : b; } inline long max(long a, long b) { return (a < b) ? b : a; }inline long min(int a, long b) { return (a < b) ?  long(a) : b; } inline long max(int a, long b) { return (a < b) ? b : long(a); }inline long min(long a, int b) { return (a < b) ?  a : long(b); } inline long max(long a, int b) { return (a < b) ? long(b) : a; }#endifinline void swap(long& a, long& b)  {  long t;  t = a; a = b; b = t; }inline void swap(int& a, int& b)  {  int t;  t = a; a = b; b = t; }inline void conv(int& x, int a) { x = a; }inline void conv(int& x, long a) { x = int(a); }inline void conv(int& x, float a) { x = int(NTL_SNS floor(double(a))); }inline void conv(int& x, double a) { x = int(NTL_SNS floor(a)); }inline int to_int(int a) { return a; }inline int to_int(long a) { return int(a); }inline int to_int(float a) { return int(NTL_SNS floor(double(a))); }inline int to_int(double a) { return int(NTL_SNS floor(a)); }inline void conv(long& x, int a) { x = a; }inline void conv(long& x, long a) { x = a; }inline void conv(long& x, float a) { x = long(NTL_SNS floor(double(a))); }inline void conv(long& x, double a) { x = long(NTL_SNS floor(a)); }inline long to_long(int a) { return a; }inline long to_long(long a) { return a; }inline long to_long(float a) { return long(NTL_SNS floor(double(a))); }inline long to_long(double a) { return long(NTL_SNS floor(a)); }inline void conv(float& x, int a) { x = float(a); }inline void conv(float& x, long a) { x = float(a); }inline void conv(float& x, float a) { x = a; }inline void conv(float& x, double a) { x = float(a); }inline float to_float(int a) { return float(a); }inline float to_float(long a) { return float(a); }inline float to_float(float a) { return a; }inline float to_float(double a) { return float(a); }inline void conv(double& x, int a) { x = double(a); }inline void conv(double& x, long a) { x = double(a); }inline void conv(double& x, float a) { x = double(a); }inline void conv(double& x, double a) { x = a; }inline double to_double(int a) { return double(a); }inline double to_double(long a) { return double(a); }inline double to_double(float a) { return double(a); }inline double to_double(double a) { return a; }long SkipWhiteSpace(NTL_SNS istream& s);void Error(const char *s);inline double GetTime() { return _ntl_GetTime(); }inline long IsFinite(double *p) { return _ntl_IsFinite(p); }inline void ForceToMem(double *p) { _ntl_ForceToMem(p); }void PrintTime(NTL_SNS ostream& s, double t);NTL_CLOSE_NNS#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -