***********************
Conversions
***********************

Python to Octave Types
----------------------

Shows the round-trip data types, originating in Python.
Lists and sets will be converted to a numeric array if possible, falling back
on cells.  If an Octave cell consisting of numbers is desired, use a tuple.
Cell, Struct, StructArray are Oct2Py convenience classes.

=============   ===============   ===============
Python          Octave            Python
=============   ===============   ===============
int             int32             np.int32
long            int64             np.int64
float           double            np.float64
complex         double            np.complex128
str             char              unicode
unicode         cell              unicode
bool            logical           np.bool
None            nan               np.nan
dict            struct            Struct
tuple           cell              Cell
list            array or cell     ndarray or Cell
set             array or cell     ndarray or Cell
Struct          struct            Struct
StructArray     struct array      StructArray
=============   ===============   ===============


Numpy to Octave Types
---------------------

Note that when ``convert_to_float`` is set (default is True),
integer types are converted to floating point before sending them
to Octave.

=============   ============   =============
Numpy           Octave         Numpy
=============   ============   =============
np.int8         int8           np.int8
np.int16        int16          np.int16
np.int32        int32          np.int32
np.int64        int64          np.int64
np.uint8        uint8          np.uint8
np.uint16       uint16         np.uint16
np.uint32       uint32         np.uint32
np.uint64       uint64         np.uint64
np.float16      double         np.float64
np.float32      single         np.float32
np.float64      double         np.float64
np.float128     double         np.float64
np.double       double         np.float64
np.complex64    double         np.complex64
np.complex128   double         np.complex128
np.complex256   double         np.complex128
np.bool         logical        bool
np.str          cell           list
np.object       cell           list
sparse          sparse         sparse
recarray        struct array   StructArray
=============   ============   =============


Octave to Python Types
----------------------

These are handled unambiguously.  The only known data type that
is not transferable is a function pointer, since Octave cannot
save them to the v6 MAT file format.

===================  ======================
Octave               Python
===================  ======================
array                ndarray
cell                 Cell
struct               Struct
struct array         StructArray
logical              ndarray (of uint8)
sparse               sparse
user defined object  Oct2Py object pointer
===================  ======================
