?? tools.h
字號(hào):
#ifndef NTL_tools__H
#define NTL_tools__H
#include <NTL/ctools.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 0
// This is for debugging purposes only.
namespace foo_bar {
class ostream;
class istream;
typedef unsigned int size_t;
double floor(double);
float floor(float);
}
#endif
#if (!defined(NTL_CXX_ONLY))
extern "C"
#endif
double _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_NNS
struct 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_MAX
inline 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; }
#endif
inline 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)
{ unsigned y = (unsigned) a; x = NTL_UINT_TO_INT(y); }
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 void conv(int& x, unsigned a)
{ x = NTL_UINT_TO_INT(a); }
inline void conv(int& x, unsigned long a)
{ unsigned y = (unsigned) a; x = NTL_UINT_TO_INT(y); }
inline int to_int(int a) { return a; }
inline int to_int(long a)
{ unsigned y = (unsigned) a; return NTL_UINT_TO_INT(y); }
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 int to_int(unsigned a)
{ return NTL_UINT_TO_INT(a); }
inline int to_int(unsigned long a)
{ unsigned y = (unsigned) a; return NTL_UINT_TO_INT(y); }
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 void conv(long& x, unsigned a)
{ unsigned long y = a; x = NTL_ULONG_TO_LONG(y); }
inline void conv(long& x, unsigned long a)
{ x = NTL_ULONG_TO_LONG(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 long to_long(unsigned a)
{ unsigned long y = a; return NTL_ULONG_TO_LONG(y); }
inline long to_long(unsigned long a)
{ return NTL_ULONG_TO_LONG(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, unsigned a) { x = float(a); }
inline void conv(float& x, unsigned 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(unsigned a) { return float(a); }
inline float to_float(unsigned 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, unsigned a) { x = double(a); }
inline void conv(double& x, unsigned 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(unsigned a) { return double(a); }
inline double to_double(unsigned 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);
long IsWhiteSpace(long c);
long CharToIntVal(long c);
char IntValToChar(long a);
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -