Skip to content

Commit bb4bfa8

Browse files
authored
RealNumberQ->RealValuedNumberQ (#897)
Rename this symbol for compatibility with the last version of WMA
1 parent eb30221 commit bb4bfa8

File tree

11 files changed

+38
-29
lines changed

11 files changed

+38
-29
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ New Builtins
1010

1111
* `Elements`
1212
* `RealAbs` and `RealSign`
13+
* `RealValuedNumberQ`
14+
1315

1416
Compatibility
1517
-------------

mathics/builtin/arithmetic.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -856,34 +856,41 @@ class Real_(Builtin):
856856
name = "Real"
857857

858858

859-
class RealNumberQ(Test):
859+
class RealValuedNumberQ(Test):
860860
"""
861-
## Not found in WMA
862-
## <url>:WMA link:https://reference.wolfram.com/language/ref/RealNumberQ.html</url>
861+
<url>:WMA link:https://reference.wolfram.com/language/ref/RealValuedNumberQ.html</url>
863862
864863
<dl>
865-
<dt>'RealNumberQ[$expr$]'
864+
<dt>'RealValuedNumberQ[$expr$]'
866865
<dd>returns 'True' if $expr$ is an explicit number with no imaginary component.
867866
</dl>
868867
869-
>> RealNumberQ[10]
868+
>> RealValuedNumberQ[10]
870869
= True
871-
>> RealNumberQ[4.0]
870+
>> RealValuedNumberQ[4.0]
872871
= True
873-
>> RealNumberQ[1+I]
872+
>> RealValuedNumberQ[1+I]
874873
= False
875-
>> RealNumberQ[0 * I]
874+
>> RealValuedNumberQ[0 * I]
876875
= True
877-
>> RealNumberQ[0.0 * I]
876+
>> RealValuedNumberQ[0.0 * I]
878877
= False
878+
879+
"Underflow[]" and "Overflow[]" are considered Real valued numbers:
880+
>> {RealValuedNumberQ[Underflow[]], RealValuedNumberQ[Overflow[]]}
881+
= {True, True}
879882
"""
880883

881884
attributes = A_NO_ATTRIBUTES
882885

883886
summary_text = "test whether an expression is a real number"
884887

885888
def test(self, expr) -> bool:
886-
return isinstance(expr, (Integer, Rational, Real))
889+
return (
890+
isinstance(expr, (Integer, Rational, Real))
891+
or expr.has_form("Underflow", 0)
892+
or expr.has_form("Overflow", 0)
893+
)
887894

888895

889896
class Sum(IterationFunction, SympyFunction):

mathics/builtin/image/misc.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,14 +141,14 @@ class RandomImage(Builtin):
141141
}
142142
rules = {
143143
"RandomImage[]": "RandomImage[{0, 1}, {150, 150}]",
144-
"RandomImage[max_?RealNumberQ]": "RandomImage[{0, max}, {150, 150}]",
145-
"RandomImage[{minval_?RealNumberQ, maxval_?RealNumberQ}]": "RandomImage[{minval, maxval}, {150, 150}]",
146-
"RandomImage[max_?RealNumberQ, {w_Integer, h_Integer}]": "RandomImage[{0, max}, {w, h}]",
144+
"RandomImage[max_?RealValuedNumberQ]": "RandomImage[{0, max}, {150, 150}]",
145+
"RandomImage[{minval_?RealValuedNumberQ, maxval_?RealValuedNumberQ}]": "RandomImage[{minval, maxval}, {150, 150}]",
146+
"RandomImage[max_?RealValuedNumberQ, {w_Integer, h_Integer}]": "RandomImage[{0, max}, {w, h}]",
147147
}
148148
summary_text = "build an image with random pixels"
149149

150150
def eval(self, minval, maxval, w, h, evaluation, options):
151-
"RandomImage[{minval_?RealNumberQ, maxval_?RealNumberQ}, {w_Integer, h_Integer}, OptionsPattern[RandomImage]]"
151+
"RandomImage[{minval_?RealValuedNumberQ, maxval_?RealValuedNumberQ}, {w_Integer, h_Integer}, OptionsPattern[RandomImage]]"
152152
color_space = self.get_option(options, "ColorSpace", evaluation)
153153
if (
154154
isinstance(color_space, Symbol)
@@ -203,11 +203,11 @@ class EdgeDetect(Builtin):
203203

204204
rules = {
205205
"EdgeDetect[i_Image]": "EdgeDetect[i, 2, 0.2]",
206-
"EdgeDetect[i_Image, r_?RealNumberQ]": "EdgeDetect[i, r, 0.2]",
206+
"EdgeDetect[i_Image, r_?RealValuedNumberQ]": "EdgeDetect[i, r, 0.2]",
207207
}
208208

209209
def eval(self, image, r, t, evaluation: Evaluation):
210-
"EdgeDetect[image_Image, r_?RealNumberQ, t_?RealNumberQ]"
210+
"EdgeDetect[image_Image, r_?RealValuedNumberQ, t_?RealValuedNumberQ]"
211211
import skimage.feature
212212

213213
pixels = image.grayscale().pixels

mathics/builtin/image/morph.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class _MorphologyFilter(Builtin):
2020
}
2121

2222
requires = skimage_requires
23-
rules = {"%(name)s[i_Image, r_?RealNumberQ]": "%(name)s[i, BoxMatrix[r]]"}
23+
rules = {"%(name)s[i_Image, r_?RealValuedNumberQ]": "%(name)s[i, BoxMatrix[r]]"}
2424

2525
def eval(self, image, k, evaluation: Evaluation):
2626
"%(name)s[image_Image, k_?MatrixQ]"
@@ -114,7 +114,7 @@ class MorphologicalComponents(Builtin):
114114
rules = {"MorphologicalComponents[i_Image]": "MorphologicalComponents[i, 0]"}
115115

116116
def eval(self, image, t, evaluation: Evaluation):
117-
"MorphologicalComponents[image_Image, t_?RealNumberQ]"
117+
"MorphologicalComponents[image_Image, t_?RealValuedNumberQ]"
118118
pixels = pixels_as_ubyte(
119119
pixels_as_float(image.grayscale().pixels) > t.round_to_float()
120120
)

mathics/builtin/image/pixel.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class PixelValue(Builtin):
4848
summary_text = "get pixel value of image at a given position"
4949

5050
def eval(self, image: Image, x, y, evaluation: Evaluation):
51-
"PixelValue[image_Image, {x_?RealNumberQ, y_?RealNumberQ}]"
51+
"PixelValue[image_Image, {x_?RealValuedNumberQ, y_?RealValuedNumberQ}]"
5252
x = int(x.round_to_float())
5353
y = int(y.round_to_float())
5454
height = image.pixels.shape[0]
@@ -86,13 +86,13 @@ class PixelValuePositions(Builtin):
8686
"""
8787

8888
rules = {
89-
"PixelValuePositions[image_Image, val_?RealNumberQ]": "PixelValuePositions[image, val, 0]"
89+
"PixelValuePositions[image_Image, val_?RealValuedNumberQ]": "PixelValuePositions[image, val, 0]"
9090
}
9191

9292
summary_text = "list the position of pixels with a given value"
9393

9494
def eval(self, image: Image, val, d, evaluation: Evaluation):
95-
"PixelValuePositions[image_Image, val_?RealNumberQ, d_?RealNumberQ]"
95+
"PixelValuePositions[image_Image, val_?RealValuedNumberQ, d_?RealValuedNumberQ]"
9696
val = val.round_to_float()
9797
d = d.round_to_float()
9898

mathics/builtin/manipulate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@
8888
# "System`Private`ManipulateParameter[{{s_Symbol, d_}, r__}]": "System`Private`ManipulateParameter[{Symbol -> s, Default -> d, Label -> s}, {r}]",
8989
# "System`Private`ManipulateParameter[{{s_Symbol, d_, l_}, r__}]": "System`Private`ManipulateParameter[{Symbol -> s, Default -> d, Label -> l}, {r}]",
9090
# # detect different kinds of widgets. on the use of the duplicate key "Default ->", see _WidgetInstantiator.add()
91-
# "System`Private`ManipulateParameter[var_, {min_?RealNumberQ, max_?RealNumberQ}]": 'Join[{Type -> "Continuous", Minimum -> min, Maximum -> max, Default -> min}, var]',
92-
# "System`Private`ManipulateParameter[var_, {min_?RealNumberQ, max_?RealNumberQ, step_?RealNumberQ}]": 'Join[{Type -> "Discrete", Minimum -> min, Maximum -> max, Step -> step, Default -> min}, var]',
91+
# "System`Private`ManipulateParameter[var_, {min_?RealValuedNumberQ, max_?RealValuedNumberQ}]": 'Join[{Type -> "Continuous", Minimum -> min, Maximum -> max, Default -> min}, var]',
92+
# "System`Private`ManipulateParameter[var_, {min_?RealValuedNumberQ, max_?RealValuedNumberQ, step_?RealValuedNumberQ}]": 'Join[{Type -> "Discrete", Minimum -> min, Maximum -> max, Step -> step, Default -> min}, var]',
9393
# "System`Private`ManipulateParameter[var_, {opt_List}] /; Length[opt] > 0": 'Join[{Type -> "Options", Options -> opt, Default -> Part[opt, 1]}, var]',
9494
# }
9595

mathics/builtin/matrices/constrmatrix.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class DiamondMatrix(Builtin):
101101
summary_text = "create a matrix with 1 in a diamond-shaped region, and 0 outside"
102102

103103
def eval(self, r, evaluation: Evaluation):
104-
"DiamondMatrix[r_?RealNumberQ]"
104+
"DiamondMatrix[r_?RealValuedNumberQ]"
105105
py_r = abs(r.round_to_float())
106106
t = int(math.floor(0.5 + py_r))
107107

@@ -138,7 +138,7 @@ class DiskMatrix(Builtin):
138138
summary_text = "create a matrix with 1 in a disk-shaped region, and 0 outside"
139139

140140
def eval(self, r, evaluation: Evaluation):
141-
"DiskMatrix[r_?RealNumberQ]"
141+
"DiskMatrix[r_?RealValuedNumberQ]"
142142
py_r = abs(r.round_to_float())
143143
s = int(math.floor(0.5 + py_r))
144144

mathics/builtin/numbers/calculus.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2216,7 +2216,7 @@ class Solve(Builtin):
22162216
rules = {
22172217
"Solve[eqs_, vars_, Complexes]": "Solve[eqs, vars]",
22182218
"Solve[eqs_, vars_, Reals]": (
2219-
"Cases[Solve[eqs, vars], {Rule[x_,y_?RealNumberQ]}]"
2219+
"Cases[Solve[eqs, vars], {Rule[x_,y_?RealValuedNumberQ]}]"
22202220
),
22212221
"Solve[eqs_, vars_, Integers]": (
22222222
"Cases[Solve[eqs, vars], {Rule[x_,y_Integer]}]"

mathics/builtin/numbers/trig.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ class ArcTan(MPMathFunction):
575575
"ArcTan[Undefined]": "Undefined",
576576
"ArcTan[Undefined, x_]": "Undefined",
577577
"ArcTan[y_, Undefined]": "Undefined",
578-
"ArcTan[x_?RealNumberQ, y_?RealNumberQ]": """If[x == 0, If[y == 0, 0, If[y > 0, Pi/2, -Pi/2]], If[x > 0,
578+
"ArcTan[x_?RealValuedNumberQ, y_?RealValuedNumberQ]": """If[x == 0, If[y == 0, 0, If[y > 0, Pi/2, -Pi/2]], If[x > 0,
579579
ArcTan[y/x], If[y >= 0, ArcTan[y/x] + Pi, ArcTan[y/x] - Pi]]]""",
580580
"Derivative[1][ArcTan]": "1/(1+#^2)&",
581581
}

mathics/builtin/numeric.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -725,7 +725,7 @@ class Round(Builtin):
725725

726726
rules = {
727727
"Round[expr_?NumericQ]": "Round[Re[expr], 1] + I * Round[Im[expr], 1]",
728-
"Round[expr_Complex, k_?RealNumberQ]": (
728+
"Round[expr_Complex, k_?RealValuedNumberQ]": (
729729
"Round[Re[expr], k] + I * Round[Im[expr], k]"
730730
),
731731
}

0 commit comments

Comments
 (0)