[Top][All Lists]

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

[Octave-bug-tracker] [bug #63089] dec2bin gives wrong answer for negativ

From: Mayeul Cantan
Subject: [Octave-bug-tracker] [bug #63089] dec2bin gives wrong answer for negative int16
Date: Wed, 21 Sep 2022 10:51:58 -0400 (EDT)


                 Summary: dec2bin gives wrong answer for negative int16
                 Project: GNU Octave
               Submitter: mayeulc
               Submitted: Wed 21 Sep 2022 02:51:57 PM UTC
                Category: Octave Function
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Incorrect Result
                  Status: None
             Assigned to: None
         Originator Name: 
        Originator Email: 
             Open/Closed: Open
                 Release: 7.2.0
         Discussion Lock: Any
        Operating System: GNU/Linux


Follow-up Comments:

Date: Wed 21 Sep 2022 02:51:57 PM UTC By: Mayeul Cantan <mayeulc>

> dec2bin(int16(-4200))
ans = 111111111111111
> dec2bin(int32(-4200))
ans = 1110111110011000

-4200 obviously fits in a 2-complemented signed 16 bit integer, this is a bug.
The first line should return the same result as the second one. 

While I am at it:

Octave:1> dec2bin(int32(-4200), 32)
ans = 00000000000000001110111110011000
Octave:2> dec2bin(int32(-42000))
ans = 1111111111111111111111111111111
Octave:3> dec2bin(-42000)
ans = 11111111111111110101101111110000

Octave:1 -- The leading zeroes should be leading ones for negative integers in

Octave:2 -- This is doubly wrong: wrong number of digits, and wrong result.
The next line shows a seemingly-correct result

There seems to be some of the same behaviours with i64, but I'm soon hitting
"dec2bin: negative inputs cannot be less than -flintmax () / 2".


Reply to this item at:


Message sent via Savannah

reply via email to

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