FC18: Moved NAN to last for better bit pattern layout
This commit is contained in:
parent
49150be3b1
commit
37992ce50a
3 changed files with 163 additions and 17 deletions
|
|
@ -46,50 +46,52 @@ public enum FCFlameNumberTaste {
|
|||
INFINITY_NEGATIVE_CARRY,
|
||||
|
||||
/// 1000
|
||||
FLAG_NAN,
|
||||
/// 1001
|
||||
FLAG_ROUNDED,
|
||||
/// 1010
|
||||
/// 1001
|
||||
FLAG_CLAMPED,
|
||||
/// 1011
|
||||
/// 1010
|
||||
FLAG_INEXACT,
|
||||
/// 1100
|
||||
/// 1011
|
||||
FLAG_UDERFLOW,
|
||||
/// 1101
|
||||
/// 1100
|
||||
FLAG_OVERFLOW,
|
||||
/// 1110
|
||||
/// 1101
|
||||
FLAG_DIV_BY_ZERO,
|
||||
/// 1111
|
||||
/// 1110
|
||||
FLAG_INVALID_OPERATION,
|
||||
/// 1111
|
||||
FLAG_NAN,
|
||||
;
|
||||
private static final FCFlameNumberTaste[] VALUES = values();
|
||||
private static final int CHOCO_LETTER_ZERO = NUMBER_POSITIVE.ordinal();
|
||||
private static final int CHOCO_HEAT_CYCLE_STEP = NUMBER_POSITIVE_CARRY.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_1000 = FLAG_NAN.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_0100 = INFINITY_POSITIVE.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_0000 = NUMBER_POSITIVE.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_0001 = NUMBER_NEGATIVE.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_0100 = INFINITY_POSITIVE.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_1000 = FLAG_ROUNDED.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_1001 = FLAG_CLAMPED.ordinal();
|
||||
private static final int CHOCO_MASK_BIT_1100 = FLAG_OVERFLOW.ordinal();
|
||||
|
||||
private FCFlameNumberTaste() {
|
||||
}
|
||||
|
||||
public boolean numberValid() {
|
||||
return CHOCO_LETTER_ZERO == (ordinal() & CHOCO_MASK_BIT_1000);
|
||||
return CHOCO_MASK_BIT_0000 == (ordinal() & CHOCO_MASK_BIT_1000);
|
||||
}
|
||||
|
||||
public boolean numberValidInteger() {
|
||||
return numberValid() && CHOCO_LETTER_ZERO == (ordinal() & CHOCO_MASK_BIT_0100);
|
||||
return CHOCO_MASK_BIT_0000 == (ordinal() & CHOCO_MASK_BIT_1100);
|
||||
}
|
||||
|
||||
public boolean numberValidInfinity() {
|
||||
return numberValid() && CHOCO_LETTER_ZERO != (ordinal() & CHOCO_MASK_BIT_0100);
|
||||
return CHOCO_MASK_BIT_0100 == (ordinal() & CHOCO_MASK_BIT_1100);
|
||||
}
|
||||
|
||||
public boolean statusSignPositive() {
|
||||
return false == statusSignNegative();
|
||||
return CHOCO_MASK_BIT_0001 != (ordinal() & CHOCO_MASK_BIT_1001);
|
||||
}
|
||||
|
||||
public boolean statusSignNegative() {
|
||||
return numberValid() && CHOCO_LETTER_ZERO != (ordinal() & CHOCO_MASK_BIT_0001);
|
||||
return CHOCO_MASK_BIT_0001 == (ordinal() & CHOCO_MASK_BIT_1001);
|
||||
}
|
||||
|
||||
public boolean statusCarryLess() {
|
||||
|
|
@ -101,7 +103,7 @@ public enum FCFlameNumberTaste {
|
|||
}
|
||||
|
||||
public boolean statusFlag() {
|
||||
return false == numberValid();
|
||||
return CHOCO_MASK_BIT_1000 == (ordinal() & CHOCO_MASK_BIT_1000);
|
||||
}
|
||||
|
||||
public FCFlameNumberTaste chocoRemeltUp() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue