Re: Re: ComplexExpand confusion
- To: mathgroup at smc.vnet.net
- Subject: [mg60202] Re: [mg60141] Re: [mg60109] ComplexExpand confusion
- From: Chris Chiasson <chris.chiasson at gmail.com>
- Date: Wed, 7 Sep 2005 04:04:00 -0400 (EDT)
- References: <200509040702.DAA07328@smc.vnet.net>
- Reply-to: chris.chiasson at gmail.com
- Sender: owner-wri-mathgroup at wolfram.com
Wow, that is a ridiculous amount of output. Did anyone else look at
all the intermediate expressions it generates? I wonder why it is so
complicated.
In[5]:=
ComplexExpand[(-1)^(1/4)]//Trace//InputForm
Out[5]//InputForm=
{{{{HoldForm[4^(-1)], HoldForm[1/4]}, HoldForm[1/4], HoldForm[1/4]},
HoldForm[(-1)^(1/4)]}, HoldForm[ComplexExpand[(-1)^(1/4)]],
{{HoldForm[System`ComplexExpandDump`mapheads], HoldForm[{List,
Equal, Unequal, Inequality, Greater, Less, GreaterEqual,
LessEqual}]}, {HoldForm[Head[(-1)^(1/4)]], HoldForm[Power]},
HoldForm[MemberQ[{List, Equal, Unequal, Inequality, Greater, Less,
GreaterEqual, LessEqual}, Power]], HoldForm[False]},
HoldForm[ComplexExpand[(-1)^(1/4), {}]],
{{HoldForm[System`ComplexExpandDump`mapheads],
HoldForm[{List, Equal, Unequal, Inequality, Greater, Less,
GreaterEqual, LessEqual}]},
{HoldForm[Head[(-1)^(1/4)]], HoldForm[Power]},
HoldForm[MemberQ[{List, Equal, Unequal, Inequality, Greater, Less,
GreaterEqual, LessEqual}, Power]], HoldForm[False]},
HoldForm[Block[{System`ComplexExpandDump`AllowedFunctions,
System`ComplexExpandDump`badrulelist, System`ComplexExpandDump`x,
System`ComplexExpandDump`y, System`ComplexExpandDump`funs,
System`ComplexExpandDump`hed, System`ComplexExpandDump`len,
System`ComplexExpandDump`return,
System`ComplexExpandDump`AssumedComplex = {}},
System`ComplexExpandDump`badrulelist = Select[{}, !MatchQ[#1,
TargetFunctions -> _] & ];
Do[Message[ComplexExpand::optx,
System`ComplexExpandDump`badrulelist[[System`ComplexExpandDump`i]],
ComplexExpand],
{System`ComplexExpandDump`i,
Length[System`ComplexExpandDump`badrulelist]}];
If[Length[System`ComplexExpandDump`badrulelist] != 0,
Return[(-1)^(1/4)]]; System`ComplexExpandDump`funs =
TargetFunctions /. {} /. Options[ComplexExpand];
If[Head[System`ComplexExpandDump`funs] =!= List,
System`ComplexExpandDump`funs = {System`ComplexExpandDump`funs}];
System`ComplexExpandDump`AllowedFunctions =
Select[System`ComplexExpandDump`funs,
MemberQ[System`ComplexExpandDump`AllowedSix, #1] & ];
If[Length[System`ComplexExpandDump`AllowedFunctions] < 1,
Message[ComplexExpand::exf, System`ComplexExpandDump`funs,
System`ComplexExpandDump`AllowedSix]; Return[(-1)^(1/4)]];
System`ComplexExpandDump`hed = Head[(-1)^(1/4)];
System`ComplexExpandDump`len = Length[(-1)^(1/4)];
Which[System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Conjugate,
System`ComplexExpandDump`y = 0; System`ComplexExpandDump`x =
System`ComplexExpandDump`ConjugateExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x,
System`ComplexExpandDump`len == 1 && System`ComplexExpandDump`hed
=== Sign, System`ComplexExpandDump`y = 0;
System`ComplexExpandDump`x =
System`ComplexExpandDump`SignExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x, True,
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[(-1)^(1/4)];
System`ComplexExpandDump`return =
Expand[System`ComplexExpandDump`x] +
I*Expand[System`ComplexExpandDump`y]; ];
If[System`ComplexExpandDump`x ===
System`ComplexExpandDump`ReImFail || System`ComplexExpandDump`y ===
System`ComplexExpandDump`ReImFail, (-1)^(1/4),
Block[{System`ComplexExpandDump`BadFunctions,
System`ComplexExpandDump`Badpatterns, System`ComplexExpandDump`pos},
System`ComplexExpandDump`BadFunctions =
Select[System`ComplexExpandDump`AllowedSix,
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ];
System`ComplexExpandDump`BadPatterns =
Alternatives @@
Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}];
System`ComplexExpandDump`pos =
Position[System`ComplexExpandDump`return,
System`ComplexExpandDump`BadPatterns[_]];
System`ComplexExpandDump`AllowedFunctions =
System`ComplexExpandDump`AllowedSix; System`ComplexExpandDump`return =
MapAt[ComplexExpand[#1, {}] & ,
System`ComplexExpandDump`return, System`ComplexExpandDump`pos];
System`ComplexExpandDump`return]]]],
{HoldForm[System`ComplexExpandDump`AssumedComplex = {}],
HoldForm[{}]},
{HoldForm[System`ComplexExpandDump`badrulelist = Select[{},
!MatchQ[#1, TargetFunctions -> _] & ];
Do[Message[ComplexExpand::optx,
System`ComplexExpandDump`badrulelist[[System`ComplexExpandDump`i]],
ComplexExpand],
{System`ComplexExpandDump`i,
Length[System`ComplexExpandDump`badrulelist]}];
If[Length[System`ComplexExpandDump`badrulelist] != 0,
Return[(-1)^(1/4)]]; System`ComplexExpandDump`funs =
TargetFunctions /. {} /. Options[ComplexExpand];
If[Head[System`ComplexExpandDump`funs] =!= List,
System`ComplexExpandDump`funs = {System`ComplexExpandDump`funs}];
System`ComplexExpandDump`AllowedFunctions =
Select[System`ComplexExpandDump`funs,
MemberQ[System`ComplexExpandDump`AllowedSix, #1] & ];
If[Length[System`ComplexExpandDump`AllowedFunctions] < 1,
Message[ComplexExpand::exf, System`ComplexExpandDump`funs,
System`ComplexExpandDump`AllowedSix]; Return[(-1)^(1/4)]];
System`ComplexExpandDump`hed = Head[(-1)^(1/4)];
System`ComplexExpandDump`len = Length[(-1)^(1/4)];
Which[System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Conjugate,
System`ComplexExpandDump`y = 0; System`ComplexExpandDump`x =
System`ComplexExpandDump`ConjugateExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x,
System`ComplexExpandDump`len == 1 && System`ComplexExpandDump`hed
=== Sign, System`ComplexExpandDump`y = 0;
System`ComplexExpandDump`x =
System`ComplexExpandDump`SignExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x, True,
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[(-1)^(1/4)];
System`ComplexExpandDump`return =
Expand[System`ComplexExpandDump`x] +
I*Expand[System`ComplexExpandDump`y]; ];
If[System`ComplexExpandDump`x ===
System`ComplexExpandDump`ReImFail || System`ComplexExpandDump`y ===
System`ComplexExpandDump`ReImFail, (-1)^(1/4),
Block[{System`ComplexExpandDump`BadFunctions,
System`ComplexExpandDump`Badpatterns, System`ComplexExpandDump`pos},
System`ComplexExpandDump`BadFunctions =
Select[System`ComplexExpandDump`AllowedSix,
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ];
System`ComplexExpandDump`BadPatterns =
Alternatives @@
Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}];
System`ComplexExpandDump`pos =
Position[System`ComplexExpandDump`return,
System`ComplexExpandDump`BadPatterns[_]];
System`ComplexExpandDump`AllowedFunctions =
System`ComplexExpandDump`AllowedSix; System`ComplexExpandDump`return =
MapAt[ComplexExpand[#1, {}] & ,
System`ComplexExpandDump`return, System`ComplexExpandDump`pos];
System`ComplexExpandDump`return]]], {{HoldForm[Select[{},
!MatchQ[#1, TargetFunctions -> _] & ]], HoldForm[{}]},
HoldForm[System`ComplexExpandDump`badrulelist = {}], HoldForm[{}]},
{HoldForm[Do[Message[ComplexExpand::optx,
System`ComplexExpandDump`badrulelist[[System`ComplexExpandDump`i]],
ComplexExpand],
{System`ComplexExpandDump`i,
Length[System`ComplexExpandDump`badrulelist]}]],
{{HoldForm[System`ComplexExpandDump`badrulelist], HoldForm[{}]},
HoldForm[Length[{}]], HoldForm[0]}, HoldForm[Null]},
{{{{HoldForm[System`ComplexExpandDump`badrulelist], HoldForm[{}]},
HoldForm[Length[{}]], HoldForm[0]}, HoldForm[0 != 0],
HoldForm[False]}, HoldForm[If[False, Return[(-1)^(1/4)]]], HoldForm[Null]},
{{{HoldForm[TargetFunctions /. {}], HoldForm[TargetFunctions]},
{HoldForm[Options[ComplexExpand]],
HoldForm[{TargetFunctions -> {Re, Im, Abs, Arg, Conjugate, Sign}}]},
HoldForm[TargetFunctions /. {TargetFunctions -> {Re, Im, Abs, Arg,
Conjugate, Sign}}],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[System`ComplexExpandDump`funs =
{Re, Im, Abs, Arg, Conjugate, Sign}], HoldForm[{Re, Im, Abs, Arg,
Conjugate, Sign}]},
{{{{HoldForm[System`ComplexExpandDump`funs], HoldForm[{Re, Im, Abs,
Arg, Conjugate, Sign}]},
HoldForm[Head[{Re, Im, Abs, Arg, Conjugate, Sign}]],
HoldForm[List]}, HoldForm[List =!= List], HoldForm[False]},
HoldForm[If[False, System`ComplexExpandDump`funs =
{System`ComplexExpandDump`funs}]], HoldForm[Null]},
{{{HoldForm[System`ComplexExpandDump`funs], HoldForm[{Re, Im, Abs,
Arg, Conjugate, Sign}]},
HoldForm[Select[{Re, Im, Abs, Arg, Conjugate, Sign},
MemberQ[System`ComplexExpandDump`AllowedSix, #1] & ]],
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] & )[Re]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix, Re]],
{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Re]],
HoldForm[True]},
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] & )[Im]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix, Im]],
{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Im]],
HoldForm[True]},
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] & )[Abs]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix, Abs]],
{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Abs]],
HoldForm[True]},
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] & )[Arg]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix, Arg]],
{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Arg]],
HoldForm[True]},
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] &
)[Conjugate]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix,
Conjugate]], {HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Conjugate]],
HoldForm[True]},
{HoldForm[(MemberQ[System`ComplexExpandDump`AllowedSix, #1] &
)[Sign]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedSix, Sign]],
{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Sign]],
HoldForm[True]}, HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[System`ComplexExpandDump`AllowedFunctions = {Re, Im, Abs,
Arg, Conjugate, Sign}],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
{{{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[Length[{Re, Im, Abs, Arg, Conjugate, Sign}]],
HoldForm[6]}, HoldForm[6 < 1], HoldForm[False]},
HoldForm[If[False, Message[ComplexExpand::exf,
System`ComplexExpandDump`funs, System`ComplexExpandDump`AllowedSix];
Return[(-1)^(1/4)]]], HoldForm[Null]},
{{HoldForm[Head[(-1)^(1/4)]], HoldForm[Power]},
HoldForm[System`ComplexExpandDump`hed = Power], HoldForm[Power]},
{{HoldForm[Length[(-1)^(1/4)]], HoldForm[2]},
HoldForm[System`ComplexExpandDump`len = 2], HoldForm[2]},
{HoldForm[Which[System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Conjugate,
System`ComplexExpandDump`y = 0; System`ComplexExpandDump`x =
System`ComplexExpandDump`ConjugateExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x,
System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Sign,
System`ComplexExpandDump`y = 0; System`ComplexExpandDump`x =
System`ComplexExpandDump`SignExpr[((-1)^(1/4))[[1]]];
System`ComplexExpandDump`return = System`ComplexExpandDump`x, True,
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[(-1)^(1/4)];
System`ComplexExpandDump`return =
Expand[System`ComplexExpandDump`x] +
I*Expand[System`ComplexExpandDump`y]; ]],
{HoldForm[System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Conjugate],
{{HoldForm[System`ComplexExpandDump`len], HoldForm[2]}, HoldForm[2
== 1], HoldForm[False]}, HoldForm[False]},
{HoldForm[System`ComplexExpandDump`len == 1 &&
System`ComplexExpandDump`hed === Sign],
{{HoldForm[System`ComplexExpandDump`len], HoldForm[2]}, HoldForm[2
== 1], HoldForm[False]}, HoldForm[False]},
HoldForm[{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[(-1)^(1/4)];
System`ComplexExpandDump`return =
Expand[System`ComplexExpandDump`x] +
I*Expand[System`ComplexExpandDump`y]; ],
{{HoldForm[System`ComplexExpandDump`ReImExpr[(-1)^(1/4)]],
HoldForm[System`ComplexExpandDump`ReImRecursive[(-1)^(1/4)]],
{HoldForm[System`ComplexExpandDump`NonNegValQ[-1]],
{{HoldForm[Positive[-1]], HoldForm[False]}, HoldForm[TrueQ[False]],
HoldForm[False]}, {HoldForm[NumericQ[-1]], HoldForm[True]},
HoldForm[TrueQ[NonNegative[-1]]],
{HoldForm[NonNegative[-1]], HoldForm[False]},
HoldForm[TrueQ[False]], HoldForm[False]},
HoldForm[Block[{System`ComplexExpandDump`abs,
System`ComplexExpandDump`abs2, System`ComplexExpandDump`re,
System`ComplexExpandDump`im, System`ComplexExpandDump`newg},
{System`ComplexExpandDump`re, System`ComplexExpandDump`im} =
System`ComplexExpandDump`ReImExpr[-1];
System`ComplexExpandDump`newg = System`ComplexExpandDump`re +
I*System`ComplexExpandDump`im;
System`ComplexExpandDump`abs =
System`ComplexExpandDump`AbsExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`abs2 = System`ComplexExpandDump`AbsExpr[-1];
If[LeafCount[System`ComplexExpandDump`abs2] <
LeafCount[System`ComplexExpandDump`abs],
System`ComplexExpandDump`abs = System`ComplexExpandDump`abs2]; ];
If[System`ComplexExpandDump`IsZeroQ[System`ComplexExpandDump`abs]
&& System`ComplexExpandDump`PosValQ[1/4], {0, 0},
Block[{System`ComplexExpandDump`arg,
System`ComplexExpandDump`arg2, System`ComplexExpandDump`x,
System`ComplexExpandDump`y, System`ComplexExpandDump`theta,
System`ComplexExpandDump`power,
System`ComplexExpandDump`re, System`ComplexExpandDump`im},
System`ComplexExpandDump`arg =
System`ComplexExpandDump`ArgExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`arg2 =
System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg = System`ComplexExpandDump`arg2]; ];
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[1/4];
System`ComplexExpandDump`theta =
System`ComplexExpandDump`y*System`ComplexExpandDump`RealLog[
System`ComplexExpandDump`abs] +
System`ComplexExpandDump`x*System`ComplexExpandDump`arg;
System`ComplexExpandDump`power =
System`ComplexExpandDump`abs^System`ComplexExpandDump`x/
E^(System`ComplexExpandDump`y*System`ComplexExpandDump`arg);
If[System`ComplexExpandDump`SpecialQ[
System`ComplexExpandDump`theta],
System`ComplexExpandDump`re = System`ComplexExpandDump`ReImRecursive[
Cos[System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im = System`ComplexExpandDump`ReImRecursive[
Sin[System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im =
Sin[System`ComplexExpandDump`theta]]; {System`ComplexExpandDump`power*
System`ComplexExpandDump`re,
System`ComplexExpandDump`power*System`ComplexExpandDump`im}]]]],
{HoldForm[{System`ComplexExpandDump`re,
System`ComplexExpandDump`im} = System`ComplexExpandDump`ReImExpr[-1];
System`ComplexExpandDump`newg = System`ComplexExpandDump`re +
I*System`ComplexExpandDump`im;
System`ComplexExpandDump`abs =
System`ComplexExpandDump`AbsExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`abs2 = System`ComplexExpandDump`AbsExpr[-1];
If[LeafCount[System`ComplexExpandDump`abs2] <
LeafCount[System`ComplexExpandDump`abs],
System`ComplexExpandDump`abs = System`ComplexExpandDump`abs2]; ];
If[System`ComplexExpandDump`IsZeroQ[System`ComplexExpandDump`abs]
&& System`ComplexExpandDump`PosValQ[1/4], {0, 0},
Block[{System`ComplexExpandDump`arg,
System`ComplexExpandDump`arg2, System`ComplexExpandDump`x,
System`ComplexExpandDump`y, System`ComplexExpandDump`theta,
System`ComplexExpandDump`power,
System`ComplexExpandDump`re, System`ComplexExpandDump`im},
System`ComplexExpandDump`arg =
System`ComplexExpandDump`ArgExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`arg2 =
System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg = System`ComplexExpandDump`arg2]; ];
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[1/4];
System`ComplexExpandDump`theta =
System`ComplexExpandDump`y*System`ComplexExpandDump`RealLog[
System`ComplexExpandDump`abs] +
System`ComplexExpandDump`x*System`ComplexExpandDump`arg;
System`ComplexExpandDump`power =
System`ComplexExpandDump`abs^System`ComplexExpandDump`x/
E^(System`ComplexExpandDump`y*System`ComplexExpandDump`arg);
If[System`ComplexExpandDump`SpecialQ[
System`ComplexExpandDump`theta],
System`ComplexExpandDump`re = System`ComplexExpandDump`ReImRecursive[
Cos[System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im = System`ComplexExpandDump`ReImRecursive[
Sin[System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im =
Sin[System`ComplexExpandDump`theta]]; {System`ComplexExpandDump`power*
System`ComplexExpandDump`re,
System`ComplexExpandDump`power*System`ComplexExpandDump`im}]]],
{{HoldForm[System`ComplexExpandDump`ReImExpr[-1]],
HoldForm[System`ComplexExpandDump`ReImRecursive[-1]],
{HoldForm[NumericQ[-1]], HoldForm[True]},
{{HoldForm[System`ComplexExpandDump`CartQ[-1]],
HoldForm[System`ComplexExpandDump`IsOK[{Re, Im}, -1]],
HoldForm[And @@ (System`ComplexExpandDump`IsOK[#1, -1] & ) /@
{Re, Im}], {HoldForm[(System`ComplexExpandDump`IsOK[#1,
-1] & ) /@ {Re, Im}],
HoldForm[{(System`ComplexExpandDump`IsOK[#1, -1] & )[Re],
(System`ComplexExpandDump`IsOK[#1, -1] & )[Im]}],
{HoldForm[(System`ComplexExpandDump`IsOK[#1, -1] & )[Re]],
HoldForm[System`ComplexExpandDump`IsOK[Re, -1]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions, Re]],
{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Re]], HoldForm[True]},
{HoldForm[(System`ComplexExpandDump`IsOK[#1, -1] & )[Im]],
HoldForm[System`ComplexExpandDump`IsOK[Im, -1]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions, Im]],
{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Im]], HoldForm[True]}, HoldForm[{True, True}]},
HoldForm[And @@ {True, True}], HoldForm[True && True],
HoldForm[True]},
HoldForm[RuleCondition[$ConditionHold[$ConditionHold[{Re[-1],
Im[-1]}]], True]],
HoldForm[$ConditionHold[$ConditionHold[{Re[-1], Im[-1]}]]]},
HoldForm[{Re[-1], Im[-1]}],
{HoldForm[Re[-1]], HoldForm[-1]}, {HoldForm[Im[-1]],
HoldForm[0]}, HoldForm[{-1, 0}]},
HoldForm[{System`ComplexExpandDump`re,
System`ComplexExpandDump`im} = {-1, 0}], HoldForm[{-1, 0}]},
{{{HoldForm[System`ComplexExpandDump`re], HoldForm[-1]},
{{HoldForm[I], HoldForm[I]},
{HoldForm[System`ComplexExpandDump`im], HoldForm[0]},
HoldForm[I*0], HoldForm[0]}, HoldForm[-1 + 0], HoldForm[-1]},
HoldForm[System`ComplexExpandDump`newg = -1], HoldForm[-1]},
{{{HoldForm[System`ComplexExpandDump`newg], HoldForm[-1]},
HoldForm[System`ComplexExpandDump`AbsExpr[-1]],
HoldForm[System`ComplexExpandDump`AbsRecursive[-1]],
HoldForm[System`ComplexExpandDump`LeafAbs[-1]],
{HoldForm[System`ComplexExpandDump`NonNegValQ[-1]],
{{HoldForm[Positive[-1]], HoldForm[False]},
HoldForm[TrueQ[False]], HoldForm[False]},
{HoldForm[NumericQ[-1]], HoldForm[True]},
HoldForm[TrueQ[NonNegative[-1]]], {HoldForm[NonNegative[-1]],
HoldForm[False]}, HoldForm[TrueQ[False]], HoldForm[False]},
{HoldForm[System`ComplexExpandDump`NonPosValQ[-1]],
{{HoldForm[Negative[-1]], HoldForm[True]},
HoldForm[TrueQ[True]], HoldForm[True]}, HoldForm[True]},
HoldForm[With[{System`ComplexExpandDump`x =
First[System`ComplexExpandDump`ReImExpr[-1]]},
-System`ComplexExpandDump`x]],
{{HoldForm[System`ComplexExpandDump`ReImExpr[-1]],
HoldForm[System`ComplexExpandDump`ReImRecursive[-1]],
{HoldForm[NumericQ[-1]], HoldForm[True]},
{{HoldForm[System`ComplexExpandDump`CartQ[-1]],
HoldForm[System`ComplexExpandDump`IsOK[{Re, Im}, -1]],
HoldForm[And @@ (System`ComplexExpandDump`IsOK[#1, -1] & )
/@ {Re, Im}],
{HoldForm[(System`ComplexExpandDump`IsOK[#1, -1] & ) /@ {Re, Im}],
HoldForm[{(System`ComplexExpandDump`IsOK[#1, -1] & )[Re],
(System`ComplexExpandDump`IsOK[#1, -1] & )[Im]}],
{HoldForm[(System`ComplexExpandDump`IsOK[#1, -1] &
)[Re]], HoldForm[System`ComplexExpandDump`IsOK[Re, -1]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions,
Re]], {HoldForm[
System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Re]], HoldForm[True]},
{HoldForm[(System`ComplexExpandDump`IsOK[#1, -1] &
)[Im]], HoldForm[System`ComplexExpandDump`IsOK[Im, -1]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions,
Im]], {HoldForm[
System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Im]], HoldForm[True]}, HoldForm[{True, True}]},
HoldForm[And @@ {True, True}], HoldForm[True && True],
HoldForm[True]},
HoldForm[RuleCondition[$ConditionHold[$ConditionHold[{Re[-1],
Im[-1]}]], True]],
HoldForm[$ConditionHold[$ConditionHold[{Re[-1],
Im[-1]}]]]}, HoldForm[{Re[-1], Im[-1]}],
{HoldForm[Re[-1]], HoldForm[-1]}, {HoldForm[Im[-1]],
HoldForm[0]}, HoldForm[{-1, 0}]}, HoldForm[First[{-1, 0}]],
HoldForm[-1]}, HoldForm[-(-1)], HoldForm[1]},
HoldForm[System`ComplexExpandDump`abs = 1], HoldForm[1]},
{{{HoldForm[System`ComplexExpandDump`newg], HoldForm[-1]},
HoldForm[-1 =!= -1], HoldForm[False]},
HoldForm[If[False, System`ComplexExpandDump`abs2 =
System`ComplexExpandDump`AbsExpr[-1];
If[LeafCount[System`ComplexExpandDump`abs2] <
LeafCount[System`ComplexExpandDump`abs],
System`ComplexExpandDump`abs =
System`ComplexExpandDump`abs2]; ]], HoldForm[Null]},
{{HoldForm[System`ComplexExpandDump`IsZeroQ[System`ComplexExpandDump`abs]
&& System`ComplexExpandDump`PosValQ[1/4]],
{{HoldForm[System`ComplexExpandDump`abs], HoldForm[1]},
HoldForm[System`ComplexExpandDump`IsZeroQ[1]],
{HoldForm[System`ComplexExpandDump`NonNegValQ[1] &&
System`ComplexExpandDump`NonPosValQ[1]],
{HoldForm[System`ComplexExpandDump`NonNegValQ[1]],
{{HoldForm[Positive[1]], HoldForm[True]}, HoldForm[TrueQ[True]],
HoldForm[True]}, HoldForm[True]},
{HoldForm[System`ComplexExpandDump`NonPosValQ[1]],
{{HoldForm[Negative[1]], HoldForm[False]},
HoldForm[TrueQ[False]], HoldForm[False]},
{HoldForm[NumericQ[1]], HoldForm[True]},
HoldForm[TrueQ[NonPositive[1]]], {HoldForm[NonPositive[1]],
HoldForm[False]}, HoldForm[TrueQ[False]],
HoldForm[False]}, HoldForm[False]}, HoldForm[False]},
HoldForm[False]},
HoldForm[If[False, {0, 0}, Block[{System`ComplexExpandDump`arg,
System`ComplexExpandDump`arg2,
System`ComplexExpandDump`x, System`ComplexExpandDump`y,
System`ComplexExpandDump`theta,
System`ComplexExpandDump`power,
System`ComplexExpandDump`re, System`ComplexExpandDump`im},
System`ComplexExpandDump`arg =
System`ComplexExpandDump`ArgExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`arg2 = System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg = System`ComplexExpandDump`arg2]; ];
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[1/4];
System`ComplexExpandDump`theta =
System`ComplexExpandDump`y*System`ComplexExpandDump`RealLog[
System`ComplexExpandDump`abs] +
System`ComplexExpandDump`x*System`ComplexExpandDump`arg;
System`ComplexExpandDump`power =
System`ComplexExpandDump`abs^System`ComplexExpandDump`x/
E^(System`ComplexExpandDump`y*System`ComplexExpandDump`arg);
If[System`ComplexExpandDump`SpecialQ[
System`ComplexExpandDump`theta],
System`ComplexExpandDump`re = System`ComplexExpandDump`ReImRecursive[
Cos[System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im = System`ComplexExpandDump`ReImRecursive[
Sin[System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im =
Sin[System`ComplexExpandDump`theta]]; {System`ComplexExpandDump`power*
System`ComplexExpandDump`re,
System`ComplexExpandDump`power*System`ComplexExpandDump`im}]]],
HoldForm[Block[{System`ComplexExpandDump`arg,
System`ComplexExpandDump`arg2, System`ComplexExpandDump`x,
System`ComplexExpandDump`y, System`ComplexExpandDump`theta,
System`ComplexExpandDump`power,
System`ComplexExpandDump`re, System`ComplexExpandDump`im},
System`ComplexExpandDump`arg =
System`ComplexExpandDump`ArgExpr[System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`arg2 =
System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg = System`ComplexExpandDump`arg2]; ];
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[1/4];
System`ComplexExpandDump`theta =
System`ComplexExpandDump`y*System`ComplexExpandDump`RealLog[
System`ComplexExpandDump`abs] +
System`ComplexExpandDump`x*System`ComplexExpandDump`arg;
System`ComplexExpandDump`power =
System`ComplexExpandDump`abs^System`ComplexExpandDump`x/
E^(System`ComplexExpandDump`y*System`ComplexExpandDump`arg);
If[System`ComplexExpandDump`SpecialQ[
System`ComplexExpandDump`theta],
System`ComplexExpandDump`re =
System`ComplexExpandDump`ReImRecursive[Cos[
System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im =
System`ComplexExpandDump`ReImRecursive[Sin[
System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im = Sin[System`ComplexExpandDump`theta]];
{System`ComplexExpandDump`power*System`ComplexExpandDump`re,
System`ComplexExpandDump`power*
System`ComplexExpandDump`im}]],
{HoldForm[System`ComplexExpandDump`arg =
System`ComplexExpandDump`ArgExpr[
System`ComplexExpandDump`newg];
If[System`ComplexExpandDump`newg =!= -1,
System`ComplexExpandDump`arg2 =
System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg = System`ComplexExpandDump`arg2]; ];
{System`ComplexExpandDump`x, System`ComplexExpandDump`y} =
System`ComplexExpandDump`ReImExpr[1/4];
System`ComplexExpandDump`theta =
System`ComplexExpandDump`y*System`ComplexExpandDump`RealLog[
System`ComplexExpandDump`abs] +
System`ComplexExpandDump`x*System`ComplexExpandDump`arg;
System`ComplexExpandDump`power =
System`ComplexExpandDump`abs^System`ComplexExpandDump`x/
E^(System`ComplexExpandDump`y*System`ComplexExpandDump`arg);
If[System`ComplexExpandDump`SpecialQ[
System`ComplexExpandDump`theta],
System`ComplexExpandDump`re =
System`ComplexExpandDump`ReImRecursive[Cos[
System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im =
System`ComplexExpandDump`ReImRecursive[Sin[
System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im = Sin[System`ComplexExpandDump`theta]];
{System`ComplexExpandDump`power*System`ComplexExpandDump`re,
System`ComplexExpandDump`power*
System`ComplexExpandDump`im}],
{{{HoldForm[System`ComplexExpandDump`newg], HoldForm[-1]},
HoldForm[System`ComplexExpandDump`ArgExpr[-1]],
{HoldForm[System`ComplexExpandDump`NonNegValQ[-1]],
{{HoldForm[Positive[-1]], HoldForm[False]},
HoldForm[TrueQ[False]], HoldForm[False]},
{HoldForm[NumericQ[-1]], HoldForm[True]},
HoldForm[TrueQ[NonNegative[-1]]], {HoldForm[NonNegative[-1]],
HoldForm[False]}, HoldForm[TrueQ[False]],
HoldForm[False]}, {HoldForm[System`ComplexExpandDump`NegValQ[-1]],
{HoldForm[NumericQ[-1]], HoldForm[True]},
HoldForm[TrueQ[Negative[-1]]], {HoldForm[Negative[-1]],
HoldForm[True]},
HoldForm[TrueQ[True]], HoldForm[True]}, HoldForm[Pi]},
HoldForm[System`ComplexExpandDump`arg = Pi], HoldForm[Pi]},
{{{HoldForm[System`ComplexExpandDump`newg], HoldForm[-1]},
HoldForm[-1 =!= -1], HoldForm[False]},
HoldForm[If[False, System`ComplexExpandDump`arg2 =
System`ComplexExpandDump`ArgExpr[-1];
If[LeafCount[System`ComplexExpandDump`arg2] <
LeafCount[System`ComplexExpandDump`arg],
System`ComplexExpandDump`arg =
System`ComplexExpandDump`arg2]; ]], HoldForm[Null]},
{{HoldForm[System`ComplexExpandDump`ReImExpr[1/4]],
HoldForm[System`ComplexExpandDump`ReImRecursive[1/4]],
{HoldForm[NumericQ[1/4]], HoldForm[True]},
{{HoldForm[System`ComplexExpandDump`CartQ[1/4]],
HoldForm[System`ComplexExpandDump`IsOK[{Re, Im}, 1/4]],
HoldForm[And @@ (System`ComplexExpandDump`IsOK[#1,
1/4] & ) /@ {Re, Im}],
{HoldForm[(System`ComplexExpandDump`IsOK[#1, 1/4] & ) /@ {Re, Im}],
HoldForm[{(System`ComplexExpandDump`IsOK[#1, 1/4] &
)[Re], (System`ComplexExpandDump`IsOK[#1, 1/4] & )[Im]}],
{HoldForm[(System`ComplexExpandDump`IsOK[#1, 1/4] &
)[Re]], HoldForm[System`ComplexExpandDump`IsOK[Re, 1/4]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions,
Re]], {HoldForm[
System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Re]], HoldForm[True]},
{HoldForm[(System`ComplexExpandDump`IsOK[#1, 1/4] &
)[Im]], HoldForm[System`ComplexExpandDump`IsOK[Im, 1/4]],
HoldForm[MemberQ[System`ComplexExpandDump`AllowedFunctions,
Im]], {HoldForm[
System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Im]], HoldForm[True]}, HoldForm[{True, True}]},
HoldForm[And @@ {True, True}], HoldForm[True && True],
HoldForm[True]},
HoldForm[RuleCondition[$ConditionHold[$ConditionHold[{Re[1/4],
Im[1/4]}]], True]],
HoldForm[$ConditionHold[$ConditionHold[{Re[1/4],
Im[1/4]}]]]}, HoldForm[{Re[1/4], Im[1/4]}],
{HoldForm[Re[1/4]], HoldForm[1/4]}, {HoldForm[Im[1/4]],
HoldForm[0]}, HoldForm[{1/4, 0}]},
HoldForm[{System`ComplexExpandDump`x,
System`ComplexExpandDump`y} = {1/4, 0}], HoldForm[{1/4, 0}]},
{{{{HoldForm[System`ComplexExpandDump`y], HoldForm[0]},
{{HoldForm[System`ComplexExpandDump`abs], HoldForm[1]},
HoldForm[System`ComplexExpandDump`RealLog[1]],
HoldForm[If[Head[1] === Power && 1[[1]] === E, 1[[2]], Log[1]]],
{HoldForm[Head[1] === Power && 1[[1]] === E],
{{HoldForm[Head[1]], HoldForm[Integer]}, HoldForm[Integer === Power],
HoldForm[False]}, HoldForm[False]}, HoldForm[If[False,
1[[2]], Log[1]]], HoldForm[Log[1]], HoldForm[0]},
HoldForm[0*0], HoldForm[0]},
{{HoldForm[System`ComplexExpandDump`x], HoldForm[1/4]},
{HoldForm[System`ComplexExpandDump`arg], HoldForm[Pi]},
HoldForm[Pi/4]}, HoldForm[0 + Pi/4], HoldForm[Pi/4]},
HoldForm[System`ComplexExpandDump`theta = Pi/4], HoldForm[Pi/4]},
{{{{HoldForm[System`ComplexExpandDump`abs], HoldForm[1]},
{HoldForm[System`ComplexExpandDump`x], HoldForm[1/4]},
HoldForm[1^(1/4)], HoldForm[1]},
{{{HoldForm[System`ComplexExpandDump`y], HoldForm[0]},
{HoldForm[System`ComplexExpandDump`arg], HoldForm[Pi]},
HoldForm[-(0*Pi)], HoldForm[0*Pi], HoldForm[0]},
HoldForm[E^0], HoldForm[1]}, HoldForm[1*1], HoldForm[1]},
HoldForm[System`ComplexExpandDump`power = 1], HoldForm[1]},
{{{HoldForm[System`ComplexExpandDump`theta], HoldForm[Pi/4]},
HoldForm[System`ComplexExpandDump`SpecialQ[Pi/4]],
HoldForm[Block[{System`ComplexExpandDump`den =
Denominator[1/4]}, System`ComplexExpandDump`den == 8 ||
System`ComplexExpandDump`den == 9 ||
System`ComplexExpandDump`den == 15 || System`ComplexExpandDump`den ==
16 ||
System`ComplexExpandDump`den == 18]],
{HoldForm[Denominator[1/4]], HoldForm[4]},
{HoldForm[System`ComplexExpandDump`den = 4], HoldForm[4]},
{HoldForm[System`ComplexExpandDump`den == 8 ||
System`ComplexExpandDump`den == 9 ||
System`ComplexExpandDump`den == 15 || System`ComplexExpandDump`den ==
16 ||
System`ComplexExpandDump`den == 18],
{{HoldForm[System`ComplexExpandDump`den], HoldForm[4]}, HoldForm[4 ==
8],
HoldForm[False]},
{{HoldForm[System`ComplexExpandDump`den], HoldForm[4]}, HoldForm[4 ==
9], HoldForm[False]},
{{HoldForm[System`ComplexExpandDump`den], HoldForm[4]},
HoldForm[4 == 15], HoldForm[False]},
{{HoldForm[System`ComplexExpandDump`den], HoldForm[4]},
HoldForm[4 == 16], HoldForm[False]},
{{HoldForm[System`ComplexExpandDump`den], HoldForm[4]},
HoldForm[4 == 18], HoldForm[False]}, HoldForm[False]},
HoldForm[False]}, HoldForm[If[False,
System`ComplexExpandDump`re =
System`ComplexExpandDump`ReImRecursive[Cos[
System`ComplexExpandDump`theta]][[1]];
System`ComplexExpandDump`im =
System`ComplexExpandDump`ReImRecursive[Sin[
System`ComplexExpandDump`theta]][[1]],
System`ComplexExpandDump`re = Cos[System`ComplexExpandDump`theta];
System`ComplexExpandDump`im =
Sin[System`ComplexExpandDump`theta]]],
HoldForm[System`ComplexExpandDump`re =
Cos[System`ComplexExpandDump`theta]; System`ComplexExpandDump`im =
Sin[System`ComplexExpandDump`theta]],
{{{HoldForm[System`ComplexExpandDump`theta], HoldForm[Pi/4]},
HoldForm[Cos[Pi/4]], HoldForm[1/Sqrt[2]]},
HoldForm[System`ComplexExpandDump`re = 1/Sqrt[2]],
HoldForm[1/Sqrt[2]]},
{{{HoldForm[System`ComplexExpandDump`theta], HoldForm[Pi/4]},
HoldForm[Sin[Pi/4]], HoldForm[1/Sqrt[2]]},
HoldForm[System`ComplexExpandDump`im = 1/Sqrt[2]],
HoldForm[1/Sqrt[2]]}, HoldForm[1/Sqrt[2]]},
{{{HoldForm[System`ComplexExpandDump`power], HoldForm[1]},
{HoldForm[System`ComplexExpandDump`re], HoldForm[1/Sqrt[2]]},
HoldForm[1/Sqrt[2]], HoldForm[1/Sqrt[2]]},
{{HoldForm[System`ComplexExpandDump`power], HoldForm[1]},
{HoldForm[System`ComplexExpandDump`im],
HoldForm[1/Sqrt[2]]}, HoldForm[1/Sqrt[2]], HoldForm[1/Sqrt[2]]},
HoldForm[{1/Sqrt[2], 1/Sqrt[2]}]}, HoldForm[{1/Sqrt[2],
1/Sqrt[2]}]}, HoldForm[{1/Sqrt[2], 1/Sqrt[2]}]},
HoldForm[{1/Sqrt[2], 1/Sqrt[2]}]}, HoldForm[{1/Sqrt[2], 1/Sqrt[2]}]},
HoldForm[{System`ComplexExpandDump`x, System`ComplexExpandDump`y}
= {1/Sqrt[2], 1/Sqrt[2]}],
HoldForm[{1/Sqrt[2], 1/Sqrt[2]}]},
{{{{HoldForm[System`ComplexExpandDump`x], HoldForm[1/Sqrt[2]]},
HoldForm[Expand[1/Sqrt[2]]], HoldForm[1/Sqrt[2]]},
{{HoldForm[I], HoldForm[I]},
{{HoldForm[System`ComplexExpandDump`y], HoldForm[1/Sqrt[2]]},
HoldForm[Expand[1/Sqrt[2]]], HoldForm[1/Sqrt[2]]},
HoldForm[I/Sqrt[2]]}, HoldForm[1/Sqrt[2] + I/Sqrt[2]],
HoldForm[I/Sqrt[2] + 1/Sqrt[2]], HoldForm[(1 + I)/Sqrt[2]]},
HoldForm[System`ComplexExpandDump`return = (1 + I)/Sqrt[2]],
HoldForm[(1 + I)/Sqrt[2]]}, HoldForm[Null]},
{{HoldForm[System`ComplexExpandDump`x ===
System`ComplexExpandDump`ReImFail || System`ComplexExpandDump`y ===
System`ComplexExpandDump`ReImFail],
{{HoldForm[System`ComplexExpandDump`x], HoldForm[1/Sqrt[2]]},
HoldForm[1/Sqrt[2] === System`ComplexExpandDump`ReImFail],
HoldForm[False]},
{{HoldForm[System`ComplexExpandDump`y], HoldForm[1/Sqrt[2]]},
HoldForm[1/Sqrt[2] === System`ComplexExpandDump`ReImFail],
HoldForm[False]}, HoldForm[False]}, HoldForm[If[False, (-1)^(1/4),
Block[{System`ComplexExpandDump`BadFunctions,
System`ComplexExpandDump`Badpatterns, System`ComplexExpandDump`pos},
System`ComplexExpandDump`BadFunctions =
Select[System`ComplexExpandDump`AllowedSix,
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ];
System`ComplexExpandDump`BadPatterns =
Alternatives @@
Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}];
System`ComplexExpandDump`pos =
Position[System`ComplexExpandDump`return,
System`ComplexExpandDump`BadPatterns[_]];
System`ComplexExpandDump`AllowedFunctions =
System`ComplexExpandDump`AllowedSix; System`ComplexExpandDump`return =
MapAt[ComplexExpand[#1, {}] & ,
System`ComplexExpandDump`return, System`ComplexExpandDump`pos];
System`ComplexExpandDump`return]]],
HoldForm[Block[{System`ComplexExpandDump`BadFunctions,
System`ComplexExpandDump`Badpatterns, System`ComplexExpandDump`pos},
System`ComplexExpandDump`BadFunctions =
Select[System`ComplexExpandDump`AllowedSix,
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ];
System`ComplexExpandDump`BadPatterns =
Alternatives @@
Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}];
System`ComplexExpandDump`pos =
Position[System`ComplexExpandDump`return,
System`ComplexExpandDump`BadPatterns[_]];
System`ComplexExpandDump`AllowedFunctions =
System`ComplexExpandDump`AllowedSix;
System`ComplexExpandDump`return = MapAt[ComplexExpand[#1, {}] &
, System`ComplexExpandDump`return,
System`ComplexExpandDump`pos]; System`ComplexExpandDump`return]],
{HoldForm[System`ComplexExpandDump`BadFunctions =
Select[System`ComplexExpandDump`AllowedSix,
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ];
System`ComplexExpandDump`BadPatterns =
Alternatives @@
Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}];
System`ComplexExpandDump`pos =
Position[System`ComplexExpandDump`return,
System`ComplexExpandDump`BadPatterns[_]];
System`ComplexExpandDump`AllowedFunctions =
System`ComplexExpandDump`AllowedSix;
System`ComplexExpandDump`return = MapAt[ComplexExpand[#1, {}] &
, System`ComplexExpandDump`return,
System`ComplexExpandDump`pos]; System`ComplexExpandDump`return],
{{{HoldForm[System`ComplexExpandDump`AllowedSix], HoldForm[{Re,
Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[Select[{Re, Im, Abs, Arg, Conjugate, Sign},
!MemberQ[System`ComplexExpandDump`AllowedFunctions, #1] & ]],
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Re]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions, Re]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Re]],
HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Im]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions, Im]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Im]],
HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Abs]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions, Abs]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Abs]],
HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Arg]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions, Arg]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Arg]],
HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Conjugate]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions,
Conjugate]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign},
Conjugate]], HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
{HoldForm[( !MemberQ[System`ComplexExpandDump`AllowedFunctions,
#1] & )[Sign]],
HoldForm[ !MemberQ[System`ComplexExpandDump`AllowedFunctions, Sign]],
{{HoldForm[System`ComplexExpandDump`AllowedFunctions],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[MemberQ[{Re, Im, Abs, Arg, Conjugate, Sign}, Sign]],
HoldForm[True]}, HoldForm[ !True], HoldForm[False]},
HoldForm[{}]}, HoldForm[System`ComplexExpandDump`BadFunctions =
{}], HoldForm[{}]},
{{{HoldForm[Table[System`ComplexExpandDump`BadFunctions[[System`ComplexExpandDump`j]],
{System`ComplexExpandDump`j,
Length[System`ComplexExpandDump`BadFunctions]}]],
HoldForm[{}]}, HoldForm[Alternatives @@ {}],
HoldForm[Alternatives[]]},
HoldForm[System`ComplexExpandDump`BadPatterns = Alternatives[]],
HoldForm[Alternatives[]]},
{{{HoldForm[System`ComplexExpandDump`return], HoldForm[(1 + I)/Sqrt[2]]},
{{HoldForm[System`ComplexExpandDump`BadPatterns],
HoldForm[Alternatives[]]}, HoldForm[(Alternatives[])[_]]},
HoldForm[Position[(1 + I)/Sqrt[2], (Alternatives[])[_]]],
HoldForm[{}]}, HoldForm[System`ComplexExpandDump`pos = {}],
HoldForm[{}]}, {{HoldForm[System`ComplexExpandDump`AllowedSix],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
HoldForm[System`ComplexExpandDump`AllowedFunctions = {Re, Im,
Abs, Arg, Conjugate, Sign}],
HoldForm[{Re, Im, Abs, Arg, Conjugate, Sign}]},
{{{HoldForm[System`ComplexExpandDump`return], HoldForm[(1 +
I)/Sqrt[2]]},
{HoldForm[System`ComplexExpandDump`pos], HoldForm[{}]},
HoldForm[MapAt[ComplexExpand[#1, {}] & , (1 + I)/Sqrt[2], {}]],
HoldForm[(1 + I)/Sqrt[2]]},
HoldForm[System`ComplexExpandDump`return = (1 + I)/Sqrt[2]],
HoldForm[(1 + I)/Sqrt[2]]},
{HoldForm[System`ComplexExpandDump`return], HoldForm[(1 +
I)/Sqrt[2]]}, HoldForm[(1 + I)/Sqrt[2]]},
HoldForm[(1 + I)/Sqrt[2]]}, HoldForm[(1 + I)/Sqrt[2]]}, HoldForm[(1
+ I)/Sqrt[2]]}
On 9/4/05, David Park <djmp at earthlink.net> wrote:
> Mike,
>
> The answer is very simple! Just look at...
>
> ComplexExpand[(-1)^(1/4)] // Trace
>
> Could anything be clearer?
>
> David Park
> djmp at earthlink.net
> http://home.earthlink.net/~djmp/
>
>
> From: mike_in_england2000 at yahoo.co.uk
To: mathgroup at smc.vnet.net
> [mailto:mike_in_england2000 at yahoo.co.uk]
>
>
> Hi
>
> The Mathematica help system says that
>
> "ComplexExpand[expr] expands expr assuming that all variables are
> real."
>
> which is fine and explains why expressions such as
> ComplexExpand[Conjugate[x +I y]] work.All seems obvious so far.
>
> What is confusing me though is why does
>
> ComplexExpand[(-1)^(1/4)]
>
> give the result
>
> (1 + I)/Sqrt[2]
>
> I know this the correct result but in the expression (-1)^(1/4) there
> are no variables. The numbers involved are real so what on earth is
> ComplexExpand doing? Is this a stupid question? Should I have drank
> more coffee before posting this.
>
> Thanks
> Mike
>
>
>
>
>
--
Chris Chiasson
http://chrischiasson.com/
1 (810) 265-3161
- References:
- Re: ComplexExpand confusion
- From: "David Park" <djmp@earthlink.net>
- Re: ComplexExpand confusion