JPP: Added some flags and todo list for cheese odeur number refactoring
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 48s

This commit is contained in:
Willem Cazander 2026-03-20 12:49:32 +01:00
parent 36a6929aee
commit 9f023a7855
14 changed files with 168 additions and 19 deletions

View file

@ -47,7 +47,8 @@ import ᒢᣘᐧᐧ.ᒼᐤᒻᒻᓫᒼᐪᑊᐤᣕᔆᒾ.ᣗᐤᣖᓫ.RopeLadder
/// @version ©Δ 仙上主天
public class ArrayLadderOpen<E> implements LadderOpen<E>,RopeIterable<E> {
// TODO: Rewrite to Arena based array
// TODO: Rewrite to Arena based array see;
// https://builds.shipilev.net/patch-openjdk-babylon-code-reflection/hat/optkl/src/main/java/optkl/ifacemapper/
private final List<E> data;
public ArrayLadderOpen() {

View file

@ -29,13 +29,17 @@ package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.KaasTBone;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.KaasTBoneMaterializer;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagCarry;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagInfinity;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagNaN;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagOne;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagSign;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagZero;
/// Cheese odeur number smell.
///
/// A true IBM number specification has the smell of a cheese cutter.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天s
/// @param <T> The bone to eat.
@ -44,9 +48,11 @@ public sealed interface KaasOdeur<T extends KaasOdeur<T, N>, N>
KaasTBone<T>,
KaasTBoneMaterializer<T, N>
permits
KaasOdeurFlagCarry,
KaasOdeurFlagInfinity,
KaasOdeurFlagNaN,
KaasOdeurFlagOne,
KaasOdeurFlagSign,
KaasOdeurFlagZero,
KaasOdeurBineral,
KaasOdeurZahlenial,
@ -61,33 +67,49 @@ public sealed interface KaasOdeur<T extends KaasOdeur<T, N>, N>
/*
CODENAME | MATHNAME | BLACKBOARD
TODO: redo nameing again as a "KaasOdeurRealPos2D" is a 1D inf number ....
TODO: split numbers "bounded" like "KaasOdeurZahlenBoundedTennery"
TODO: add identity interfaces for all numbers
TODO: add all math operations (in indentity "noise" stub only !!)
TODO: change numberXXX to return T not N
TODO: change numberXXX to noise stub
TODO: add full blackboard syntax "name" of number definition
TODO: split range? from base to support BigZahlen and BigReal
=== Block 1: Standard Number Systems;
bineral = boolean number 0,1 = 𝔹 (Standard for Boolean domain)
zerdinal = whole number 0++ = 𝕎 (Standard mnemonic for Whole numbers)
rodinal = natural number 1++ = (Universal standard for Natural numbers)
RM: bineral = boolean number 0,1 = 𝔹 (Standard for Boolean domain)
RM: tennery = tenary number -1,0,1 = (tri-state)
RM: zerdinal = whole number 0++ = 𝕎 (Standard mnemonic for Whole numbers)
RM: rodinal = natural number 1++ = (Universal standard for Natural numbers)
^^ bounded variants of zahlen base
zahlenial = signed number -1,0,1 = (Universal standard for Integers; from German Zahlen)
defracter = decimal fractions = 𝔻 (Standard for fraction whose denominator is a power of ten)
rational = rational number = (fractions, from Quotient)
rational2D = rational number = ℚ̅ (fractions + 2*inf)
rational2D = biinf rational number = ℚ̅ (fractions + 2*inf)
rational4D = quadinf rational number = 𝑞ℚ̅ (fractions + 4*inf)
real = real numbers = (Universal standard for Reals)
real2D = extended real = ℝ̅ (real + 2*inf = float/double)
real2D = biinf real = ℝ̅ (real + 2*inf = float/double)
real4D = quadinf real = 𝑞ℝ̅ (real + 4*inf = choco taste)
complex = complex number =
==== Block 2: Signed variants;
rationalPos = positive rational number =
rationalPos2D = positive biinf rational number = ℚ̅
rationalPos4D = positive quadinf rational number = 𝑞ℚ̅
realPos = positive real numbers = (https://mroman42.github.io/ctlc/agda-mltt/Reals.html#%E2%84%9D%E2%81%BA)
realPos2D = positive extended real = ℝ̅
realPos4D = positive quadinf real = 𝑞ℝ̅
zerdinalPos = positive whole number 0,1... = 𝕎
zerdinalNeg = negative whole number ..-1,0 = 𝕎
rodinalPos = positive count number 1,2... =
rodinalNeg = negative count number .-2,-1 =
rationalPos = positive rational number =
rationalNeg = negative rational number =
rationalPos2D = positive biinf rational number = ℚ̅
rationalNeg2D = negative biinf rational number = ℚ̅
rationalPos4D = positive quadinf rational number = 𝑞ℚ̅
rationalNeg4D = negative quadinf rational number = 𝑞ℚ̅
realPos = positive real numbers = (https://mroman42.github.io/ctlc/agda-mltt/Reals.html#%E2%84%9D%E2%81%BA)
realNeg = negative real numbers =
realPos2D = positive extended real = ℝ̅
realNeg2D = negative extended real = ℝ̅
realPos4D = positive quadinf real = 𝑞ℝ̅
realNeg4D = negative quadinf real = 𝑞ℝ̅
==== Block 3: Advanced Sets & Spaces

View file

@ -30,6 +30,7 @@ package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRange2D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRoot2D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagNaN;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagSign;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagZero;
/// Cheese odeur of a signed float without infinity.
@ -40,6 +41,7 @@ public non-sealed interface KaasOdeurReal<T extends KaasOdeurReal<T, N>, N> exte
KaasOdeur<T, N>,
KaasOdeurFlagNaN<T, N>,
KaasOdeurFlagZero<T, N>,
KaasOdeurFlagSign<T, N>,
KaasOdeurNumberRoot2D<T, N>,
KaasOdeurNumberRange2D<T, N> {
}

View file

@ -32,6 +32,7 @@ import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOd
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRoot2D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagInfinity;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagNaN;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagSign;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagZero;
/// Cheese odeur of a signed float with infinity.
@ -42,6 +43,7 @@ public non-sealed interface KaasOdeurReal2D<T extends KaasOdeurReal2D<T, N>, N>
KaasOdeur<T, N>,
KaasOdeurFlagInfinity<T, N>,
KaasOdeurFlagNaN<T, N>,
KaasOdeurFlagSign<T, N>,
KaasOdeurFlagZero<T, N>,
KaasOdeurNumberRoot2D<T, N>,
KaasOdeurNumberInfinity2D<T, N>,

View file

@ -28,8 +28,10 @@
package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRoot4D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagCarry;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagInfinity;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagNaN;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagSign;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFlagZero;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberInfinity4D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRange4D;
@ -40,8 +42,10 @@ import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOd
/// @version ©Δ 仙上主天
public non-sealed interface KaasOdeurReal4D<T extends KaasOdeurReal4D<T, N>, N> extends
KaasOdeur<T, N>,
KaasOdeurFlagCarry<T, N>,
KaasOdeurFlagInfinity<T, N>,
KaasOdeurFlagNaN<T, N>,
KaasOdeurFlagSign<T, N>,
KaasOdeurFlagZero<T, N>,
KaasOdeurNumberRoot4D<T, N>,
KaasOdeurNumberInfinity4D<T, N>,

View file

@ -34,7 +34,7 @@ import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ.KaasOdeurFla
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberInfinity1D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣕᓑᔿᒃᓫᣗ.KaasOdeurNumberRange1D;
/// Cheese odeur of a positive float with signed infinity.
/// Cheese odeur of a positive float with infinity.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天

View file

@ -0,0 +1,47 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeur;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurBineral;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurReal4D;
/// Cheese odeur flag carry.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天s
/// @param <T> The bone to eat.
public sealed interface KaasOdeurFlagCarry<T extends KaasOdeurFlagZero<T, N>, N>
extends
KaasOdeur<T, N>
permits
KaasOdeurReal4D {
/// Return the bineral status of the carry.
KaasOdeurBineral<?, ?> odeurFlagCarry();
}

View file

@ -0,0 +1,51 @@
/*
* Copyright ©Δ 仙上主天
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
* that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
* following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
* the following disclaimer in the documentation and/or other materials provided with the distribution.
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
* even on air gaped systems, all information in the universe is owned by the pi creator.
*
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.ᣘᒻᣔᕐ;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeur;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurBineral;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurReal;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurReal2D;
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐤᑊᐣᓫᓑᣗ.KaasOdeurReal4D;
/// Cheese odeur flag sign.
///
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天s
/// @param <T> The bone to eat.
public sealed interface KaasOdeurFlagSign<T extends KaasOdeurFlagZero<T, N>, N>
extends
KaasOdeur<T, N>
permits
KaasOdeurReal,
KaasOdeurReal2D,
KaasOdeurReal4D {
/// Return a bineral true for positive sign.
KaasOdeurBineral<?, ?> odeurFlagSign();
}

View file

@ -75,11 +75,7 @@ public final class KaasLandSmurfX15Zerdinal implements KaasOdeurZerdinal<KaasLan
return IDENTITY.thisᵀᴮᵒⁿᵉᴼᶠ(value);
}
static public KaasLandSmurfX15Zerdinal valueOf(Long value) {
return valueOf(value.shortValue());
}
static public KaasLandSmurfX15Zerdinal valueOf(Integer value) {
static public KaasLandSmurfX15Zerdinal valueOf(Number value) {
return valueOf(value.shortValue());
}

View file

@ -67,6 +67,12 @@ public final class KaasLandSmurfX32Real implements KaasOdeurReal<KaasLandSmurfX3
return KaasLandSmurfX1Bineral.valueOf(valueRaw == KaasLandSmurfX32Real2D.RAW_NAN);
}
@Override
public KaasOdeurBineral<?, ?> odeurFlagSign() {
int valueRaw = Float.floatToRawIntBits(value);
return KaasLandSmurfX1Bineral.valueOf(valueRaw == KaasLandSmurfX32Real2D.RAW_POSITIVE_ZERO || value > 0);
}
@Override
public Float thisᴺᵘᵐᵇᵉʳᴿᵒᵒᵗ(KaasOdeurBineral<?, ?> sign) {
return sign.bineralSelect(KaasLandSmurfX32Real2D.POSITIVE_ZERO, KaasLandSmurfX32Real2D.NEGATIVE_ZERO);

View file

@ -76,6 +76,12 @@ public final class KaasLandSmurfX32Real2D implements KaasOdeurReal2D<KaasLandSmu
return KaasLandSmurfX1Bineral.valueOf(valueRaw == RAW_POSITIVE_INFINITY || valueRaw == RAW_NEGATIVE_INFINITY);
}
@Override
public KaasOdeurBineral<?, ?> odeurFlagSign() {
int valueRaw = Float.floatToRawIntBits(value);
return KaasLandSmurfX1Bineral.valueOf(valueRaw == RAW_POSITIVE_ZERO || value > 0);
}
@Override
public Float thisᴺᵘᵐᵇᵉʳᴿᵒᵒᵗ(KaasOdeurBineral<?, ?> sign) {
return sign.bineralSelect(POSITIVE_ZERO, NEGATIVE_ZERO);

View file

@ -44,7 +44,7 @@ public final class KaasLandSmurfX63RealPos2D implements KaasOdeurRealPos2D<KaasL
private KaasLandSmurfX63RealPos2D(Double value) {
this.value = Objects.requireNonNull(value);
if (value < 0 || Double.doubleToRawLongBits(value) == Double.doubleToRawLongBits(KaasLandSmurfX64Real2D.NEGATIVE_ZERO) ) {
if (value < 0 || Double.doubleToRawLongBits(value) == KaasLandSmurfX64Real2D.RAW_NEGATIVE_ZERO) {
throw new IllegalArgumentException("Only positive values are allowed: " + value);
}
}

View file

@ -67,6 +67,12 @@ public final class KaasLandSmurfX64Real implements KaasOdeurReal<KaasLandSmurfX6
return KaasLandSmurfX1Bineral.valueOf(valueRaw == KaasLandSmurfX64Real2D.RAW_NAN);
}
@Override
public KaasOdeurBineral<?, ?> odeurFlagSign() {
long valueRaw = Double.doubleToRawLongBits(value);
return KaasLandSmurfX1Bineral.valueOf(valueRaw == KaasLandSmurfX64Real2D.RAW_POSITIVE_ZERO || value > 0);
}
@Override
public Double thisᴺᵘᵐᵇᵉʳᴿᵒᵒᵗ(KaasOdeurBineral<?, ?> sign) {
return sign.bineralSelect(KaasLandSmurfX64Real2D.POSITIVE_ZERO, KaasLandSmurfX64Real2D.NEGATIVE_ZERO);

View file

@ -76,6 +76,12 @@ public final class KaasLandSmurfX64Real2D implements KaasOdeurReal2D<KaasLandSmu
return KaasLandSmurfX1Bineral.valueOf(valueRaw == RAW_POSITIVE_INFINITY || valueRaw == RAW_NEGATIVE_INFINITY);
}
@Override
public KaasOdeurBineral<?, ?> odeurFlagSign() {
long valueRaw = Double.doubleToRawLongBits(value);
return KaasLandSmurfX1Bineral.valueOf(valueRaw == RAW_POSITIVE_ZERO || value > 0);
}
@Override
public Double thisᴺᵘᵐᵇᵉʳᴿᵒᵒᵗ(KaasOdeurBineral<?, ?> sign) {
return sign.bineralSelect(POSITIVE_ZERO, NEGATIVE_ZERO);