(*   par Marcel Délèze   *)

BeginPackage["ComplexLitteral`"]

reLitt::usage=
	"reLitt[e] donne la partie réelle de l'expression e\nen supposant que toutes les variables sont réelles."

imLitt::usage=
	"reLitt[e] donne la partie imaginaire de l'expression e\nen supposant que toutes les variables sont réelles."

moduleLitt::usage=
	"moduleLitt[e] donne le module de l'expression e\nen supposant que toutes les variables sont réelles."

argLitt::usage=
	"argLitt[e] donne l'argument de l'expression e\nen supposant que toutes les variables sont réelles."

cartLitt::usage=
	"cartLitt[e] récrit l'expression e sous la forme cartésienne\nen supposant que toutes les variables sont réelles."

polLitt::usage=
	"polLitt[e] récrit l'expression e sous la forme polaire\nen supposant que toutes les variables sont réelles."

Begin["`Private`"]

reLitt[expr_]:=Simplify[ComplexExpand[Re[expr],TargetFunctions->{Re,Im} ],_Symbol ∈ Reals && _Subscript ∈ Reals]

imLitt[expr_]:=Simplify[ComplexExpand[Im[expr] ,TargetFunctions->{Re,Im} ],_Symbol ∈ Reals && _Subscript ∈ Reals]

moduleLitt[expr_]:=Simplify[ComplexExpand[Abs[expr] ,TargetFunctions->{Re,Im}],_Symbol ∈ Reals && _Subscript ∈ Reals]

argLitt[expr_]:=Simplify[ComplexExpand[Arg[expr] ,TargetFunctions->{Re,Im}],_Symbol ∈ Reals && _Subscript ∈ Reals]

cartLitt[expr_]:=reLitt[expr]+I imLitt[expr]

polLitt[expr_]:=moduleLitt[expr] (E^(I argLitt[expr]))

End[]

EndPackage[]