diff options
author | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-01-25 12:39:55 +0000 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2015-01-25 12:39:55 +0000 |
commit | 67e489d4e5a1534e19a0d0a507be874acd64815b (patch) | |
tree | b06c99be0b62fd673d3575626013904a99dd9a79 /lib | |
parent | 88450e76fda9bc3894ebe519d4ef2dd010771c09 (diff) | |
parent | defbd10c191e6e5f47f83fc1dbd3aed038e6c8d7 (diff) | |
download | Nim-67e489d4e5a1534e19a0d0a507be874acd64815b.tar.gz |
Merge pull request #2009 from gmpreussner/devel
Added complex conjugate
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/complex.nim | 60 |
1 files changed, 33 insertions, 27 deletions
diff --git a/lib/pure/complex.nim b/lib/pure/complex.nim index 0c5704f69..04cffe4e4 100644 --- a/lib/pure/complex.nim +++ b/lib/pure/complex.nim @@ -171,6 +171,12 @@ proc abs*(z: Complex): float = result = y * sqrt(1.0 + temp * temp) +proc conjugate*(z: Complex): Complex = + ## Conjugate of complex number `z`. + result.re = z.re + result.im = -z.im + + proc sqrt*(z: Complex): Complex = ## Square root for a complex number `z`. var x, y, w, r: float @@ -303,41 +309,41 @@ when isMainModule: var tt = (10.0, 20.0) var ipi = (0.0, -PI) - assert( a == a ) - assert( (a-a) == z ) - assert( (a+b) == z ) - assert( (a/b) == m1 ) - assert( (1.0/a) == (0.2, -0.4) ) - assert( (a*b) == (3.0, -4.0) ) - assert( 10.0*a == tt ) - assert( a*10.0 == tt ) - assert( tt/10.0 == a ) + assert( a == a ) + assert( (a-a) == z ) + assert( (a+b) == z ) + assert( (a/b) == m1 ) + assert( (1.0/a) == (0.2, -0.4) ) + assert( (a*b) == (3.0, -4.0) ) + assert( 10.0*a == tt ) + assert( a*10.0 == tt ) + assert( tt/10.0 == a ) assert( oo+(-1.0) == i ) assert( (-1.0)+oo == i ) - assert( abs(oo) == sqrt(2.0) ) - assert( sqrt(m1) == i ) - assert( exp(ipi) =~ m1 ) + assert( abs(oo) == sqrt(2.0) ) + assert( conjugate(a) == (1.0, -2.0) ) + assert( sqrt(m1) == i ) + assert( exp(ipi) =~ m1 ) - assert( pow(a,b) =~ (-3.72999124927876, -1.68815826725068) ) - assert( pow(z,a) =~ (0.0, 0.0) ) - assert( pow(z,z) =~ (1.0, 0.0) ) + assert( pow(a,b) =~ (-3.72999124927876, -1.68815826725068) ) + assert( pow(z,a) =~ (0.0, 0.0) ) + assert( pow(z,z) =~ (1.0, 0.0) ) assert( pow(a,one) =~ a ) - assert( pow(a,m1) =~ (0.2, -0.4) ) + assert( pow(a,m1) =~ (0.2, -0.4) ) - assert( ln(a) =~ (0.804718956217050, 1.107148717794090) ) + assert( ln(a) =~ (0.804718956217050, 1.107148717794090) ) assert( log10(a) =~ (0.349485002168009, 0.480828578784234) ) - assert( log2(a) =~ (1.16096404744368, 1.59727796468811) ) - - assert( sin(a) =~ (3.16577851321617, 1.95960104142161) ) - assert( cos(a) =~ (2.03272300701967, -3.05189779915180) ) - assert( tan(a) =~ (0.0338128260798967, 1.0147936161466335) ) - assert( cot(a) =~ 1.0/tan(a) ) - assert( sec(a) =~ 1.0/cos(a) ) - assert( csc(a) =~ 1.0/sin(a) ) + assert( log2(a) =~ (1.16096404744368, 1.59727796468811) ) + + assert( sin(a) =~ (3.16577851321617, 1.95960104142161) ) + assert( cos(a) =~ (2.03272300701967, -3.05189779915180) ) + assert( tan(a) =~ (0.0338128260798967, 1.0147936161466335) ) + assert( cot(a) =~ 1.0/tan(a) ) + assert( sec(a) =~ 1.0/cos(a) ) + assert( csc(a) =~ 1.0/sin(a) ) assert( arcsin(a) =~ (0.427078586392476, 1.528570919480998) ) assert( arccos(a) =~ (1.14371774040242, -1.52857091948100) ) assert( cosh(a) =~ (-0.642148124715520, 1.068607421382778) ) assert( sinh(a) =~ (-0.489056259041294, 1.403119250622040) ) - - + \ No newline at end of file |