close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 14 years ago

#1096 closed defect

Error en los operadores de comparación con múltiples argumentos — at Version 1

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: Kernel Version:
Severity: blocker Keywords:
Cc: imendez@…

Description (last modified by Víctor de Buen Remiro)

Los operadores de comparación con múltiples argumentos, es decir EQ, NE, LT, GT, LE, GE, no funcionan correctamente en la lógica trivaluada con omitidos.

Por ejemplo, el operador EQ resulta no ser conmutativo

Real ?==1;    //devuelve ?
Real 1==1;    //devuelve ?
Real EQ(?,1); //devuelve ?
Real EQ(1,?); //devuelve 1 y tendría que devolver ?

Los operadores de comparación multi-argumentos deben cumplir la regla general

 CMP(a, b, c, d, ...) = CMP(a,b) & CMP(b,c) & CMP(c,d) & ...

Sin embargo, esta expresión

Real EQ(?, 0, 1)

devuelve ? cuando tiene que devolver 0, pues 0 no es igual a 1 nunca, sea cual sea el resultado de comparar ? contra 0.

Change History (1)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Description: modified (diff)
Status: newaccepted
Note: See TracTickets for help on using tickets.