octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Single/Double precision equality


From: Ben Abbott
Subject: Re: Single/Double precision equality
Date: Sat, 27 Sep 2014 17:09:05 -0400

On Sep 27, 2014, at 1:41 PM, Daniel J Sebald <address@hidden> wrote:

> Maybe the easiest thing is to concede to arbitrariness and in the 
> documentation add a third column, an "operator evaluation" column:
> 
>      Mixed Operation     Evaluate      Storage
>     -------------------------------------------
>     double OP single      single       single
>     double OP integer     double       integer
>     double OP char        double       double
>     double OP logical     double       double
>     single OP integer     single       integer
>     single OP char        single       single
>     single OP logical     single       single

I like this idea.  I wrote a script and ran it in Matlab to allow for a quick 
comparison ...

precedence
class ( double (0) +  double (1)) -> double
class ( double (0) +  single (1)) -> single
class ( double (0) +    char (1)) -> double
class ( double (0) + logical (1)) -> double
class ( double (0) +   int64 (1)) -> int64
class ( double (0) +  uint64 (1)) -> uint64
class ( double (0) +   int32 (1)) -> int32
class ( double (0) +  uint32 (1)) -> uint32
class ( double (0) +   int16 (1)) -> int16
class ( double (0) +  uint16 (1)) -> uint16
class ( double (0) +    int8 (1)) -> int8
class ( double (0) +   uint8 (1)) -> uint8
class ( single (0) +  double (1)) -> single
class ( single (0) +  single (1)) -> single
class ( single (0) +    char (1)) -> single
class ( single (0) + logical (1)) -> single
class ( single (0) +   int64 (1)) -> error
class ( single (0) +  uint64 (1)) -> error
class ( single (0) +   int32 (1)) -> error
class ( single (0) +  uint32 (1)) -> error
class ( single (0) +   int16 (1)) -> error
class ( single (0) +  uint16 (1)) -> error
class ( single (0) +    int8 (1)) -> error
class ( single (0) +   uint8 (1)) -> error
class (   char (0) +  double (1)) -> double
class (   char (0) +  single (1)) -> single
class (   char (0) +    char (1)) -> double
class (   char (0) + logical (1)) -> double
class (   char (0) +   int64 (1)) -> int64
class (   char (0) +  uint64 (1)) -> uint64
class (   char (0) +   int32 (1)) -> int32
class (   char (0) +  uint32 (1)) -> uint32
class (   char (0) +   int16 (1)) -> int16
class (   char (0) +  uint16 (1)) -> uint16
class (   char (0) +    int8 (1)) -> int8
class (   char (0) +   uint8 (1)) -> uint8
class (logical (0) +  double (1)) -> double
class (logical (0) +  single (1)) -> single
class (logical (0) +    char (1)) -> double
class (logical (0) + logical (1)) -> double
class (logical (0) +   int64 (1)) -> error
class (logical (0) +  uint64 (1)) -> error
class (logical (0) +   int32 (1)) -> error
class (logical (0) +  uint32 (1)) -> error
class (logical (0) +   int16 (1)) -> error
class (logical (0) +  uint16 (1)) -> error
class (logical (0) +    int8 (1)) -> error
class (logical (0) +   uint8 (1)) -> error
class (  int64 (0) +  double (1)) -> int64
class (  int64 (0) +  single (1)) -> error
class (  int64 (0) +    char (1)) -> int64
class (  int64 (0) + logical (1)) -> error
class (  int64 (0) +   int64 (1)) -> int64
class (  int64 (0) +  uint64 (1)) -> error
class (  int64 (0) +   int32 (1)) -> error
class (  int64 (0) +  uint32 (1)) -> error
class (  int64 (0) +   int16 (1)) -> error
class (  int64 (0) +  uint16 (1)) -> error
class (  int64 (0) +    int8 (1)) -> error
class (  int64 (0) +   uint8 (1)) -> error
class ( uint64 (0) +  double (1)) -> uint64
class ( uint64 (0) +  single (1)) -> error
class ( uint64 (0) +    char (1)) -> uint64
class ( uint64 (0) + logical (1)) -> error
class ( uint64 (0) +   int64 (1)) -> error
class ( uint64 (0) +  uint64 (1)) -> uint64
class ( uint64 (0) +   int32 (1)) -> error
class ( uint64 (0) +  uint32 (1)) -> error
class ( uint64 (0) +   int16 (1)) -> error
class ( uint64 (0) +  uint16 (1)) -> error
class ( uint64 (0) +    int8 (1)) -> error
class ( uint64 (0) +   uint8 (1)) -> error
class (  int32 (0) +  double (1)) -> int32
class (  int32 (0) +  single (1)) -> error
class (  int32 (0) +    char (1)) -> int32
class (  int32 (0) + logical (1)) -> error
class (  int32 (0) +   int64 (1)) -> error
class (  int32 (0) +  uint64 (1)) -> error
class (  int32 (0) +   int32 (1)) -> int32
class (  int32 (0) +  uint32 (1)) -> error
class (  int32 (0) +   int16 (1)) -> error
class (  int32 (0) +  uint16 (1)) -> error
class (  int32 (0) +    int8 (1)) -> error
class (  int32 (0) +   uint8 (1)) -> error
class ( uint32 (0) +  double (1)) -> uint32
class ( uint32 (0) +  single (1)) -> error
class ( uint32 (0) +    char (1)) -> uint32
class ( uint32 (0) + logical (1)) -> error
class ( uint32 (0) +   int64 (1)) -> error
class ( uint32 (0) +  uint64 (1)) -> error
class ( uint32 (0) +   int32 (1)) -> error
class ( uint32 (0) +  uint32 (1)) -> uint32
class ( uint32 (0) +   int16 (1)) -> error
class ( uint32 (0) +  uint16 (1)) -> error
class ( uint32 (0) +    int8 (1)) -> error
class ( uint32 (0) +   uint8 (1)) -> error
class (  int16 (0) +  double (1)) -> int16
class (  int16 (0) +  single (1)) -> error
class (  int16 (0) +    char (1)) -> int16
class (  int16 (0) + logical (1)) -> error
class (  int16 (0) +   int64 (1)) -> error
class (  int16 (0) +  uint64 (1)) -> error
class (  int16 (0) +   int32 (1)) -> error
class (  int16 (0) +  uint32 (1)) -> error
class (  int16 (0) +   int16 (1)) -> int16
class (  int16 (0) +  uint16 (1)) -> error
class (  int16 (0) +    int8 (1)) -> error
class (  int16 (0) +   uint8 (1)) -> error
class ( uint16 (0) +  double (1)) -> uint16
class ( uint16 (0) +  single (1)) -> error
class ( uint16 (0) +    char (1)) -> uint16
class ( uint16 (0) + logical (1)) -> error
class ( uint16 (0) +   int64 (1)) -> error
class ( uint16 (0) +  uint64 (1)) -> error
class ( uint16 (0) +   int32 (1)) -> error
class ( uint16 (0) +  uint32 (1)) -> error
class ( uint16 (0) +   int16 (1)) -> error
class ( uint16 (0) +  uint16 (1)) -> uint16
class ( uint16 (0) +    int8 (1)) -> error
class ( uint16 (0) +   uint8 (1)) -> error
class (   int8 (0) +  double (1)) -> int8
class (   int8 (0) +  single (1)) -> error
class (   int8 (0) +    char (1)) -> int8
class (   int8 (0) + logical (1)) -> error
class (   int8 (0) +   int64 (1)) -> error
class (   int8 (0) +  uint64 (1)) -> error
class (   int8 (0) +   int32 (1)) -> error
class (   int8 (0) +  uint32 (1)) -> error
class (   int8 (0) +   int16 (1)) -> error
class (   int8 (0) +  uint16 (1)) -> error
class (   int8 (0) +    int8 (1)) -> int8
class (   int8 (0) +   uint8 (1)) -> error
class (  uint8 (0) +  double (1)) -> uint8
class (  uint8 (0) +  single (1)) -> error
class (  uint8 (0) +    char (1)) -> uint8
class (  uint8 (0) + logical (1)) -> error
class (  uint8 (0) +   int64 (1)) -> error
class (  uint8 (0) +  uint64 (1)) -> error
class (  uint8 (0) +   int32 (1)) -> error
class (  uint8 (0) +  uint32 (1)) -> error
class (  uint8 (0) +   int16 (1)) -> error
class (  uint8 (0) +  uint16 (1)) -> error
class (  uint8 (0) +    int8 (1)) -> error
class (  uint8 (0) +   uint8 (1)) -> uint8

Attachment: precedence.m
Description: Binary data

Ben

reply via email to

[Prev in Thread] Current Thread [Next in Thread]