Bug report bei type casting

Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Bug report bei type casting

 · 
Posted: 15.05.2014 - 12:29  ·  #1
Hallo,

das type casting im unten stehenden code liefert im Simulator ein falsches Ergebnis (siehe Bild).
Dies ist meiner Ansicht nach ein Bug. Bitte um Prüfung.

Gruß
Thomas.AC

Code

program main;

{$WG}                // global Warnings

Device = xmega32A4, VCC=3.3;

Define_Fuses
    Override_Fuses;
    NoteBook   = A;
    COMport    = USB;
    LockBits0  = [];
    FuseBits0  = [];
    FuseBits1  = [];
    FuseBits2  = [];
    FuseBits5  = [BODLEVEL0, BODLEVEL2, BODACT0];   //BOD = 2.96V

Import
    SysTick,
    SerPortC1;
    
From System Import
    LongWord, LongInt, Float;

Define
    //OSCtype = int32MHz, PLLmul=4, prescA=1, prescB=1, prescC=1;
    OSCtype = extXTAL=8000000, PLLmul=4, prescA=1, prescB=1, prescC=1;
    SysTick        = 10;             {msec}
    StackSize      = 512, iData;
    FrameSize      = 512, iData;
    SerportC1      = 19200;
    
Implementation

{$IDATA}

var
  zahl    : float;
  intzahl : longint;

begin
    zahl    := 10;
    intzahl := Longint(-zahl); // simulator diplays $00000000
end main.

Attachments
Bug report bei type casting
Filename: longint typecast.png
Filesize: 26.06 KB
Title:
Download counter: 97
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bug report bei type casting

 · 
Posted: 15.05.2014 - 13:51  ·  #2
Hallo Thomas,

das ist ein Bug Report der uns allen das Leben doch sehr vereinfacht.
Bug ist jetzt raus. Update am Wochenende.

danke
rolf
Thomas.AC
Benutzer
Avatar
Gender: n/a
Age: 43
Posts: 308
Registered: 07 / 2013
Subject:

Re: Bug report bei type casting

 · 
Posted: 15.05.2014 - 16:27  ·  #3
Hallo Rolf,

freut mich sehr. Danke für die schnelle Behebung.
Dann kann ich ja jetzt nachlegen.

Bug 1:
Ich möchte den kleinsten Wert, den man mit LongInt darstellen kann, zu float casten.
Der Simulator liefert als Ergebnis 2^31 anstatt -2^31.

Bug 2: (wenn es denn einer ist):
Ich möchte Float nach Longint casten und anschließend mit runerr auf Überlauf prüfen.
Dies scheitert, wenn die floatzahl zwischen 2^31 und 2^32 liegt.

Grüße aus Aachen

Thomas


Code

program main;

{$WG}                // global Warnings

Device = xmega32A4, VCC=3.3;

Define_Fuses
    Override_Fuses;
    NoteBook   = A;
    COMport    = USB;
    LockBits0  = [];
    FuseBits0  = [];
    FuseBits1  = [];
    FuseBits2  = [];
    FuseBits5  = [BODLEVEL0, BODLEVEL2, BODACT0];   //BOD = 2.96V

Import
    SysTick,
    SerPortC1;
    
From System Import
    LongWord, LongInt, Float;

Define
    //OSCtype = int32MHz, PLLmul=4, prescA=1, prescB=1, prescC=1;
    OSCtype = extXTAL=8000000, PLLmul=4, prescA=1, prescB=1, prescC=1;
    SysTick        = 10;             {msec}
    StackSize      = 512, iData;
    FrameSize      = 512, iData;
    SerportC1      = 19200;
    
Implementation

{$IDATA}

var
minLongInt : Float;
betweenMaxLongIntAndMaxLongWord : Float;
bool : Boolean;
intzahl : LongInt;

begin
  // Bug 1 //
  minLongInt := Float(min(Longint)); // wrong value

  // Bug 2 //
  bool := runerr; // clear runerr
  betweenMaxLongIntAndMaxLongWord := 3000000000; // a value between max(LongInt) and max(Longword)
  intzahl := LongInt(betweenMaxLongIntAndMaxLongWord);
  bool := runerr; // runerr is false, true is right value, isn't it?
end main.
Attachments
Bug report bei type casting
Filename: typecast 2.png
Filesize: 28.91 KB
Title:
Download counter: 86
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Bug report bei type casting

 · 
Posted: 15.05.2014 - 20:35  ·  #4
Hallo Thomas,

bug fixed.

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 17 · Cache Hits: 15   84   99 · Page-Gen-Time: 0.041288s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI