dshiftr(3I)

_dshiftr, DSHIFTR - Performs a double-object right shift

As shipped in IRIX 6.5.15. Last changed in IRIX 6.5.5.

NAME
     _dshiftr, DSHIFTR - Performs a double-object right shift

SYNOPSIS
     C/C++:

     #include <intrinsics.h>
     long _dshiftr (long i, long j, long k);

     Fortran:

     DSHIFTR ([I=]i, [J=]j, [K=]k)

IMPLEMENTATION
     C/C++:  UNICOS and UNICOS/mk systems

     Fortran:  UNICOS, UNICOS/mk, and IRIX systems

     CF90, MIPSpro 7 Fortran 90

STANDARDS
     C/C++ extension

     Fortran extension

DESCRIPTION
     The _dshiftr and DSHIFTR functions perform a double-object right
     shift.  They return a single object.

     This result is derived from two arguments, i and j.  The arguments are
     as follows:

     i         The upper bits of the double object.  Must be of type
               integer.

     j         The lower bits of the double object.  Must be of the same
               type and size as i.

     k         The number of bits to be shifted.  Must be of type integer.

     The _dshiftr and DSHIFTR functions return a value generated by a right
     double-shift of the rightmost k bits of i into the leftmost k bits of
     j.  If both the i and j arguments specify the same word in memory, a
     circular shift occurs.  The value of k must be in the range of 0
     through 64 for _dshiftr.

NOTES
   C/C++
     Because _dshiftr is an intrinsic function, no externally visible
     library function is available for it.  The compiler generates inline
     code to produce the result.

   Fortran
     On UNICOS systems, i and j are 64-bit objects.  On UNICOS/mk systems,
     i and j can be 32- or 64-bit objects.  On IRIX systems, i and j can be
     8-, 16-, 32-, or 64-bit objects.

     When shifting 64-bit quantities, i makes up bits 64 through 127 of the
     double object.  The function result is the 64-bit string beginning
     with bit 64-k; that is, its rightmost bit is k bits from the double
     object's right end.  The value of k must be 0 <= k <= 64.

     When shifting 32-bit quantities, i makes up bits 32 through 63 of the
     double object.  The function result is the 32-bit string beginning
     with bit 32-k; that is, its rightmost bit is k bits from the double
     object's right end.  The value of k must be 0 <= k <= 32.

     When shifting 16-bit quantities, i makes up bits 16 through 31 of the
     double object.  The function result is the 16-bit string beginning
     with bit 16-k; that is, its rightmost bit is k bits from the double
     object's right end.  The value of k must be 0 <= k <= 16.

     When shifting 8-bit quantities, i makes up bits 8 through 15 of the
     double object.  The function result is the 8-bit string beginning with
     bit 8-k; that is, its rightmost bit is k bits from the double object's
     right end.  The value of k must be 0 <= k <= 8.

     Arguments are not altered in their original storage unless the result
     represents the same address as either i or j, as in the Fortran
     assignment M = DSHIFTR(M, N, 5).

     For more information on storage units, see the Fortran Language
     Reference Manual, Volume 3.

     DSHIFTR is an elemental function.  The name of this intrinsic cannot
     be passed as an argument.

RETURN VALUES
     _dshiftr returns a 64-bit integer result.

     DSHIFTR returns a typeless result on UNICOS and UNICOS/mk systems and
     an integer result on IRIX systems.  The size of the result is the size
     of the arguments i and j.

EXAMPLES
     The following figure shows a shift of two 64-bit quantities:

                    Double word shifts right by k bits -->

           127        i             64 63        j              0
          |___________________________|__________________________|
                      |--------result----------|--------k--------|

SEE ALSO
     A complete list of C/C++ intrinsic functions available on UNICOS and
     UNICOS/mk systems is in the Cray C/C++ Reference Manual.

     Fortran Language Reference Manual, Volume 3

     Intrinsic Procedures Reference Manual for the printed version of this
     man page.