In the course of solving question 134644, I encountered the message
Reduce::ztest1: Unable to decide whether numeric quantity -Log[5381171456512]+Log[(-Sqrt[101] Log2-10 Sqrt[101] Log[5]+101 (Log[<<1>>]+<<1>>+<<1>>)+Sqrt[101] Log[Plus[<<2>>]])^10/((30100251-2278951 Sqrt[101]) (Log2+10 Log[5]-Log[Plus[<<2>>]])^10)] is equal to zero. Assuming it is.
with the numeric quantity in Short
form. To obtain the entire expression, I tried
EvaluationData[Reduce[eq3 /. {m -> 0, n -> 0}, {A, c1, d, k}, Reals]]
along the line of an answer by Szabolcs. Indeed, it provided the desired complete expression. But, it also provided about 125 error messages, all apparently internally generated by EvaluationData
. Although the desired quantity can be isolated by
EvaluationData[Reduce[eq3 /. {m -> 0, n -> 0}, {A, c1, d, k}, Reals]]
["MessagesExpressions"][[-1, 1, 2]] // ReleaseHold
(* -Log[5381171456512] + Log[(-Sqrt[101] Log[2] - 10 Sqrt[101] Log[5] +
101 (Log[2] + 10 Log[5] - Log[30100251 - 2278951 Sqrt[101]]) +
Sqrt[101] Log[30100251 - 2278951 Sqrt[101]])^10/((30100251 - 2278951 Sqrt[101])
(Log[2] + 10 Log[5] - Log[30100251 - 2278951 Sqrt[101]])^10)] *)
I do not find this work-around particularly satisfying. Two questions:
- Is this undesired
EvaluationData
behavior a bug? (I believe it is.) - Does an alternative work-around exist, perhaps by instructing
Message
not to useShort
on lengthy expressions.
Edit: Bug apparently fixed in Version 11.1
Reduce
no longer produces the warning message given above for Reduce[eq3 /. {m -> 0, n -> 0}, {A, c1, d, k}, Reals]
, so I could not test
EvaluationData[Reduce[eq3 /. {m -> 0, n -> 0}, {A, c1, d, k}, Reals]]
on the exact same case. I tried a different case, and it worked fine.
Answer
This does seem like a bug and I'll file a report.
In terms of workarounds, it is possible to avoid the application of Short
by something like
Block[{$MessagePrePrint},
ClearSystemCache[]; Reduce[eq3 /. {m -> 0, n -> 0}, Reals] // Simplify]
(note ClearSystemCache[]
has been added to make sure the Reduce::ztest1
message is always issued)
and the following uses the testing framework to collect the message
VerificationTest[ClearSystemCache[];
Reduce[eq3 /. {m -> 0, n -> 0}, Reals] // Simplify;, Null]["ActualMessages"]
(* {HoldForm[Message[Reduce::ztest1, HoldForm[-Log[5381171456512] +
Log[((-Sqrt[101])*Log[2] - 10*Sqrt[101]*Log[5] +
101*(Log[2] + 10*Log[5] - Log[30100251 - 2278951*Sqrt[101]]) +
Sqrt[101]*Log[30100251 - 2278951*Sqrt[101]])^10/((30100251 -
2278951*Sqrt[101])*(Log[2] + 10*Log[5] -
Log[30100251 - 2278951*Sqrt[101]])^10)]]]]} *)
Comments
Post a Comment