Bogue Tableau de quad (.q) Win - PB4.10 Beta 3
Publié : ven. 02/févr./2007 22:43
Bonjour,
Je ne peux pas dire si le bogue est apparent sur tout les OS (Window,
Linux ou MacOS) mais puisque le type quad est disponible pour les 3
platformes il y a de forte chance qu'il soit présent sur les 3.
Exemple :
Index = 2
Beta(Index) = 51
Beta(Index + 1) = 76
Beta(Index) + Beta(Index + 1) = 68719476863
Apparement le simple fait de faire Beta(Index + 1) ou Beta(Index - 1)
provoque le problème. Il semble que la valeur 51 (2e index du tableau)
soit ajouter à la valeur correspondant à l'adresse de la valeur 76
(3e index du tableau) et non à sa valeur.
Le problème est apparent pour les opérations d'addition, soustraction,
multiplication, division ou de comparaison.
- Beta(Index) + Beta(Index + 1)
- Beta(Index) - Beta(Index + 1)
- Beta(Index) * Beta(Index + 1)
- Beta(Index) / Beta(Index + 1)
- Beta(Index) < Beta(Index + 1)
- Beta(Index) > Beta(Index + 1)
En revanche si le calcul d'indexation est fait au préalable dans une
variable, le problème disparaît :
IndexB = Index + 1
Beta(Index) + Beta(IndexB)
A+
Guimauve
PS. : Ce bogue à déja été rapporté sur le forum anglais.
Je ne peux pas dire si le bogue est apparent sur tout les OS (Window,
Linux ou MacOS) mais puisque le type quad est disponible pour les 3
platformes il y a de forte chance qu'il soit présent sur les 3.
Exemple :
Index = 2
Beta(Index) = 51
Beta(Index + 1) = 76
Beta(Index) + Beta(Index + 1) = 68719476863
Apparement le simple fait de faire Beta(Index + 1) ou Beta(Index - 1)
provoque le problème. Il semble que la valeur 51 (2e index du tableau)
soit ajouter à la valeur correspondant à l'adresse de la valeur 76
(3e index du tableau) et non à sa valeur.
Le problème est apparent pour les opérations d'addition, soustraction,
multiplication, division ou de comparaison.
- Beta(Index) + Beta(Index + 1)
- Beta(Index) - Beta(Index + 1)
- Beta(Index) * Beta(Index + 1)
- Beta(Index) / Beta(Index + 1)
- Beta(Index) < Beta(Index + 1)
- Beta(Index) > Beta(Index + 1)
En revanche si le calcul d'indexation est fait au préalable dans une
variable, le problème disparaît :
IndexB = Index + 1
Beta(Index) + Beta(IndexB)
A+
Guimauve
PS. : Ce bogue à déja été rapporté sur le forum anglais.
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Nom du projet : Bogue Tableau de quad (.q)
; Fichier : Bogue Tableau de quad.pb
; Version : 1.0.0
; Programmé par : Guimauve
; Date : 02-02-2007
; Mise à jour : 02-02-2007
; Codé avec PureBasic V4.02
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Structure Alpha
Tab.q[6]
EndStructure
Dim Beta.q(5)
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
For Index = 0 To 5
Test.Alpha\Tab[Index] = Index * 5
Beta(Index) = (Index * 25) + 1
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Debug "Déboggue de la structure avec Step 2"
Debug ""
For Index = 0 To 5 Step 2
Debug "Test\Tab[" + Str(Index) + "] = " + StrQ(Test\Tab[Index])
Debug "Test\Tab[" + Str(Index + 1) + "] = " + StrQ(Test\Tab[Index+1])
Debug "Test\Tab[" + Str(Index) + "] + Test\Tab[" + Str(Index + 1) + "] = " + StrQ(Test\Tab[Index] + Test\Tab[Index + 1])
Debug Test\Tab[Index]
Debug Test\Tab[Index + 1]
Debug Test\Tab[Index] + Test\Tab[Index + 1]
Debug ""
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Debug "Déboggue du tableau avec Step 2"
Debug ""
For Index = 0 To 5 Step 2
Debug "Beta(" + Str(Index) + ") = " + StrQ(Beta(Index))
Debug "Beta(" + Str(Index + 1) + ") = " + StrQ(Beta(Index + 1))
Debug "Beta(" + Str(Index) + ") + Beta(" + Str(Index + 1) + ") = " + StrQ(Beta(Index) + Beta(Index + 1))
Debug Beta(Index)
Debug Beta(Index + 1)
Debug Beta(Index) + Beta(Index + 1)
Debug ""
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Debug "Déboggue du tableau avec Step -2"
Debug ""
For Index = 5 To 1 Step -2
Debug "Beta(" + Str(Index) + ") = " + StrQ(Beta(Index))
Debug "Beta(" + Str(Index - 1) + ") = " + StrQ(Beta(Index - 1))
Debug "Beta(" + Str(Index) + ") + Beta(" + Str(Index - 1) + ") = " + StrQ(Beta(Index) + Beta(Index - 1))
Debug Beta(Index)
Debug Beta(Index - 1)
Debug Beta(Index) + Beta(Index - 1)
Debug ""
Next
; <<<<<<<<<<<<<<<<<<<<<<<<<<
; <<<<< FIN DU FICHIER <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<<<<