Tree Data Interface DIGITS:D_FLOAT
DIGITS (X)

      F90 Inquiry. 
      
      The number of significant digits in the model representing 
                the same type as the argument. 
 
      Argument. X must be numeric. 
 
      Signals.  None. 
      Units...  None. 
      Form....  Integer scalar. 
      Result..  The number of non-sign bits in an integer or the number 
                of fraction bits in a real or complex number. 
 
      Example.  DIGITS(1.0) is 24 on the VAX. 
 
DIM (X,Y)

      F90 Numeric Elemental. 
      
      The difference X-Y if it is positive; otherwise, 
                zero. 
 
      Arguments X and Y must be integer or real. 
                Complex numbers are an error. 
 
      Signals.  Single signal or smaller data. 
      Units...  Single or common units, else bad. 
      Form....  Compatible form of X and Y. F90 says type of X. 
 
      Result..  X-Y if X>Y and zero otherwise. 
 
      Example.  DIM(-3.0,2.0) is 0.0. 
 
DIM_OF (A,[N])

      MDS/VMS Operation. 
      
      Get the dimension. 
 
      Arguments Optional: N. 
        A       VMS or MDS descriptor as below. 
        N       integer scalar from 0 to the number of dimension of a 
                signal. 
 
      Result..  A is searched for these: 
                DSC$K_CLASS_A, range of N-th lower and upper bounds. 
                DSC$K_CLASS_APD, range of N-th lower and upper bounds. 
                DSC$K_CLASS_CA, range of N-th lower and upper bounds. 
                DSC$K_DTYPE_DIMENSION, unchanged. 
                DSC$K_DTYPE_SIGNAL, the N-th dimension field. 
                Otherwise, an error. 
 
      Example.  DIM_OF([1,2,3]) is 0..2, the range from 0 to 2. 
 
DISPATCH_OF (A)

      MDS Operation. 
      
      Get the dispatch field. 
 
      Argument. Descriptor as below. 
 
      Result..  A is searched for these: 
                DSC$K_DTYPE_ACTION, the dispatch field. 
                DSC$K_DTYPE_DISPATCH, unchanged. 
                Otherwise, an error. 
 
DIVIDE (X,Y)

      Numeric Elemental. 
      
      The quotient of two numbers. 
      
      Usual Form        X / Y. 
      Function Form     DIVIDE(X,Y). 
 
      Arguments X and Y must be numeric. 
 
      Signals.  Single signal or smaller data. 
      Units...  X units with inverted Y units separated by a slash. 
      Form....  The compatible form of X and Y. 
 
      Result..  The quotient without remainder of X/Y. If the result is 
                real or complex there may be rounding. Integer division 
                truncates. Complex division is 
                CMPLX((RX*RY-IX*IY)/DEN,(RY*IX-RX*IY)/DEN) with 
                DEN=RY^2+RI^2, where RX=REAL(X), IX=AIMAG(X), etc. The 
                exponents are scaled to prevent overflow or underflow. 
      >>>>>>>>>WARNING, integer divide by zero is ignored. 
 
      Examples. 5/3 is 1. 
                5/BUILD_WITH_UNITS(3,"s") is BUILD_UNITS(1,"/s"). 
 
DO (TEST,STMT,...)

      CC Modified Statement. 
      
      Repeat until expression is false. 
      
      Required Usual Form. DO {STMT} WHILE (X);. 
      Function Form     DO(TEST,STMT...). May be syntatically invalid. 
 
      Arguments 
        STMT    statement list. The curly braces are required! 
        TEST    logical scalar. 
      >>>>>>Note that TEST is first argument of call form. 
      >>>>>>WARNING, multiple statements in call form are considered 
                to be in braces. 
 
      Result..  None. 
 
      Example.  DO { 
                        _J=_X[_J]; 
                } WHILE (_J);. 
 
DOT_PRODUCT (VECTOR_A,VECTOR_B)

      F90 Transformation. 
      
      Performs dot-product multiplication of numeric. 
                ((Non-F90, treats logicals as integers.)) 
 
      Arguments VECTOR_A and VECTOR_B must be numeric vectors. 
 
      Signals.  None. 
      Units...  Single or common units, else bad. 
      Form....  Compatible scalar. 
 
      Result..  For integer or real, result is SUM(VECTOR_A*VECTOR_B); 
                for complex, SUM(CONJG(VECTOR_A),VECTOR_B). 
                For zero elements the result is zero. 
 
      Example.  DOT_PRODUCT([1,2,3],[2,3,4]) is 20. 
 
DPROD (X,Y)

      F90 Modified Numeric Elemental. 
      
      Double precision product. 
 
      Arguments X and Y must be numeric except octaword or H floating. 
                For F90, they must be default real and result is double. 
 
      Signals.  Single signal or smaller data. 
      Units...  Same as for X * Y. 
      Form....  Twice the precision of the compatible form. 
 
      Result..  The product of X and Y with each converted to twice 
                their precision. 
 
      Examples. DPROD(3,4) is 12Q. DPROD(-3.0,2.0) is -6.0D0. 
 
DSCPTR (A,[N])

      MDS Operation. 
      
      Get a field of any class-R descriptor. 
 
      Arguments Optional: N. 
        A       any class-R or class-APD descriptor. 
        N       integer scalar from 0 to the number of pointers less 1. 
 
      Result..  The N-th descriptor of A for class R or the N-th list 
                element for class APD. 
                Descriptor data types (DSC$K_DTYPE_DSC) are removed. 
                Immediate at compilation for non-class-R. 
                Use DSCPTR for A without NID, PATH, or variable. 
                Use DSCPTR_OF for A including them. 
      >>>>>>>>>WARNING, the N-th element may not describe the N-th data value. 
 
      Example.  DSCPTRS(A+B,1) is B. 
 
      See also. ARG_OF for argument fields of some class-R descriptors 
                and specific xxx_OF routines for other fields. 
 
DSCPTR_OF (A,[N])

      MDS Operation. 
      
      Get a field of any class-R descriptor. 
 
      Arguments Optional: N. 
        A       any class-R or class-APD descriptor. 
        N       integer scalar from 0 to the number of pointers less 1. 
 
      Result..  The N-th descriptor of A for class R or the N-th list 
                element for class APD. 
                Descriptor data types (DSC$K_DTYPE_DSC) are removed. 
                Immediate at compilation for non-class-R. 
                Use DSCPTR for A without NID, PATH, or variable. 
                Use DSCPTR_OF for A including them. 
      >>>>>>>>>WARNING, the N-th element may not describe the N-th data value. 
 
      Example.  DSCPTR_OF(A+B,1) is B. 
 
      See also. ARG_OF for argument  

D_COMPLEX (A)

      Conversion Elemental. 
      
      Convert to D-precision floating Complex. 
 
      Argument. A must be numeric. 
  
      Signals.  Single signal or smaller data. 
      Units...  Single or common units, else bad. 
      Form....  D-precision complex. 
 
      Result..  If Y is absent and X is complex, the AIMAG(X) is used 
                for Y. If X and Y are present, the real parts of each 
                are used. 
                Immediate at compilation. 
      >>>>>>>>>WARNING, truncation does not cause an error. 
 
      Example.  D_COMPLEX(3,4.1) is CMPLX(3.0D0,4.1D0), approximately. 
 
D_FLOAT (A)

      Conversion Elemental. 
      
      Convert to D-precision floating real. 
 
      Argument. A must be numeric. 
 
      Signals.  Same as A. 
      Units...  Same as A. 
      Form....  D-precision real. 
 
      Result..  Integers, reals and the real part of complex numbers are 
                converted to D-precision reals. 
                Immediate at compilation. 
      >>>>>>>>>WARNING, truncation does not cause an error. 
 
      Example.  D_FLOAT(12), D_FLOAT(12.) D_FLOAT(12H0) are 12D0, 
                approximately.