Skip to content

Equality comparison between numbers with different bases #80

@ricted98

Description

@ricted98

set old_value_numeric [examine -radix binary,enumnumeric $signal_name]
set new_value_numeric [expr int(rand()*([expr 2 ** [string length $old_value_numeric]]))]
while {$old_value_numeric == $new_value_numeric && [string length $old_value_numeric] != 1} {
set new_value_numeric [expr int(rand()*([expr 2 ** [string length $old_value_numeric]]))]
}
if {$is_register} {
force -freeze $signal_name $new_value_numeric -cancel $::register_fault_duration
} else {
force -freeze $signal_name $new_value_numeric, $old_value_numeric $::signal_fault_duration -cancel $::signal_fault_duration
}

old_value_numeric is extracted as a binary value while new_value_numeric is stored as a decimal number. As a result, the condition in the while statement $old_value_numeric == $new_value_numeric && [string length $old_value_numeric] != 1 is stuck to false and the command force -freeze interprets old_value_numeric as a decimal value since no base is specified.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions