Polaris: intrin.h Source File

intrin.h

Go to the documentation of this file.
00001 ///
00002 #ifndef _INTRIN_H
00003 #define _INTRIN_H
00004 ///
00005 #define G       GENERIC_TYPE,0
00006 #define IR      INT_OR_REAL_TYPES,0
00007 #define N       VOID_TYPE,0
00008 #define I1      INTEGER_TYPE,1
00009 #define I2      INTEGER_TYPE,2
00010 #define I4      INTEGER_TYPE,4
00011 #define I8      INTEGER_TYPE,8
00012 #define R4      REAL_TYPE,4
00013 #define R8      REAL_TYPE,8
00014 #define R16     REAL_TYPE,16
00015 #define C8      COMPLEX_TYPE,8
00016 #define C16     COMPLEX_TYPE,16
00017 #define L       LOGICAL_TYPE,4
00018 #define CH      CHARACTER_TYPE,0
00019 #define CH1     CHARACTER_TYPE,1
00020 ///
00021 #define NO_ARG  N,"",0
00022 ///
00023 static INTRIN_RECORD intrinsics[] = {
00024 ///
00025 ///
00026 ///  NAME, INTRIN_ID, AXED, R TYPE/LEN, R SPECIAL, R SCAL, # PARAMS, REQ PARAMS,
00027 ///      4 PARAMS[TYPE/LEN, KEY, SCAL], SPECIAL
00028 ///
00029 ///
00030 ///
00031 /// NAME = name of intrinsic
00032 ///   INTRIN_ID = Unique ID for the intrinsic function
00033 ///   AXED = 
00034 ///   R TYPE/LEN = Type and Length (defined macro) of returned value
00035 ///   R SPECIAL = Does the computation of the resulting type require 
00036 ///               special handling
00037 ///   R SCAL = The `scalarity' of the returned value 
00038 ///            (0 = scalar, 1 = array, 2 = either, 3 = special handling)
00039 ///            (2 indicates that the scalarity results from the scalarity 
00040 ///             of the arguments)
00041 ///   # PARAMS = Maxmimum number of parameters (0 = variable)
00042 ///   REQ PARAMS = Number of required parameters
00043 ///   4 PARAMS[  ] = Each of the following 3 values is repeated four times 
00044 ///                  for each parameter (if there are more parameters, the 
00045 ///                  final special flag is set).
00046 ///                  TYPE/LEN = Type and length required of parameter
00047 ///                  KEY = Keyword for parameter
00048 ///                  SCAL = Scalarity of paramter (0 = scalar, 1 = array, etc...)
00049 ///                        (NO_ARG indicates unused parameter)
00050 ///   SPECIAL = Additional special handling is required for intrinsic
00051 ///
00052 ///
00053 ///  NAME, AXED, R TYPE/LEN, R SPECIAL, R SCAL, # PARAMS, REQ PARAMS,
00054 ///      4 PARAMS[TYPE/LEN, KEY, SCAL], SPECIAL
00055 ///
00056 ///
00057 {"<ALPHA>",   F_ALPHA, 0,  G, 1, 2, 0, 1, G,   0, 2, G,0,2, G,0,2, G,0,2, 0},
00058 {"<GA>",      F_GA, 0,  G, 1, 2, 0, 1, G,   0, 2, G,0,2, G,0,2, G,0,2, 0},
00059 {"<GMU>",     F_GMU, 0,  G, 1, 2, 2, 1, G,   0, 2, G,0,2, G,0,2, NO_ARG, 0},
00060 {"<MU>",      F_MU, 0,  G, 1, 2, 2, 1, G,   0, 2, G,0,2, G,0,2, NO_ARG, 0},
00061 {"<PHI>",     F_PHI, 0,  G, 1, 2, 0, 1, G,   0, 2, G,0,2, G,0,2, G,0,2, 0},
00062 {"ABS",       F_ABS, 0,  G, 1, 2, 1, 1, G, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00063 {"ACHAR",     F_ACHAR, 0, CH, 0, 2, 1, 1, I4, "I", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00064 {"ACOS",      F_ACOS, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00065 {"ADJUSTL",   F_ADJUSTL, 0, CH, 0, 2, 1, 1, CH, "STRING", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00066 {"ADJUSTR",   F_ADJUSTR, 0, CH, 0, 2, 1, 1, CH, "STRING", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00067 {"AIMAG",     F_AIMAG, 0, R4, 0, 2, 1, 1, C8, "Z", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00068 {"AIMAX0",    F_AIMAX0, 0, I2, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00069 {"AIMIN0",    F_AIMIN0, 0, I2, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00070 {"AINT",      F_AINT, 0, R4, 0, 2, 2, 1, R4, "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00071 {"AJMAX0",    F_AJMAX0, 0, I2, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00072 {"AJMIN0",    F_AJMIN0, 0, I2, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00073 {"ALL",       F_ALL, 0,  L, 0, 3, 2, 1, L, "MASK", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00074 {"ALLOCATED", F_ALLOCATED, 0,  L, 0, 0, 1, 1, G, "ARRAY", 1, NO_ARG, NO_ARG, NO_ARG, 0},
00075 {"ALOG",      F_ALOG, 0, R4, 0, 0, 1, 1, R4, "X", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00076 {"ALOG10",    F_ALOG10, 0, R4, 0, 0, 1, 1, R4, "X", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00077 {"AMAX0",     F_AMAX0, 0, R4, 0, 2, 0, 2, I4, "A1", 0, I4, "A2", 0, I4, "A3", 0, I4, "A4", 0, 0},
00078 {"AMAX1",     F_AMAX1, 0, R4, 0, 2, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00079 {"AMIN0",     F_AMIN0, 0, R4, 0, 2, 0, 2, I4, "A1", 0, I4, "A2", 0, I4, "A3", 0, I4, "A4", 0, 0},
00080 {"AMIN1",     F_AMIN1, 0, R4, 0, 2, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00081 {"AMOD",      F_AMOD, 0, R4, 0, 2, 2, 2, R4, "A", 2, R4, "P", 2, NO_ARG, NO_ARG, 0},
00082 {"ANINT",     F_ANINT, 0, R4, 0, 2, 2, 1, R4, "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00083 {"ANY",       F_ANY, 0,  L, 0, 3, 2, 1, L, "MASK", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00084 {"ASIN",      F_ASIN, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00085 {"ASSOCIATED",F_ASSOCIATED, 0,  L, 0, 0, 2, 1, G, "POINTER", 0, G, "TARGET", 0, NO_ARG, NO_ARG, 0},
00086 {"ATAN",      F_ATAN, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00087 {"ATAN2",     F_ATAN2, 0, R4, 0, 2, 2, 2, R4, "Y", 2, R4, "X", 2, NO_ARG, NO_ARG, 0},
00088 {"BIT_SIZE",  F_BIT_SIZE, 0, I4, 0, 0, 1, 1, I4, "I", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00089 {"BTEST",     F_BTEST, 0,  L, 0, 2, 2, 2, I4, "I", 2, I4, "POS", 2, NO_ARG, NO_ARG, 0},
00090 {"CABS",      F_CABS, 0, R4, 0, 2, 1, 1, C8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00091 {"CCOS",      F_CCOS, 0, C8, 0, 2, 1, 1, C8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00092 {"CDABS",     F_CDABS, 0, R8, 0, 2, 1, 1, C16, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00093 {"CDCOS",     F_CDCOS, 0, C16, 0, 2, 1, 1, C16, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00094 {"CDEXP",     F_CDEXP, 0, C16, 0, 2, 1, 1, C16, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00095 {"CDLOG",     F_CDLOG, 0, C16, 0, 2, 1, 1, C16, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00096 {"CDSIN",     F_CDSIN, 0, C16, 0, 2, 1, 1, C16, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00097 {"CDSQRT",    F_CDSQRT, 0, C16, 0, 2, 1, 1, C16, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00098 {"CEILING",   F_CEILING, 0, I4, 0, 2, 1, 1, R4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00099 {"CEXP",      F_CEXP, 0, C8, 0, 2, 1, 1, C8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00100 {"CHAR",      F_CHAR, 0, CH1,0, 2, 2, 1, I4, "I", 2, I4, "I", 0, NO_ARG, NO_ARG, 0},
00101 {"CLOG",      F_CLOG, 0, C8, 0, 2, 1, 1, C8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00102 {"CMPLX",     F_CMPLX, 0, C8, 0, 2, 3, 1, G, "X", 2, IR, "Y", 2, I4, "KIND", 0, NO_ARG, 0},
00103 {"CONJG",     F_CONJG, 0, C8, 0, 2, 1, 1, C8, "Z", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00104 {"COS",       F_COS, 0,  G, 0, 2, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00105 {"COSH",      F_COSH, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00106 {"COUNT",     F_COUNT, 0, I4, 0, 3, 2, 1, L, "MASK", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00107 {"CSHIFT",    F_CSHIFT, 0,  G, 0, 1, 3, 3, G, "ARRAY", 1, I4, "DIM", 0, I4, "SHIFT", 2, NO_ARG, 0},
00108 {"CSIN",      F_CSIN, 0, C8, 0, 2, 1, 1, C8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00109 {"CSQRT",     F_CSQRT, 0, C8, 0, 2, 1, 1, C8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00110 {"DABS",      F_DABS, 0, R8, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00111 {"DACOS",     F_DACOS, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00112 {"DASIN",     F_DASIN, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00113 {"DATAN",     F_DATAN, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00114 {"DATAN2",    F_DATAN2, 0, R8, 0, 2, 2, 2, R8, "Y", 2, R8, "X", 2, NO_ARG, NO_ARG, 0},
00115 {"DATE_AND_TIME",F_DATE_AND_TIME, 0,N,0, 3, 10,1, NO_ARG, NO_ARG, NO_ARG, NO_ARG, 1},
00116 {"DBLE",      F_DBLE, 0, R8, 0, 2, 1, 1, G, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00117 {"DCMPLX",    F_DCMPLX, 0, C16, 0, 2, 3, 1, G, "X", 2, IR, "Y", 2, I4, "KIND", 0, NO_ARG, 0},
00118 {"DCONJG",    F_DCONJG, 0, C16, 0, 2, 1, 1, C16, "Z", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00119 {"DCOS",      F_DCOS, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00120 {"DCOSH",     F_DCOSH, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00121 {"DDIM",      F_DDIM, 0, R8, 0, 2, 2, 2, R8, "X", 2, R8, "Y", 2, NO_ARG, NO_ARG, 0},
00122 {"DEXP",      F_DEXP, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00123 {"DFLOAT",    F_DFLOAT, 0, R8, 0, 2, 1, 1, I4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00124 {"DFLOTI",    F_DFLOTI, 0, R8, 0, 2, 1, 1, I2, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00125 {"DFLOTJ",    F_DFLOTJ, 0, R8, 0, 2, 1, 1, I4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00126 {"DIGITS",    F_DIGITS, 0, I4, 0, 0, 1, 1, IR, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00127 {"DIM",       F_DIM, 0, IR, 0, 2, 2, 2, IR, "X", 2, IR, "Y", 2, NO_ARG, NO_ARG, 0},
00128 {"DIMAG",     F_DIMAG, 0, R8, 0, 2, 1, 1, C16,"Z", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00129 {"DINT",      F_DINT, 0, R8, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00130 {"DLOG",      F_DLOG, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00131 {"DLOG10",    F_DLOG10, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00132 {"DMAX1",     F_DMAX1, 0, R8, 0, 0, 0, 2, R8, "A1", 0, R8, "A2", 0, R8, "A3", 0, R8, "A4", 0, 0},
00133 {"DMIN1",     F_DMIN1, 0, R8, 0, 0, 0, 2, R8, "A1", 0, R8, "A2", 0, R8, "A3", 0, R8, "A4", 0, 0},
00134 {"DMOD",      F_DMOD, 0, R8, 0, 2, 2, 2, R8, "A", 2, R8, "P", 2, NO_ARG, NO_ARG, 0},
00135 {"DNINT",     F_DNINT, 0, R8, 0, 2, 2, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00136 {"DOTPRODUCT",F_DOTPRODUCT, 0, G,  1, 0, 2, 2, G, "VECTOR_A", 1, G, "VECTOR_B", 1, NO_ARG, NO_ARG, 0},
00137 {"DPROD",     F_DPROD, 0, R8, 0, 2, 2, 2, R4, "X", 2, R4, "Y", 2, NO_ARG, NO_ARG, 0},
00138 {"DREAL",     F_DREAL, 0, R8, 0, 2, 2, 1, G,  "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00139 {"DSIGN",     F_DSIGN, 0, R8, 0, 2, 2, 2, R8, "A", 2, R8, "B", 2, NO_ARG, NO_ARG, 0},
00140 {"DSIN",      F_DSIN, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00141 {"DSINH",     F_DSINH, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00142 {"DSQRT",     F_DSQRT, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00143 {"DTAN",      F_DTAN, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00144 {"DTANH",     F_DTANH, 0, R8, 0, 2, 1, 1, R8, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00145 {"EOSHIFT",   F_EOSHIFT, 0, G,  0, 1, 4, 3, G, "ARRAY", 1, I4, "DIM", 0, I4, "SHIFT", 2, G, "BOUNDARY", 2, 0},
00146 {"EPSILON",   F_EPSILON, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00147 {"EXP",       F_EXP, 0, G,  0, 2, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00148 {"EXPONENT",  F_EXPONENT, 0, I4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00149 {"FLOAT",     F_FLOAT, 0, R4, 0, 2, 1, 1, I4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00150 {"FLOOR",     F_FLOOR, 0, I4, 0, 2, 1, 1, R4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00151 {"FRACTION",  F_FRACTION, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00152 {"HUGE",      F_HUGE, 0, IR, 0, 0, 1, 1, IR, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00153 {"IABS",      F_IABS, 0, I4, 0, 2, 1, 1, I4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00154 {"IACHAR",    F_IACHAR, 0, I4, 0, 2, 1, 1, CH, "C", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00155 {"IAND",      F_IAND, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "J", 2, NO_ARG, NO_ARG, 0},
00156 {"IBCLR",     F_IBCLR, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "POS", 2, NO_ARG, NO_ARG, 0},
00157 {"IBITS",     F_IBITS, 0, I4, 0, 2, 3, 3, I4, "I", 2, I4, "POS", 2, I4, "LEN", 2, NO_ARG, 0},
00158 {"IBSET",     F_IBSET, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "POS", 2, NO_ARG, NO_ARG, 0},
00159 {"ICHAR",     F_ICHAR, 0, I4, 0, 2, 1, 1, CH, "C", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00160 {"IDIM",      F_IDIM, 0, I4, 0, 2, 2, 2, I4, "X", 2, I4, "Y", 2, NO_ARG, NO_ARG, 0},
00161 {"IDINT",     F_IDINT, 0, I4, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00162 {"IDNINT",    F_IDNINT, 0, I4, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00163 {"IEOR",      F_IEOR, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "J", 2, NO_ARG, NO_ARG, 0},
00164 {"IFIX",      F_IFIX, 0, I4, 0, 2, 1, 1, R4, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00165 {"IMAG",      F_IMAG, 0,  G, 0, 2, 1, 1, G,  "Z", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00166 {"INDEX",     F_INDEX, 0, I4, 0, 2, 3, 2, CH, "STRING", 2, CH, "SUBSTRING", 2, L, "BACK", 2, NO_ARG, 0},
00167 {"INT",       F_INT, 0, I4, 0, 2, 2, 1, G,  "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00168 {"IOR",       F_IOR, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "J", 2, NO_ARG, NO_ARG, 0},
00169 {"ISHFT",     F_ISHFT, 0, I4, 0, 2, 2, 2, I4, "I", 2, I4, "SHIFT", 2, NO_ARG, NO_ARG, 0},
00170 {"ISHFTC",    F_ISHFTC, 0, I4, 0, 2, 3, 2, I4, "I", 2, I4, "SHIFT", 2, I4, "SIZE", 2, NO_ARG, 0},
00171 {"ISIGN",     F_ISIGN, 0, I4, 0, 2, 2, 2, I4, "A", 2, I4, "B", 2, NO_ARG, NO_ARG, 0},
00172 {"JIDINT",    F_JIDINT, 0, I4, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00173 {"KIND",      F_KIND, 0, I4, 0, 0, 1, 1, G,  "X", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00174 {"LBOUND",    F_LBOUND, 0, I4, 0, 3, 2, 1, G, "ARRAY", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00175 {"LEN",       F_LEN, 0, I4, 0, 0, 1, 1, CH, "STRING", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00176 {"LEN_TRIM",  F_LEN_TRIM, 0, I4, 0, 2, 1, 1, CH, "STRING", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00177 {"LGE",       F_LGE, 0, L, 0, 2, 2, 2, CH, "STRING_A", 2, CH, "STRING_B", 2, NO_ARG, NO_ARG, 0},
00178 {"LGT",       F_LGT, 0, L, 0, 2, 2, 2, CH, "STRING_A", 2, CH, "STRING_B", 2, NO_ARG, NO_ARG, 0},
00179 {"LLE",       F_LLE, 0, L, 0, 2, 2, 2, CH, "STRING_A", 2, CH, "STRING_B", 2, NO_ARG, NO_ARG, 0},
00180 {"LLT",       F_LLT, 0, L, 0, 2, 2, 2, CH, "STRING_A", 2, CH, "STRING_B", 2, NO_ARG, NO_ARG, 0},
00181 {"LOC",       F_LOC, 0, G,  0, 0, 1, 1, G, "POINTER",2,NO_ARG, NO_ARG, NO_ARG, 0},
00182 {"LOG",       F_LOG, 0, G,  0, 2, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00183 {"LOG10",     F_LOG10, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00184 {"LOGICAL",   F_LOGICAL, 0, L,  0, 2, 2, 1, L, "L", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00185 {"MATMUL",    F_MATMUL, 0, G,  1, 3, 2, 2, G, "MATRIX_A", 1, G, "MATRIX_B", 1, NO_ARG, NO_ARG, 0},
00186 {"MAX",       F_MAX, 0, IR, 0, 0, 0, 2, IR, "A1", 0, IR, "A2", 0, IR, "A3", 0, IR, "A4", 0, 0},
00187 {"MAX0",      F_MAX0, 0, I4, 0, 0, 0, 2, I4, "A1", 0, I4, "A2", 0, I4, "A3", 0, I4, "A4", 0, 0},
00188 {"MAX1",      F_MAX1, 0, I4, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00189 {"MAXEXPONENT",F_MAXEXPONENT, 0,I4, 0, 0, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00190 {"MAXLOC",    F_MAXLOC, 0, I4, 0, 3, 2, 1, IR, "ARRAY", 1, L, "MASK", 2, NO_ARG, NO_ARG, 0},
00191 {"MAXVAL",    F_MAXVAL, 0, IR, 0, 3, 3, 2, IR, "ARRAY", 1, I4, "DIM", 0, L, "MASK", 2, NO_ARG, 0},
00192 {"MERGE",     F_MERGE, 0, G,  0, 2, 3, 3, G, "TSOURCE", 2, G, "FSOURCE", 2, L, "MASK", 2, NO_ARG, 0},
00193 {"MIN",       F_MIN, 0, IR, 0, 0, 0, 2, IR, "A1", 0, IR, "A2", 0, IR, "A3", 0, IR, "A4", 0, 0},
00194 {"MIN0",      F_MIN0, 0, I4, 0, 0, 0, 2, I4, "A1", 0, I4, "A2", 0, I4, "A3", 0, I4, "A4", 0, 0},
00195 {"MIN1",      F_MIN1, 0, I4, 0, 0, 0, 2, R4, "A1", 0, R4, "A2", 0, R4, "A3", 0, R4, "A4", 0, 0},
00196 {"MINEXPONENT",F_MINEXPONENT, 0,I4, 0, 0, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00197 {"MINLOC",    F_MINLOC, 0, I4, 0, 3, 2, 1, IR, "ARRAY", 1, L, "MASK", 2, NO_ARG, NO_ARG, 0},
00198 {"MINVAL",    F_MINVAL, 0, IR, 0, 3, 3, 2, IR, "ARRAY", 1, I4, "DIM", 0, L, "MASK", 2, NO_ARG, 0},
00199 {"MOD",       F_MOD, 0, IR, 0, 2, 2, 2, IR, "A", 2, IR, "P", 2, NO_ARG, NO_ARG, 0},
00200 {"MODULO",    F_MODULO, 0, IR, 0, 2, 2, 2, IR, "A", 2, IR, "P", 2, NO_ARG, NO_ARG, 0},
00201 {"MVBITS",    F_MVBITS, 0, N,  0, 3, 5, 5, I4, "FROM", 0, I4, "FROMPOS", 0, I4, "LEN", 0, I4, "TO", 0, 1},
00202 {"MY_PE",     F_MY_PE, 0, I4, 0, 0, 0, 0, NO_ARG, NO_ARG, NO_ARG, NO_ARG, 0},  ///_ for T3D
00203 {"NEAREST",   F_NEAREST, 0, R4, 0, 2, 2, 2, R4, "X", 2, R4, "S", 2, NO_ARG, NO_ARG, 0},
00204 {"NINT",      F_NINT, 0, I4, 0, 2, 2, 1, R4, "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00205 {"NOT",       F_NOT, 0, I4, 0, 2, 1, 1, I4, "I", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00206 {"PACK",      F_PACK, 0, G,  0, 3, 3, 2, G, "ARRAY", 1, L, "MASK", 2, G, "VECTOR", 1, NO_ARG, 0},
00207 {"PRECISION", F_PRECISION, 0, I4, 0, 0, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00208 {"PRESENT",   F_PRESENT, 0, L,  0, 0, 1, 1, G, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00209 {"PRODUCT",   F_PRODUCT, 0, G,  0, 3, 3, 1, G, "ARRAY", 1, I4, "DIM", 0, L, "MASK", 2, NO_ARG, 0},
00210 {"RADIX",     F_RADIX, 0, I4, 0, 0, 1, 1, IR, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00211 {"RANDOM",    F_RANDOM, 0, N,  0, 3, 1, 1, R4, "HARVEST", 2, NO_ARG, NO_ARG, NO_ARG, 1},
00212 {"RANDOMSEED",F_RANDOMSEED, 0, N,  0, 3, 3, 0, I4, "SIZE", 0, I4, "PUT", 1, I4, "GET", 1, NO_ARG, 1},
00213 {"RANGE",     F_RANGE, 0, I4, 0, 0, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00214 {"REAL",      F_REAL, 0, R4, 0, 2, 2, 1, G, "A", 2, I4, "KIND", 0, NO_ARG, NO_ARG, 0},
00215 {"REPEAT",    F_REPEAT, 0, CH, 0, 0, 2, 2, CH, "STRING", 0, I4, "NCOPIES", 0, NO_ARG, NO_ARG, 0},
00216 {"RESHAPE",   F_RESHAPE, 0, G,  1, 1, 4, 2, I4, "SHAPE", 1, G, "SOURCE", 1, G, "PAD", 1, I4, "ORDER", 1, 0},
00217 {"RRSPACING", F_RRSPACING, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00218 {"SCALE",     F_SCALE, 0, R4, 0, 2, 2, 2, R4, "X", 2, I4, "I", 2, NO_ARG, NO_ARG, 0},
00219 {"SCAN",      F_SCAN, 0, I4, 0, 2, 3, 2, CH, "STRING", 2, CH, "SET", 2, L, "BACK", 2, NO_ARG, 0},
00220 {"SELECTED_INT_KIND", F_SELECTED_INT_KIND, 0, I4, 0, 0, 1, 1, I4, "R", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00221 {"SELECTED_REAL_KIND", F_SELECTED_REAL_KIND, 0, I4, 0, 0, 2, 0, I4, "P", 0, I4, "R", 0, NO_ARG, NO_ARG, 0},
00222 {"SETEXPONENT",F_SETEXPONENT, 0,R4, 0, 2, 2, 2, R4, "X", 2, I4, "I", 2,  NO_ARG, NO_ARG, 0},
00223 {"SHAPE",     F_SHAPE, 0, I4, 0, 1, 1, 1, G, "SOURCE", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00224 {"SHFREE",    F_SHFREE, 0,  N, 1, 3, 1, 1,  G,"PTR",0,  NO_ARG, NO_ARG, NO_ARG, 1},    ///_ T3D subroutine
00225 {"SHMALLOC",  F_SHMALLOC, 0,  N, 1, 3, 3, 2,  G,"PTR",0,  I4,"ISTAT",0,  I4,"LEN",0, NO_ARG, 1},   ///_ "
00226 {"SIGN",      F_SIGN, 0, IR, 0, 2, 2, 2, IR, "A", 2, IR, "B", 2, NO_ARG, NO_ARG, 0},
00227 {"SIN",       F_SIN, 0, G,  0, 2, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00228 {"SINH",      F_SINH, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00229 {"SIZE",      F_SIZE, 0, I4, 0, 0, 2, 1, G, "ARRAY", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00230 {"SNGL",      F_SNGL, 0, R4, 0, 2, 1, 1, R8, "A", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00231 {"SPACING",   F_SPACING, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00232 {"SPREAD",    F_SPREAD, 0, G,  0, 1, 3, 3, G, "SOURCE", 2, I4, "DIM", 0, I4, "NCOPIES", 0, NO_ARG, 0},
00233 {"SQRT",      F_SQRT, 0, G,  0, 2, 1, 1, G, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00234 {"SUM",       F_SUM, 0, G,  0, 3, 3, 2, G, "ARRAY", 1, I4, "DIM", 0, L, "MASK", 2, NO_ARG, 0},
00235 {"SYSTEM_CLOCK",F_SYSTEM_CLOCK, 0,N, 0, 3, 3, 0, I4, "COUNT", 0, I4, "COUNT_RATE", 0, I4, "COUNT_MAX", 0, NO_ARG, 1},
00236 {"TAN",       F_TAN, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00237 {"TANH",      F_TANH, 0, R4, 0, 2, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00238 {"TINY",      F_TINY, 0, R4, 0, 0, 1, 1, R4, "X", 2, NO_ARG, NO_ARG, NO_ARG, 0},
00239 {"TRANSFER",  F_TRANSFER, 0, G,  1, 2, 3, 2, G, "SOURCE", 2, G, "MOLD", 2, I4, "SIZE", 0, NO_ARG, 0},
00240 {"TRANSPOSE", F_TRANSPOSE, 0, G,  0, 1, 1, 1, G, "MATRIX", 1, NO_ARG, NO_ARG, NO_ARG, 0},
00241 {"TRIM",      F_TRIM, 0, CH, 0, 0, 1, 1, CH, "STRING", 0, NO_ARG, NO_ARG, NO_ARG, 0},
00242 {"UNBOUND",   F_UNBOUND, 0, I4, 0, 3, 2, 1, G, "ARRAY", 1, I4, "DIM", 0, NO_ARG, NO_ARG, 0},
00243 {"UNPACK",    F_UNPACK, 0, G,  0, 1, 3, 3, G, "VECTOR", 1, L, "MASK", 1, G, "FIELD", 2, NO_ARG, 0},
00244 {"VERIFY",    F_VERIFY, 0, I4, 0, 2, 3, 3, CH, "STRING", 2, CH, "SET", 2, L, "BACK", 2, NO_ARG, 0},
00245 ///
00246 ///  NAME, AXED, R TYPE/LEN, R SPECIAL, R SCAL, # PARAMS, REQ PARAMS,
00247 ///      4 PARAMS[TYPE/LEN, KEY, SCAL], SPECIAL
00248 ///
00249 /// TO DO: handle global special funs: the 4 subroutines
00250 ///
00251 };
00252 ///
00253 /// Remove all of the temporary 'type' definitions
00254 ///
00255 #undef  G
00256 #undef  IR
00257 #undef  N
00258 #undef  I1
00259 #undef  I2
00260 #undef  I4
00261 #undef  I8
00262 #undef  R4
00263 #undef  R8
00264 #undef  R16
00265 #undef  C8
00266 #undef  C16
00267 #undef  L
00268 #undef  CH
00269 ///
00270 #define INTRIN_LEN (sizeof(intrinsics)/sizeof(INTRIN_RECORD))
00271 ///
00272 #endif
 © 1995-2005 University of Illinois, Urbana-Champaign. All rights reserved.  Fri Mar 25 23:05:55 2005