Open MPI logo

MPI_Type_create_f90_complex(3) man page (version 1.3.4)

  |   Home   |   Support   |   FAQ   |  

« Return to documentation listing



NAME

       MPI_Type_create_f90_complex - Returns a bounded MPI complex datatype

SYNTAX


C Syntax

       #include <mpi.h>
       int MPI_Type_create_f90_complex(int p, int r,
            MPI_Datatype *newtype)

Fortran Syntax

       INCLUDE 'mpif.h'
       MPI_TYPE_CREATE_F90_COMPLEX (P, R, NEWTYPE, IERROR)
            INTEGER   P, R, NEWTYPE, IERROR

C++ Syntax

       #include <mpi.h>
       static MPI::Datatype MPI::Datatype::Create_f90_complex(int p, int r)

INPUT PARAMETERS

       p         Precision, in decimal digits (integer).

       r         Decimal exponent range (integer).

OUTPUT PARAMETERS

       newtype   New data type (handle).

       IERROR    Fortran only: Error status (integer).

DESCRIPTION

       This  function provides a way to declare KIND-parameterized COMPLEX MPI
       datatypes. The arguments are interpreted in a similar  fashion  to  the
       F90  function SELECTED_REAL_KIND. The parameters p and r must be scalar
       integers. The argument p represents the  required  level  of  numerical
       precision,  in  decimal  digits. The r parameter indicates the range of
       exponents desired: the returned datatype will have at least  one  expo-
       nent between +r and -r (inclusive).

       Either   p   or  r,  but  not  both,  may  be  omitted  from  calls  to
       SELECTED_REAL_KIND.  Similarly,  either   argument   to   MPI_Type_cre-
       ate_f90_complex may be set to MPI_UNDEFINED.

NOTES

       It  is erroneous to supply values for p and r not supported by the com-
       piler.

       The Fortran function SELECTED_REAL_KIND maps a large  number  of  (p,r)
       pairs to a much smaller number of KIND parameters supported by the com-
       piler. KIND parameters are not specified by the language  and  are  not
       portable. From the point of view of the language, variables of the same
       base type and KIND parameter are equivalent, even if their KIND parame-
       ters were generated by different (p,r) arguments to SELECTED_REAL_KIND.
       MPI_Unpack_external, and many  MPI_File  functions  -  is  subtle.  The
       external32 representation of returned datatypes is as follows.

            if (p > 33) and/or (r > 4931):
                 external32 size = n/a (undefined)
            else if (p > 15) and/or (r > 307):
                 external32 size = 32
            else if (p > 6) and/or (r > 37):
                 external32 size = 16
            else:
                 external32 size = 8

       If the external32 representation of a datatype is undefined, so are the
       results of using that datatype in operations that  require  the  exter-
       nal32  format.  Care  should be taken not to use incompatible datatypes
       indirectly, e.g., as part of another datatype or through  a  duplicated
       datatype, in these functions.

       If  a  variable is declared specifying a nondefault KIND value that was
       not obtained with SELECTED_REAL_KIND (i.e., p and/or  r  are  unknown),
       the  only way to obtain a matching MPI datatype is to use the functions
       MPI_Sizeof and MPI_Type_match_size.

ERRORS

       Almost all MPI routines return an error value; C routines as the  value
       of  the  function  and Fortran routines in the last argument. C++ func-
       tions do not return errors. If the default  error  handler  is  set  to
       MPI::ERRORS_THROW_EXCEPTIONS, then on error the C++ exception mechanism
       will be used to throw an MPI:Exception object.

       Before the error value is returned, the current MPI  error  handler  is
       called.  By  default, this error handler aborts the MPI job, except for
       I/O  function  errors.  The  error  handler   may   be   changed   with
       MPI_Comm_set_errhandler; the predefined error handler MPI_ERRORS_RETURN
       may be used to cause error values to be returned. Note  that  MPI  does
       not guarantee that an MPI program can continue past an error.

       See the MPI man page for a full list of MPI error codes.

SEE ALSO

       MPI_Pack_external
       MPI_Sizeof
       MPI_Type_match_size
       MPI_Unpack_external
       SELECTED_REAL_KIND

1.3.4                            Nov 11, 2009   MPI_Type_create_f90_complex(3)

« Return to documentation listing