diff --git a/BREAKING-CHANGES.md b/BREAKING-CHANGES.md
index 148ef6384..f477c4fb5 100644
--- a/BREAKING-CHANGES.md
+++ b/BREAKING-CHANGES.md
@@ -170,6 +170,17 @@ and `Simplify` passed that on as `not x = 0`, though at `x = 0` the input is `-y
|---|---|---|
| `"-(t*x + y)/(1 - y*x) + (t*x + y)/(1 - y*x)".Simplify()` | `0 provided not 1 - x * y = 0 and not x = 0` | `0 provided not 1 - x * y = 0` |
+### The signum of a value that does not exist has none
+
+**Silent: `sgn(NaN)` is `NaN`, where it was `1`.** The rule took the sign of a real number from its `EDecimal`, whose
+`Sign` is `1` for `NaN`. So the signum of anything without a value was `1`: `sgn(-1 provided false)`, `sgn(0/0)`, and
+`1 + sgn(-1 provided pi < 3)` was `2` ([#2241](https://github.com/asc-community/AngouriMath/issues/2241)).
+
+| Input | Was (2.6.0) | Now |
+|---|---|---|
+| `"sgn(NaN)".ToEntity().Evaled` | `1` | `NaN` |
+| `"sgn(-1 provided false)".ToEntity().Evaled` | `1` | `NaN` |
+
### A matrix is divided, raised to a power and compared as a matrix
**Silent: wrong answers about matrices become right, or stay written.** Where an operation had no answer of its own
diff --git a/Sources/.editorconfig b/Sources/.editorconfig
index eae3ab026..c1da61531 100644
--- a/Sources/.editorconfig
+++ b/Sources/.editorconfig
@@ -923,6 +923,9 @@ file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed
[Tests/UnitTests/Convenience/EulerGammaTest.cs]
file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n
+[Tests/UnitTests/Convenience/SignumOfNaNTest.cs]
+file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n
+
[AngouriMath/Functions/Compilation/RealProducts.cs]
file_header_template=\nCopyright (c) 2019-2026 Angouri.\nAngouriMath is licensed under MIT.\nDetails: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.\nWebsite: https://am.angouri.org.\n
diff --git a/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs b/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs
index 4168f7f50..f8a8bc6fd 100644
--- a/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs
+++ b/Sources/AngouriMath/Functions/Evaluation/Evaluation.Continuous/Evaluation.Continuous.Arithmetics.Classes.cs
@@ -1206,6 +1206,9 @@ protected override Entity InnerSimplify(bool isExact)
=> ExpandOnOneArgument(Argument,
a => a switch
{
+ // NaN has no sign, and its signum no value: EDecimal's Sign of NaN is 1, which made
+ // sgn(-1 provided false) 1. https://github.com/asc-community/AngouriMath/issues/2241
+ Real nan when nan.EDecimal.IsNaN() => nan,
Real n => n.EDecimal.Sign,
Complex n when !isExact => Number.Signum(n),
// sgn(|z|) is 1 wherever z is nonzero and 0 where it is not: |z| is never
diff --git a/Sources/Tests/Harnesses/CanonCheck/canoncheck-baseline.tsv b/Sources/Tests/Harnesses/CanonCheck/canoncheck-baseline.tsv
index 4ce12fc10..327504808 100644
--- a/Sources/Tests/Harnesses/CanonCheck/canoncheck-baseline.tsv
+++ b/Sources/Tests/Harnesses/CanonCheck/canoncheck-baseline.tsv
@@ -188,7 +188,6 @@ InnerSimplified order (1 * x) ^ 2 + cos(1/2 * 0) cos(1/2 * 0) + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + e ^ 0 ^ 2 e ^ 0 ^ 2 + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + e ^ 1 e ^ 1 + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + ln(-2) ln(-2) + (1 * x) ^ 2
-InnerSimplified order (1 * x) ^ 2 + sgn(a / 0) sgn(a / 0) + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + sgn(x + x) sgn(x + x) + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + sin(y - 0) sin(y - 0) + (1 * x) ^ 2
InnerSimplified order (1 * x) ^ 2 + sqrt(1/2 / a) sqrt(1/2 / a) + (1 * x) ^ 2
@@ -304,7 +303,6 @@ InnerSimplified order (1/2) ^ a + cos(1/2 * 0) cos(1/2 * 0) + (1/2) ^ a
InnerSimplified order (1/2) ^ a + e ^ 0 ^ 2 e ^ 0 ^ 2 + (1/2) ^ a
InnerSimplified order (1/2) ^ a + e ^ 1 e ^ 1 + (1/2) ^ a
InnerSimplified order (1/2) ^ a + ln(-2) ln(-2) + (1/2) ^ a
-InnerSimplified order (1/2) ^ a + sgn(a / 0) sgn(a / 0) + (1/2) ^ a
InnerSimplified order (1/2) ^ a + sgn(x + x) sgn(x + x) + (1/2) ^ a
InnerSimplified order (1/2) ^ a + sin(y - 0) sin(y - 0) + (1/2) ^ a
InnerSimplified order (1/2) ^ a + sqrt(1/2 / a) sqrt(1/2 / a) + (1/2) ^ a
@@ -450,7 +448,6 @@ InnerSimplified order (y + -1) ^ (-1) + cos(1/2 * 0) cos(1/2 * 0) + (y + -1) ^ (
InnerSimplified order (y + -1) ^ (-1) + e ^ 0 ^ 2 e ^ 0 ^ 2 + (y + -1) ^ (-1)
InnerSimplified order (y + -1) ^ (-1) + e ^ 1 e ^ 1 + (y + -1) ^ (-1)
InnerSimplified order (y + -1) ^ (-1) + ln(-2) ln(-2) + (y + -1) ^ (-1)
-InnerSimplified order (y + -1) ^ (-1) + sgn(a / 0) sgn(a / 0) + (y + -1) ^ (-1)
InnerSimplified order (y + -1) ^ (-1) + sgn(x + x) sgn(x + x) + (y + -1) ^ (-1)
InnerSimplified order (y + -1) ^ (-1) + sin(y - 0) sin(y - 0) + (y + -1) ^ (-1)
InnerSimplified order (y + -1) ^ (-1) + sqrt(1/2 / a) sqrt(1/2 / a) + (y + -1) ^ (-1)
@@ -514,7 +511,6 @@ InnerSimplified order (y ^ x) ^ (-1) + cos(1/2 * 0) cos(1/2 * 0) + (y ^ x) ^ (-1
InnerSimplified order (y ^ x) ^ (-1) + e ^ 0 ^ 2 e ^ 0 ^ 2 + (y ^ x) ^ (-1)
InnerSimplified order (y ^ x) ^ (-1) + e ^ 1 e ^ 1 + (y ^ x) ^ (-1)
InnerSimplified order (y ^ x) ^ (-1) + ln(-2) ln(-2) + (y ^ x) ^ (-1)
-InnerSimplified order (y ^ x) ^ (-1) + sgn(a / 0) sgn(a / 0) + (y ^ x) ^ (-1)
InnerSimplified order (y ^ x) ^ (-1) + sgn(x + x) sgn(x + x) + (y ^ x) ^ (-1)
InnerSimplified order (y ^ x) ^ (-1) + sin(y - 0) sin(y - 0) + (y ^ x) ^ (-1)
InnerSimplified order (y ^ x) ^ (-1) + sqrt(1/2 / a) sqrt(1/2 / a) + (y ^ x) ^ (-1)
@@ -548,7 +544,6 @@ InnerSimplified order -1 - x + cos(1/2 * 0) cos(1/2 * 0) + -1 - x
InnerSimplified order -1 - x + e ^ 0 ^ 2 e ^ 0 ^ 2 + -1 - x
InnerSimplified order -1 - x + e ^ 1 e ^ 1 + -1 - x
InnerSimplified order -1 - x + ln(-2) ln(-2) + -1 - x
-InnerSimplified order -1 - x + sgn(a / 0) sgn(a / 0) + -1 - x
InnerSimplified order -1 - x + sgn(x + x) sgn(x + x) + -1 - x
InnerSimplified order -1 - x + sin(y - 0) sin(y - 0) + -1 - x
InnerSimplified order -1 - x + sqrt(1/2 / a) sqrt(1/2 / a) + -1 - x
@@ -612,7 +607,6 @@ InnerSimplified order -y * a + cos(1/2 * 0) cos(1/2 * 0) + -y * a
InnerSimplified order -y * a + e ^ 0 ^ 2 e ^ 0 ^ 2 + -y * a
InnerSimplified order -y * a + e ^ 1 e ^ 1 + -y * a
InnerSimplified order -y * a + ln(-2) ln(-2) + -y * a
-InnerSimplified order -y * a + sgn(a / 0) sgn(a / 0) + -y * a
InnerSimplified order -y * a + sgn(x + x) sgn(x + x) + -y * a
InnerSimplified order -y * a + sin(y - 0) sin(y - 0) + -y * a
InnerSimplified order -y * a + sqrt(1/2 / a) sqrt(1/2 / a) + -y * a
@@ -672,7 +666,6 @@ InnerSimplified order 0 - a + cos(1/2 * 0) cos(1/2 * 0) + 0 - a
InnerSimplified order 0 - a + e ^ 0 ^ 2 e ^ 0 ^ 2 + 0 - a
InnerSimplified order 0 - a + e ^ 1 e ^ 1 + 0 - a
InnerSimplified order 0 - a + ln(-2) ln(-2) + 0 - a
-InnerSimplified order 0 - a + sgn(a / 0) sgn(a / 0) + 0 - a
InnerSimplified order 0 - a + sgn(x + x) sgn(x + x) + 0 - a
InnerSimplified order 0 - a + sin(y - 0) sin(y - 0) + 0 - a
InnerSimplified order 0 - a + sqrt(1/2 / a) sqrt(1/2 / a) + 0 - a
@@ -788,7 +781,6 @@ InnerSimplified order 1 / (-1 - x) + cos(1/2 * 0) cos(1/2 * 0) + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + e ^ 0 ^ 2 e ^ 0 ^ 2 + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + e ^ 1 e ^ 1 + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + ln(-2) ln(-2) + 1 / (-1 - x)
-InnerSimplified order 1 / (-1 - x) + sgn(a / 0) sgn(a / 0) + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + sgn(x + x) sgn(x + x) + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + sin(y - 0) sin(y - 0) + 1 / (-1 - x)
InnerSimplified order 1 / (-1 - x) + sqrt(1/2 / a) sqrt(1/2 / a) + 1 / (-1 - x)
@@ -930,7 +922,6 @@ InnerSimplified order 2 ^ x + cos(1/2 * 0) cos(1/2 * 0) + 2 ^ x
InnerSimplified order 2 ^ x + e ^ 0 ^ 2 e ^ 0 ^ 2 + 2 ^ x
InnerSimplified order 2 ^ x + e ^ 1 e ^ 1 + 2 ^ x
InnerSimplified order 2 ^ x + ln(-2) ln(-2) + 2 ^ x
-InnerSimplified order 2 ^ x + sgn(a / 0) sgn(a / 0) + 2 ^ x
InnerSimplified order 2 ^ x + sgn(x + x) sgn(x + x) + 2 ^ x
InnerSimplified order 2 ^ x + sin(y - 0) sin(y - 0) + 2 ^ x
InnerSimplified order 2 ^ x + sqrt(1/2 / a) sqrt(1/2 / a) + 2 ^ x
@@ -994,7 +985,6 @@ InnerSimplified order a / y + cos(1/2 * 0) cos(1/2 * 0) + a / y
InnerSimplified order a / y + e ^ 0 ^ 2 e ^ 0 ^ 2 + a / y
InnerSimplified order a / y + e ^ 1 e ^ 1 + a / y
InnerSimplified order a / y + ln(-2) ln(-2) + a / y
-InnerSimplified order a / y + sgn(a / 0) sgn(a / 0) + a / y
InnerSimplified order a / y + sgn(x + x) sgn(x + x) + a / y
InnerSimplified order a / y + sin(y - 0) sin(y - 0) + a / y
InnerSimplified order a / y + sqrt(1/2 / a) sqrt(1/2 / a) + a / y
@@ -1058,7 +1048,6 @@ InnerSimplified order a ^ 1 + cos(1/2 * 0) cos(1/2 * 0) + a ^ 1
InnerSimplified order a ^ 1 + e ^ 0 ^ 2 e ^ 0 ^ 2 + a ^ 1
InnerSimplified order a ^ 1 + e ^ 1 e ^ 1 + a ^ 1
InnerSimplified order a ^ 1 + ln(-2) ln(-2) + a ^ 1
-InnerSimplified order a ^ 1 + sgn(a / 0) sgn(a / 0) + a ^ 1
InnerSimplified order a ^ 1 + sgn(x + x) sgn(x + x) + a ^ 1
InnerSimplified order a ^ 1 + sin(y - 0) sin(y - 0) + a ^ 1
InnerSimplified order a ^ 1 + sqrt(1/2 / a) sqrt(1/2 / a) + a ^ 1
@@ -1122,7 +1111,6 @@ InnerSimplified order abs(a ^ a) + cos(1/2 * 0) cos(1/2 * 0) + abs(a ^ a)
InnerSimplified order abs(a ^ a) + e ^ 0 ^ 2 e ^ 0 ^ 2 + abs(a ^ a)
InnerSimplified order abs(a ^ a) + e ^ 1 e ^ 1 + abs(a ^ a)
InnerSimplified order abs(a ^ a) + ln(-2) ln(-2) + abs(a ^ a)
-InnerSimplified order abs(a ^ a) + sgn(a / 0) sgn(a / 0) + abs(a ^ a)
InnerSimplified order abs(a ^ a) + sgn(x + x) sgn(x + x) + abs(a ^ a)
InnerSimplified order abs(a ^ a) + sin(y - 0) sin(y - 0) + abs(a ^ a)
InnerSimplified order abs(a ^ a) + sqrt(1/2 / a) sqrt(1/2 / a) + abs(a ^ a)
@@ -1186,7 +1174,6 @@ InnerSimplified order abs(x - 2) + cos(1/2 * 0) cos(1/2 * 0) + abs(x - 2)
InnerSimplified order abs(x - 2) + e ^ 0 ^ 2 e ^ 0 ^ 2 + abs(x - 2)
InnerSimplified order abs(x - 2) + e ^ 1 e ^ 1 + abs(x - 2)
InnerSimplified order abs(x - 2) + ln(-2) ln(-2) + abs(x - 2)
-InnerSimplified order abs(x - 2) + sgn(a / 0) sgn(a / 0) + abs(x - 2)
InnerSimplified order abs(x - 2) + sgn(x + x) sgn(x + x) + abs(x - 2)
InnerSimplified order abs(x - 2) + sin(y - 0) sin(y - 0) + abs(x - 2)
InnerSimplified order abs(x - 2) + sqrt(1/2 / a) sqrt(1/2 / a) + abs(x - 2)
@@ -1250,7 +1237,6 @@ InnerSimplified order cos(-x) + cos(1/2 * 0) cos(1/2 * 0) + cos(-x)
InnerSimplified order cos(-x) + e ^ 0 ^ 2 e ^ 0 ^ 2 + cos(-x)
InnerSimplified order cos(-x) + e ^ 1 e ^ 1 + cos(-x)
InnerSimplified order cos(-x) + ln(-2) ln(-2) + cos(-x)
-InnerSimplified order cos(-x) + sgn(a / 0) sgn(a / 0) + cos(-x)
InnerSimplified order cos(-x) + sgn(x + x) sgn(x + x) + cos(-x)
InnerSimplified order cos(-x) + sin(y - 0) sin(y - 0) + cos(-x)
InnerSimplified order cos(-x) + sqrt(1/2 / a) sqrt(1/2 / a) + cos(-x)
@@ -1366,7 +1352,6 @@ InnerSimplified order e ^ 1 + cos(-x) cos(-x) + e ^ 1
InnerSimplified order e ^ 1 + cos(1/2 * 0) cos(1/2 * 0) + e ^ 1
InnerSimplified order e ^ 1 + e ^ 0 ^ 2 e ^ 0 ^ 2 + e ^ 1
InnerSimplified order e ^ 1 + ln(-2) ln(-2) + e ^ 1
-InnerSimplified order e ^ 1 + sgn(a / 0) sgn(a / 0) + e ^ 1
InnerSimplified order e ^ 1 + sgn(x + x) sgn(x + x) + e ^ 1
InnerSimplified order e ^ 1 + sin(y - 0) sin(y - 0) + e ^ 1
InnerSimplified order e ^ 1 + sqrt(1/2 / a) sqrt(1/2 / a) + e ^ 1
@@ -1430,7 +1415,6 @@ InnerSimplified order ln(-2) + cos(-x) cos(-x) + ln(-2)
InnerSimplified order ln(-2) + cos(1/2 * 0) cos(1/2 * 0) + ln(-2)
InnerSimplified order ln(-2) + e ^ 0 ^ 2 e ^ 0 ^ 2 + ln(-2)
InnerSimplified order ln(-2) + e ^ 1 e ^ 1 + ln(-2)
-InnerSimplified order ln(-2) + sgn(a / 0) sgn(a / 0) + ln(-2)
InnerSimplified order ln(-2) + sgn(x + x) sgn(x + x) + ln(-2)
InnerSimplified order ln(-2) + sin(y - 0) sin(y - 0) + ln(-2)
InnerSimplified order ln(-2) + sqrt(1/2 / a) sqrt(1/2 / a) + ln(-2)
@@ -1441,32 +1425,6 @@ InnerSimplified order ln(-2) + x x + ln(-2)
InnerSimplified order ln(-2) + x * 1 x * 1 + ln(-2)
InnerSimplified order ln(-2) + x - y x - y + ln(-2)
InnerSimplified order ln(-2) + y / (-1) y / (-1) + ln(-2)
-InnerSimplified order sgn(a / 0) + (1 * x) ^ 2 (1 * x) ^ 2 + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + (1/2) ^ a (1/2) ^ a + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + (y + -1) ^ (-1) (y + -1) ^ (-1) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + (y ^ x) ^ (-1) (y ^ x) ^ (-1) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + -1 - x -1 - x + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + -y * a -y * a + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + 0 - a 0 - a + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + 1 / (-1 - x) 1 / (-1 - x) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + 2 ^ x 2 ^ x + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + a / y a / y + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + a ^ 1 a ^ 1 + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + abs(a ^ a) abs(a ^ a) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + abs(x - 2) abs(x - 2) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + cos(-x) cos(-x) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + e ^ 1 e ^ 1 + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + ln(-2) ln(-2) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sgn(x + x) sgn(x + x) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sin(y - 0) sin(y - 0) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sqrt(1/2 / a) sqrt(1/2 / a) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sqrt(1/2) sqrt(1/2) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sqrt(a) sqrt(a) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + sqrt(e) sqrt(e) + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + x x + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + x * 1 x * 1 + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + x - y x - y + sgn(a / 0)
-InnerSimplified order sgn(a / 0) + y / (-1) y / (-1) + sgn(a / 0)
InnerSimplified order sgn(x + x) * (-1 - x) (-1 - x) * sgn(x + x)
InnerSimplified order sgn(x + x) * (0 + 2) (0 + 2) * sgn(x + x)
InnerSimplified order sgn(x + x) * (0 - a) (0 - a) * sgn(x + x)
@@ -1521,7 +1479,6 @@ InnerSimplified order sgn(x + x) + cos(1/2 * 0) cos(1/2 * 0) + sgn(x + x)
InnerSimplified order sgn(x + x) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sgn(x + x)
InnerSimplified order sgn(x + x) + e ^ 1 e ^ 1 + sgn(x + x)
InnerSimplified order sgn(x + x) + ln(-2) ln(-2) + sgn(x + x)
-InnerSimplified order sgn(x + x) + sgn(a / 0) sgn(a / 0) + sgn(x + x)
InnerSimplified order sgn(x + x) + sin(y - 0) sin(y - 0) + sgn(x + x)
InnerSimplified order sgn(x + x) + sqrt(1/2 / a) sqrt(1/2 / a) + sgn(x + x)
InnerSimplified order sgn(x + x) + sqrt(1/2) sqrt(1/2) + sgn(x + x)
@@ -1585,7 +1542,6 @@ InnerSimplified order sin(y - 0) + cos(1/2 * 0) cos(1/2 * 0) + sin(y - 0)
InnerSimplified order sin(y - 0) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sin(y - 0)
InnerSimplified order sin(y - 0) + e ^ 1 e ^ 1 + sin(y - 0)
InnerSimplified order sin(y - 0) + ln(-2) ln(-2) + sin(y - 0)
-InnerSimplified order sin(y - 0) + sgn(a / 0) sgn(a / 0) + sin(y - 0)
InnerSimplified order sin(y - 0) + sgn(x + x) sgn(x + x) + sin(y - 0)
InnerSimplified order sin(y - 0) + sqrt(1/2 / a) sqrt(1/2 / a) + sin(y - 0)
InnerSimplified order sin(y - 0) + sqrt(1/2) sqrt(1/2) + sin(y - 0)
@@ -1649,7 +1605,6 @@ InnerSimplified order sqrt(1/2 / a) + cos(1/2 * 0) cos(1/2 * 0) + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + e ^ 1 e ^ 1 + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + ln(-2) ln(-2) + sqrt(1/2 / a)
-InnerSimplified order sqrt(1/2 / a) + sgn(a / 0) sgn(a / 0) + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + sgn(x + x) sgn(x + x) + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + sin(y - 0) sin(y - 0) + sqrt(1/2 / a)
InnerSimplified order sqrt(1/2 / a) + sqrt(1/2) sqrt(1/2) + sqrt(1/2 / a)
@@ -1713,7 +1668,6 @@ InnerSimplified order sqrt(1/2) + cos(1/2 * 0) cos(1/2 * 0) + sqrt(1/2)
InnerSimplified order sqrt(1/2) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sqrt(1/2)
InnerSimplified order sqrt(1/2) + e ^ 1 e ^ 1 + sqrt(1/2)
InnerSimplified order sqrt(1/2) + ln(-2) ln(-2) + sqrt(1/2)
-InnerSimplified order sqrt(1/2) + sgn(a / 0) sgn(a / 0) + sqrt(1/2)
InnerSimplified order sqrt(1/2) + sgn(x + x) sgn(x + x) + sqrt(1/2)
InnerSimplified order sqrt(1/2) + sin(y - 0) sin(y - 0) + sqrt(1/2)
InnerSimplified order sqrt(1/2) + sqrt(1/2 / a) sqrt(1/2 / a) + sqrt(1/2)
@@ -1777,7 +1731,6 @@ InnerSimplified order sqrt(a) + cos(1/2 * 0) cos(1/2 * 0) + sqrt(a)
InnerSimplified order sqrt(a) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sqrt(a)
InnerSimplified order sqrt(a) + e ^ 1 e ^ 1 + sqrt(a)
InnerSimplified order sqrt(a) + ln(-2) ln(-2) + sqrt(a)
-InnerSimplified order sqrt(a) + sgn(a / 0) sgn(a / 0) + sqrt(a)
InnerSimplified order sqrt(a) + sgn(x + x) sgn(x + x) + sqrt(a)
InnerSimplified order sqrt(a) + sin(y - 0) sin(y - 0) + sqrt(a)
InnerSimplified order sqrt(a) + sqrt(1/2 / a) sqrt(1/2 / a) + sqrt(a)
@@ -1841,7 +1794,6 @@ InnerSimplified order sqrt(e) + cos(1/2 * 0) cos(1/2 * 0) + sqrt(e)
InnerSimplified order sqrt(e) + e ^ 0 ^ 2 e ^ 0 ^ 2 + sqrt(e)
InnerSimplified order sqrt(e) + e ^ 1 e ^ 1 + sqrt(e)
InnerSimplified order sqrt(e) + ln(-2) ln(-2) + sqrt(e)
-InnerSimplified order sqrt(e) + sgn(a / 0) sgn(a / 0) + sqrt(e)
InnerSimplified order sqrt(e) + sgn(x + x) sgn(x + x) + sqrt(e)
InnerSimplified order sqrt(e) + sin(y - 0) sin(y - 0) + sqrt(e)
InnerSimplified order sqrt(e) + sqrt(1/2 / a) sqrt(1/2 / a) + sqrt(e)
@@ -1916,7 +1868,6 @@ InnerSimplified order x * 1 + cos(1/2 * 0) cos(1/2 * 0) + x * 1
InnerSimplified order x * 1 + e ^ 0 ^ 2 e ^ 0 ^ 2 + x * 1
InnerSimplified order x * 1 + e ^ 1 e ^ 1 + x * 1
InnerSimplified order x * 1 + ln(-2) ln(-2) + x * 1
-InnerSimplified order x * 1 + sgn(a / 0) sgn(a / 0) + x * 1
InnerSimplified order x * 1 + sgn(x + x) sgn(x + x) + x * 1
InnerSimplified order x * 1 + sin(y - 0) sin(y - 0) + x * 1
InnerSimplified order x * 1 + sqrt(1/2 / a) sqrt(1/2 / a) + x * 1
@@ -1966,7 +1917,6 @@ InnerSimplified order x + cos(1/2 * 0) cos(1/2 * 0) + x
InnerSimplified order x + e ^ 0 ^ 2 e ^ 0 ^ 2 + x
InnerSimplified order x + e ^ 1 e ^ 1 + x
InnerSimplified order x + ln(-2) ln(-2) + x
-InnerSimplified order x + sgn(a / 0) sgn(a / 0) + x
InnerSimplified order x + sgn(x + x) sgn(x + x) + x
InnerSimplified order x + sin(y - 0) sin(y - 0) + x
InnerSimplified order x + sqrt(1/2 / a) sqrt(1/2 / a) + x
@@ -1999,7 +1949,6 @@ InnerSimplified order x - y + cos(1/2 * 0) cos(1/2 * 0) + x - y
InnerSimplified order x - y + e ^ 0 ^ 2 e ^ 0 ^ 2 + x - y
InnerSimplified order x - y + e ^ 1 e ^ 1 + x - y
InnerSimplified order x - y + ln(-2) ln(-2) + x - y
-InnerSimplified order x - y + sgn(a / 0) sgn(a / 0) + x - y
InnerSimplified order x - y + sgn(x + x) sgn(x + x) + x - y
InnerSimplified order x - y + sin(y - 0) sin(y - 0) + x - y
InnerSimplified order x - y + sqrt(1/2 / a) sqrt(1/2 / a) + x - y
@@ -2063,7 +2012,6 @@ InnerSimplified order y / (-1) + cos(1/2 * 0) cos(1/2 * 0) + y / (-1)
InnerSimplified order y / (-1) + e ^ 0 ^ 2 e ^ 0 ^ 2 + y / (-1)
InnerSimplified order y / (-1) + e ^ 1 e ^ 1 + y / (-1)
InnerSimplified order y / (-1) + ln(-2) ln(-2) + y / (-1)
-InnerSimplified order y / (-1) + sgn(a / 0) sgn(a / 0) + y / (-1)
InnerSimplified order y / (-1) + sgn(x + x) sgn(x + x) + y / (-1)
InnerSimplified order y / (-1) + sin(y - 0) sin(y - 0) + y / (-1)
InnerSimplified order y / (-1) + sqrt(1/2 / a) sqrt(1/2 / a) + y / (-1)
diff --git a/Sources/Tests/UnitTests/Convenience/SignumOfNaNTest.cs b/Sources/Tests/UnitTests/Convenience/SignumOfNaNTest.cs
new file mode 100644
index 000000000..eca67f512
--- /dev/null
+++ b/Sources/Tests/UnitTests/Convenience/SignumOfNaNTest.cs
@@ -0,0 +1,49 @@
+//
+// Copyright (c) 2019-2026 Angouri.
+// AngouriMath is licensed under MIT.
+// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md.
+// Website: https://am.angouri.org.
+//
+
+using System.Numerics;
+using AngouriMath;
+using AngouriMath.Extensions;
+using Xunit;
+
+namespace AngouriMath.Tests.Convenience
+{
+ ///
+ /// The signum of a value that does not exist has none. sgn(NaN) was 1, EDecimal's Sign of NaN, so
+ /// sgn(-1 provided false) was 1 and 1 + sgn(-1 provided pi < 3) 2.
+ /// #2241
+ ///
+ [Trait("Area", "Convenience")]
+ public sealed class SignumOfNaNTest
+ {
+ [Theory]
+ [InlineData("sgn(NaN)")]
+ [InlineData("sgn(0/0)")]
+ [InlineData("sgn(-1 provided false)")]
+ [InlineData("1 + sgn(-1 provided pi < 3)")]
+ [InlineData("sgn(i * NaN)")]
+ public void HasNoValue(string expression)
+ {
+ Assert.True(expression.ToEntity().Evaled.IsNaN, $"{expression}: {expression.ToEntity().Evaled}");
+ Assert.True(expression.ToEntity().Simplify().IsNaN, $"{expression}: {expression.ToEntity().Simplify()}");
+ }
+
+ [Theory]
+ [InlineData("sgn(-3)", "-1")]
+ [InlineData("sgn(0)", "0")]
+ [InlineData("sgn(+oo)", "1")]
+ [InlineData("sgn(-oo)", "-1")]
+ [InlineData("sgn(-1 provided pi > 3)", "-1")]
+ public void ElsewhereItIsTheSign(string expression, string expected)
+ => Assert.Equal(expected.ToEntity(), expression.ToEntity().Evaled);
+
+ /// Compiled, it has no value there too, as it already had.
+ [Fact]
+ public void CompiledItHasNoValue()
+ => Assert.True(double.IsNaN("x + sgn(-1 provided pi < 3)".ToEntity().Compile("x").Call(1).Real));
+ }
+}