Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. In[1]:= 2^3^2^3^5^8 < 3^2^2^7^6^7
  2. During evaluation of In[1]:= General::ovfl: Overflow occurred in computation. >>
  3. During evaluation of In[1]:= General::ovfl: Overflow occurred in computation. >>
  4.  
  5. Out[1]= Indeterminate < Indeterminate
  6.  
  7. In[2]:= Log[Log[2]] + Log[3] 2^3^5^8 < Log[Log[3]] + Log[2] 2^7^6^7
  8. During evaluation of In[2]:= General::ovfl: Overflow occurred in computation. >>
  9. During evaluation of In[2]:= General::ovfl: Overflow occurred in computation. >>
  10.  
  11. Out[2]= Overflow[] < Overflow[]
  12.  
  13. In[3]:= WolframAlpha["2^3^2^3^5^8 < 3^2^2^7^6^7", "MathematicaForms"][[2, 1]]
  14. Out[3]= True
  15.  
  16. In[4]:= WolframAlpha["2^2^5^2^7^4^9^3^7^6^9^9^9^9^3^2 < 3^3^6^3^9^4^2^3^2^2^2^2^2^3^3^3", "MathematicaForms"][[2, 1]]
  17. Out[4]= True
  18.  
  19. In[5]:= WolframAlpha["4^6^8^8^9 < 3^2^3^3^3", "MathematicaForms"]
  20. Out[5]= {}
  21.  
  22. In[6]:= WolframAlpha["3^3^3^3^3 < 4^4^3^3^3", "MathematicaForms"][[2, 1]]
  23. Out[6]= False
  24.  
  25. ClearAll[symbolicConvert];
  26. SetAttributes[symbolicConvert, {HoldAll, Listable}];
  27. symbolicConvert[num_] := Unevaluated[num] /. Power -> power
  28.  
  29. ClearAll[log];
  30. log[power[base_, exp_]] := exp * log[base];
  31.  
  32. log[HoldPattern[Times[args__]]] := Total@Map[log, {args}];
  33.  
  34. log[(main : (_log*_power)) + rest_] := log[main] + log[1 + rest/main];
  35.  
  36. log[main_ + rest : log[1 + _]] := log[main] + log[1 + rest/main];
  37.  
  38. start = symbolicConvert[2^3^2^3^5^8]
  39.  
  40. (* power[2, power[3, power[2, power[3, power[5, 8]]]]] *)
  41.  
  42. NestList[log, start,4]
  43.  
  44. ClearAll[getNestingLength];
  45. getNestingLength[expr_power] :=
  46. Length[{expr /. power -> Sequence}] - 1;
  47.  
  48. ClearAll[getMain];
  49. getMain[main_ + log[1 + _]] := main;
  50. getMain[x_ /; FreeQ[x, power]] := x;
  51.  
  52. ClearAll[prep];
  53. SetAttributes[prep, HoldAll];
  54. prep[fst_Power, sec_Power] :=
  55. With[{nest = Max[getNestingLength /@ #]},
  56. Map[Nest[log, #, nest] &, #]] &@symbolicConvert[{fst, sec}];
  57.  
  58. prep[2^3^2^3^5^8, 3^2^2^7^6^7]
  59.  
  60. ClearAll[less];
  61. less[fst_, sec_] /; And @@ Map[
  62. MatchQ[#, (_ + log[1 + _]) | (x_ /; FreeQ[x, power])] &,
  63. {fst, sec}] && getMain[fst] =!= getMain[sec] :=
  64. getMain[fst] < getMain[sec] /. log -> (If[# <= 0, 0, Log[#]] &);
  65.  
  66. less[fst : (main_ + log[1 + fr_/rmain_]), sec : (main_ + log[1 + sr_/rmain_])] :=
  67. less[rmain + fr, rmain + sr];
  68.  
  69. less[a_log + b_/c_power, a_log + d_/c_power] := less[b, d];
  70.  
  71. less @@ prep[2^3^2^3^5^8, 3^2^2^7^6^7]
  72.  
  73. (* True *)
  74.  
  75. less @@ prep[10^3^4^5, 3^3^4^5]
  76.  
  77. (* False *)
  78.  
  79. less @@ prep[2^2^5^2^7^4^9^3^7^6^9^9^9^9^3^2, 3^3^6^3^9^4^2^3^2^2^2^2^2^3^3^3]
  80.  
  81. (* True *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement