login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxComplexManifold revision 4 of 7

1 2 3 4 5 6 7
Editor: Bill Page
Time: 2009/06/20 21:30:55 GMT-7
Note: sqrt

changed:
-ComplexManifold(R:Join(Field,RadicalCategory,TranscendentalFunctionCategory)): Join(RadicalCategory,DirectProductCategory(2,R)) with
ComplexManifold(R:Join(Field,RadicalCategory,TranscendentalFunctionCategory,OrderedSet)): Join(RadicalCategory,DirectProductCategory(2,R)) with

added:
    coerce: % -> Complex R

changed:
-    arg(x:%):R == (2::R)*atan(imag(x)/(norm(x)+real(x)))
-    sqrt(x:%):% == per( sqrt(sqrt(norm(x)))*directProduct(vector [cos(pi()*arg(x)) + sin(pi()*arg(x)), cos(pi()*arg(x)) - sin(pi()*arg(x))] ) )
    arg(x:%):R ==
      real(x)<0 and imag(x)=0 => pi()
      (2::R)*atan(imag(x)/(sqrt(norm(x))+real(x)))
    sqrt(x:%):% == per( sqrt(sqrt(norm(x)))*directProduct(vector [ _
      cos(arg(x)/(2::R)) + sin(arg(x)/(2::R)), _
      cos(arg(x)/(2::R)) - sin(arg(x)/(2::R))] ) )

changed:
-
    coerce(x:%):Complex(R) == complex(real x,imag x)

added:
s3:=sqrt(I)
s3*s3

changed:
-s3:=sqrt(c1)
-real s3
-imag s3
c1::Complex(EXPR INT)
sqrt %
s4:=sqrt(c1)
real s4
imag s4
s4*s4
%::Complex(EXPR INT)
normalize %
%::Complex(EXPR INT)::Complex(INT)

spad
)abbrev domain CM ComplexManifold
ComplexManifold(R:Join(Field,RadicalCategory,TranscendentalFunctionCategory,OrderedSet)): Join(RadicalCategory,DirectProductCategory(2,R)) with
    elt:(%,"pos") -> R
    elt:(%,"neg") -> R
    imaginary: () -> %
    real: % -> R
    imag: % -> R
    conj: % -> %
    norm: % -> R
    arg:  % -> R
    coerce: % -> Complex R
  == DirectProduct(2,R) add
    -- represent as conjugate pair
    Rep == DirectProduct(2,R)
    elt(x,"pos") == rep(x).1
    elt(x,"neg") == rep(x).2
imaginary():% == per directProduct vector [1,-1] real(x:%):R == (rep(x).1 + rep(x).2)/(2::R) imag(x:%):R == (rep(x).1 - rep(x).2)/(2::R) -- just swap conj(x:%):% == per directProduct vector [rep(x).2,rep(x).1] -- multiplication is interesting (x:% * y:%):% == per directProduct vector [ _ real(x)*rep(y).1 + imag(x)*rep(y).2, _ real(x)*rep(y).2 - imag(x)*rep(y).1] norm(x:%):R == retract(x*conj(x)) arg(x:%):R == real(x)<0 and imag(x)=0 => pi() (2::R)*atan(imag(x)/(sqrt(norm(x))+real(x))) sqrt(x:%):% == per( sqrt(sqrt(norm(x)))*directProduct(vector [ _ cos(arg(x)/(2::R)) + sin(arg(x)/(2::R)), _ cos(arg(x)/(2::R)) - sin(arg(x)/(2::R))] ) )
-- [sqrt(abs real x)+sqrt(abs imag x). -- sign(real x)*sqrt(abs real x)-sign(imag x)*sqrt(abs imag x)] -- too complicated? --sqrt(x:%):% == per directProduct vector [ _ -- (if real(x)>=0 then sqrt real(x) else sqrt(-real(x))) + _ -- (if imag(x)<=0 then sqrt(-imag(x)) else sqrt imag(x)), _ -- (if real(x)>=0 then sqrt real(x) else -sqrt(-real(x))) + _ -- (if imag(x)<=0 then sqrt(-imag(x)) else -sqrt imag(x)) ]
coerce(x:%):OutputForm == complex(real x,imag x)$Complex(R)::OutputForm coerce(x:%):Complex(R) == complex(real x,imag x)
spad
   Compiling OpenAxiom source code from file 
      /var/zope2/var/LatexWiki/7243446078452659057-25px001.spad using 
      Spad compiler.
   CM abbreviates domain ComplexManifold 
------------------------------------------------------------------------
   initializing NRLIB CM for ComplexManifold 
   compiling into NRLIB CM 
   Adding Integer modemaps
   Adding NonNegativeInteger modemaps
   Adding PositiveInteger modemaps
   Adding $ modemaps
   Adding R modemaps
   Adding R modemaps
   Adding R modemaps
   Adding R modemaps
   Adding Integer modemaps
   Adding NonNegativeInteger modemaps
   Adding PositiveInteger modemaps
   Adding Rep modemaps
   compiling exported elt : (%,pos) -> R
   Adding DirectProduct(2,R) modemaps
Time: 0.14 SEC.
compiling exported elt : (%,neg) -> R Adding DirectProduct(2,R) modemaps Time: 0.02 SEC.
compiling exported imaginary : () -> % Adding DirectProduct(2,R) modemaps Adding Vector R modemaps Adding List R modemaps Time: 0.05 SEC.
compiling exported real : % -> R Adding DirectProduct(2,R) modemaps Time: 0.02 SEC.
compiling exported imag : % -> R Adding DirectProduct(2,R) modemaps Time: 0.01 SEC.
compiling exported conj : % -> % Adding DirectProduct(2,R) modemaps Adding Vector R modemaps Adding List R modemaps Time: 0.03 SEC.
compiling exported * : (%,%) -> % Adding DirectProduct(2,R) modemaps Adding Vector R modemaps Adding List R modemaps Time: 0.09 SEC.
compiling exported norm : % -> R Time: 0 SEC.
compiling exported arg : % -> R Adding Boolean modemaps Time: 0 SEC.
compiling exported sqrt : % -> % Adding DirectProduct(2,R) modemaps Adding Vector R modemaps Adding List R modemaps Time: 0.03 SEC.
Adding OutputForm modemaps compiling exported coerce : % -> OutputForm Adding Complex R modemaps Time: 0.02 SEC.
Adding Complex R modemaps compiling exported coerce : % -> Complex R Time: 0.01 SEC.
Adding R modemaps augmenting R: DifferentialRing Adding R modemaps augmenting R: Evalable R Adding R modemaps augmenting R: LinearlyExplicitRingOver Integer Adding R modemaps augmenting R: PartialDifferentialRing Symbol Adding R modemaps augmenting R: RetractableTo Fraction Integer Adding R modemaps augmenting R: RetractableTo Integer Adding R modemaps augmenting R: DifferentialRing Adding R modemaps augmenting R: DifferentialRing Adding R modemaps augmenting R: RetractableTo Integer Adding R modemaps augmenting R: OrderedAbelianMonoidSup augmenting $: shallowlyMutable Adding R modemaps augmenting R: Finite Adding R modemaps augmenting R: OrderedAbelianMonoidSup Adding R modemaps augmenting R: OrderedRing Predicate: (|has| $ (ATTRIBUTE |finiteAggregate|)) replaced by: T Predicate: (|has| $ (ATTRIBUTE |shallowlyMutable|)) replaced by: NIL Predicate: (|has| $ (ATTRIBUTE |finiteAggregate|)) replaced by: T (time taken in buildFunctor: 33) Time: 0.53 SEC.
Cumulative Statistics for Constructor ComplexManifold Time: 0.95 seconds
--------------non extending category---------------------- ComplexManifold #1 of category Join(RadicalCategory, DirectProductCategory(2,#1)) with ?.pos : (%,pos) -> #1 ?.neg : (%,neg) -> #1 imaginary : () -> % real : % -> #1 imag : % -> #1 conj : % -> % norm : % -> #1 arg : % -> #1 coerce : % -> Complex #1 has no DirectProductCategory(NIL,#1) finalizing NRLIB CM Processing ComplexManifold for Browser database: --->-->ComplexManifold((elt (R % pos))): Not documented!!!! --->-->ComplexManifold((elt (R % neg))): Not documented!!!! --->-->ComplexManifold((imaginary (%))): Not documented!!!! --->-->ComplexManifold((real (R %))): Not documented!!!! --->-->ComplexManifold((imag (R %))): Not documented!!!! --->-->ComplexManifold((conj (% %))): Not documented!!!! --->-->ComplexManifold((norm (R %))): Not documented!!!! --->-->ComplexManifold((arg (R %))): Not documented!!!! --->-->ComplexManifold((coerce ((Complex R) %))): Not documented!!!! --->-->ComplexManifold(constructor): Not documented!!!! --->-->ComplexManifold: Missing Description ------------------------------------------------------------------------ ComplexManifold is now explicitly exposed in frame initial ComplexManifold will be automatically loaded when needed from /var/zope2/var/LatexWiki/CM.NRLIB/code.o

axiom
a:CM(EXPR INT) := 3
LatexWiki Image(1)
Type: ComplexManifold? Expression Integer
axiom
b:CM(EXPR INT) := -5
LatexWiki Image(2)
Type: ComplexManifold? Expression Integer
axiom
real(a)
LatexWiki Image(3)
Type: Expression Integer
axiom
norm a
LatexWiki Image(4)
Type: Expression Integer
axiom
norm b
LatexWiki Image(5)
Type: Expression Integer
axiom
ab:=a*b
LatexWiki Image(6)
Type: ComplexManifold? Expression Integer
axiom
real ab
LatexWiki Image(7)
Type: Expression Integer
axiom
imag ab
LatexWiki Image(8)
Type: Expression Integer
axiom
s1:=sqrt(a)
LatexWiki Image(9)
Type: ComplexManifold? Expression Integer
axiom
real s1
LatexWiki Image(10)
Type: Expression Integer
axiom
imag s1
LatexWiki Image(11)
Type: Expression Integer
axiom
s2:=sqrt(b)
LatexWiki Image(12)
Type: ComplexManifold? Expression Integer
axiom
real s2
LatexWiki Image(13)
Type: Expression Integer
axiom
imag s2
LatexWiki Image(14)
Type: Expression Integer
axiom
I:CM(EXPR INT) := imaginary()
LatexWiki Image(15)
Type: ComplexManifold? Expression Integer
axiom
real I
LatexWiki Image(16)
Type: Expression Integer
axiom
norm I
LatexWiki Image(17)
Type: Expression Integer
axiom
imag I
LatexWiki Image(18)
Type: Expression Integer
axiom
imag conj I
LatexWiki Image(19)
Type: Expression Integer
axiom
s3:=sqrt(I)
LatexWiki Image(20)
Type: ComplexManifold? Expression Integer
axiom
s3*s3
LatexWiki Image(21)
Type: ComplexManifold? Expression Integer
axiom
c1:=conj(a+b*I)
LatexWiki Image(22)
Type: ComplexManifold? Expression Integer
axiom
real c1
LatexWiki Image(23)
Type: Expression Integer
axiom
imag c1
LatexWiki Image(24)
Type: Expression Integer
axiom
norm c1
LatexWiki Image(25)
Type: Expression Integer
axiom
c1::Complex(EXPR INT)
LatexWiki Image(26)
Type: Complex Expression Integer
axiom
sqrt %
LatexWiki Image(27)
Type: Complex Expression Integer
axiom
s4:=sqrt(c1)
LatexWiki Image(28)
Type: ComplexManifold? Expression Integer
axiom
real s4
LatexWiki Image(29)
Type: Expression Integer
axiom
imag s4
LatexWiki Image(30)
Type: Expression Integer
axiom
s4*s4
LatexWiki Image(31)
Type: ComplexManifold? Expression Integer
axiom
%::Complex(EXPR INT)
LatexWiki Image(32)
Type: Complex Expression Integer
axiom
normalize %
LatexWiki Image(33)
Type: Expression Integer
axiom
%::Complex(EXPR INT)::Complex(INT)
Cannot convert from type Complex Expression Integer to Complex Integer for value +---+ 5\|- 1 + 3