00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <FPC.H>
00028
00029
00030
00031 const int FPC::normal_float_order[] = { 1, 2, 3, 4 };
00032 const int FPC::reverse_float_order[] = { 4, 3, 2, 1 };
00033 const int FPC::reverse_float_order_2[] = { 2, 1, 4, 3 };
00034 const int FPC::normal_double_order[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
00035 const int FPC::reverse_double_order[] = { 8, 7, 6, 5, 4, 3, 2, 1 };
00036 const int FPC::reverse_double_order_2[] = { 2, 1, 4, 3, 6, 5, 8, 7 };
00037 const int FPC::cray_float_order[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
00038
00039
00040
00041
00042 const long FPC::ieee_float[] = { 32L, 8L, 23L, 0L, 1L, 9L, 0L, 0x7FL };
00043 const long FPC::ieee_double[] = { 64L, 11L, 52L, 0L, 1L, 12L, 0L, 0x3FFL };
00044 const long FPC::cray_float[] = { 64L, 15L, 48L, 0L, 1L, 16L, 1L, 0x4000L };
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 const
00055 IntDescriptor&
00056 FPC::NativeLongDescriptor ()
00057 {
00058 #if defined(__alpha) || defined(__i486__) || defined(WIN32) || defined(i386) || defined(__i386__) || defined(__x86_64__) || defined(x86_64)
00059 static const IntDescriptor nld(sizeof(long), IntDescriptor::ReverseOrder);
00060 #endif
00061
00062 #ifdef _CRAY1
00063 static const IntDescriptor nld(sizeof(long), IntDescriptor::NormalOrder);
00064 #endif
00065
00066 #if defined(__sgi) || defined(__sun) || defined(_AIX) || \
00067 defined(_CRAYT3E) || defined(__hpux)
00068 #if !(defined(__x86_64__) || \
00069 defined(x86_64) || \
00070 defined(__i486__) || \
00071 defined(i386) || \
00072 defined(__i386__))
00073 static const IntDescriptor nld(sizeof(long), IntDescriptor::NormalOrder);
00074 #endif
00075 #endif
00076
00077 return nld;
00078 }
00079
00080 const
00081 RealDescriptor&
00082 FPC::NativeRealDescriptor ()
00083 {
00084 #if defined(__alpha) || defined(__i486__) || defined(WIN32) || defined(i386) || defined(__i386__) || defined(__x86_64__) || defined(x86_64)
00085 #ifdef BL_USE_FLOAT
00086 static const RealDescriptor nrd(ieee_float, reverse_float_order, 4);
00087 #else
00088 static const RealDescriptor nrd(ieee_double, reverse_double_order, 8);
00089 #endif
00090 #endif
00091
00092 #ifdef _CRAY1
00093 static const RealDescriptor nrd(cray_float, cray_float_order, 8);
00094 #endif
00095
00096 #if defined(__sgi) || \
00097 defined(__sun) || \
00098 defined(_AIX) || \
00099 defined(_CRAYT3E) || \
00100 defined(__hpux)
00101 #if !(defined(__x86_64__) || \
00102 defined(x86_64) || \
00103 defined(__i486__) || \
00104 defined(i386) || \
00105 defined(__i386__))
00106
00107 #ifdef BL_USE_FLOAT
00108 static const RealDescriptor nrd(ieee_float, normal_float_order, 4);
00109 #else
00110 static const RealDescriptor nrd(ieee_double, normal_double_order, 8);
00111 #endif
00112
00113 #endif
00114 #endif
00115
00116 return nrd;
00117 }
00118
00119 const
00120 RealDescriptor&
00121 FPC::CrayRealDescriptor ()
00122 {
00123 static const RealDescriptor crd(cray_float, cray_float_order, 8);
00124 return crd;
00125 }
00126
00127 const
00128 RealDescriptor&
00129 FPC::Ieee32NormalRealDescriptor ()
00130 {
00131 static const RealDescriptor i32rd(ieee_float, normal_float_order, 4);
00132 return i32rd;
00133 }
00134
00135 const
00136 RealDescriptor&
00137 FPC::Ieee64NormalRealDescriptor ()
00138 {
00139 static const RealDescriptor i64rd(ieee_double, normal_double_order, 8);
00140 return i64rd;
00141 }
00142
00143
00144
00145
00146
00147 #if !(defined(__alpha) || \
00148 defined(_CRAY1) || \
00149 defined(_CRAYT3E) || \
00150 defined(__sgi) || \
00151 defined(__sun) || \
00152 defined(__x86_64__) || \
00153 defined(x86_64) || \
00154 defined(__i486__) || \
00155 defined(i386) || \
00156 defined(__i386__) || \
00157 defined(__hpux) || \
00158 defined(_MSC_VER) || \
00159 defined(_AIX))
00160 #error We do not yet support FAB I/O on this machine
00161 #endif
00162