Mercurial > lasercutter
view src/clojure/contrib/test_contrib/test_complex_numbers.clj @ 10:ef7dbbd6452c
added clojure source goodness
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 21 Aug 2010 06:25:44 -0400 |
parents | |
children |
line wrap: on
line source
1 ;; Test routines for complex-numbers.clj3 ;; by Konrad Hinsen4 ;; last updated April 2, 20096 ;; Copyright (c) Konrad Hinsen, 2008. All rights reserved. The use7 ;; and distribution terms for this software are covered by the Eclipse8 ;; Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)9 ;; which can be found in the file epl-v10.html at the root of this10 ;; distribution. By using this software in any fashion, you are11 ;; agreeing to be bound by the terms of this license. You must not12 ;; remove this notice, or any other, from this software.14 (ns clojure.contrib.test-complex-numbers15 (:refer-clojure :exclude [+ - * / = < > <= >=])16 (:use [clojure.test17 :only (deftest is are run-tests)]18 [clojure.contrib.generic.arithmetic19 :only (+ - * /)]20 [clojure.contrib.generic.comparison21 :only (= < > <= >=)]22 [clojure.contrib.generic.math-functions23 :only (abs approx= conjugate exp sqr sqrt)]24 [clojure.contrib.complex-numbers25 :only (complex imaginary real imag)]))27 (deftest complex-addition28 (is (= (+ (complex 1 2) (complex 1 2)) (complex 2 4)))29 (is (= (+ (complex 1 2) (complex -3 -7)) (complex -2 -5)))30 (is (= (+ (complex -3 -7) (complex 1 2)) (complex -2 -5)))31 (is (= (+ (complex 1 2) 3) (complex 4 2)))32 (is (= (+ 3 (complex 1 2)) (complex 4 2)))33 (is (= (+ (complex 1 2) -1) (imaginary 2)))34 (is (= (+ -1 (complex 1 2)) (imaginary 2)))35 (is (= (+ (complex 1 2) (imaginary -2)) 1))36 (is (= (+ (imaginary -2) (complex 1 2)) 1))37 (is (= (+ (complex 1 2) (imaginary 5)) (complex 1 7)))38 (is (= (+ (imaginary 5) (complex 1 2)) (complex 1 7)))39 (is (= (+ (complex -3 -7) (complex 1 2)) (complex -2 -5)))40 (is (= (+ (complex 1 2) (complex -3 -7)) (complex -2 -5)))41 (is (= (+ (complex -3 -7) (complex -3 -7)) (complex -6 -14)))42 (is (= (+ (complex -3 -7) 3) (imaginary -7)))43 (is (= (+ 3 (complex -3 -7)) (imaginary -7)))44 (is (= (+ (complex -3 -7) -1) (complex -4 -7)))45 (is (= (+ -1 (complex -3 -7)) (complex -4 -7)))46 (is (= (+ (complex -3 -7) (imaginary -2)) (complex -3 -9)))47 (is (= (+ (imaginary -2) (complex -3 -7)) (complex -3 -9)))48 (is (= (+ (complex -3 -7) (imaginary 5)) (complex -3 -2)))49 (is (= (+ (imaginary 5) (complex -3 -7)) (complex -3 -2)))50 (is (= (+ 3 (complex 1 2)) (complex 4 2)))51 (is (= (+ (complex 1 2) 3) (complex 4 2)))52 (is (= (+ 3 (complex -3 -7)) (imaginary -7)))53 (is (= (+ (complex -3 -7) 3) (imaginary -7)))54 (is (= (+ 3 (imaginary -2)) (complex 3 -2)))55 (is (= (+ (imaginary -2) 3) (complex 3 -2)))56 (is (= (+ 3 (imaginary 5)) (complex 3 5)))57 (is (= (+ (imaginary 5) 3) (complex 3 5)))58 (is (= (+ -1 (complex 1 2)) (imaginary 2)))59 (is (= (+ (complex 1 2) -1) (imaginary 2)))60 (is (= (+ -1 (complex -3 -7)) (complex -4 -7)))61 (is (= (+ (complex -3 -7) -1) (complex -4 -7)))62 (is (= (+ -1 (imaginary -2)) (complex -1 -2)))63 (is (= (+ (imaginary -2) -1) (complex -1 -2)))64 (is (= (+ -1 (imaginary 5)) (complex -1 5)))65 (is (= (+ (imaginary 5) -1) (complex -1 5)))66 (is (= (+ (imaginary -2) (complex 1 2)) 1))67 (is (= (+ (complex 1 2) (imaginary -2)) 1))68 (is (= (+ (imaginary -2) (complex -3 -7)) (complex -3 -9)))69 (is (= (+ (complex -3 -7) (imaginary -2)) (complex -3 -9)))70 (is (= (+ (imaginary -2) 3) (complex 3 -2)))71 (is (= (+ 3 (imaginary -2)) (complex 3 -2)))72 (is (= (+ (imaginary -2) -1) (complex -1 -2)))73 (is (= (+ -1 (imaginary -2)) (complex -1 -2)))74 (is (= (+ (imaginary -2) (imaginary -2)) (imaginary -4)))75 (is (= (+ (imaginary -2) (imaginary 5)) (imaginary 3)))76 (is (= (+ (imaginary 5) (imaginary -2)) (imaginary 3)))77 (is (= (+ (imaginary 5) (complex 1 2)) (complex 1 7)))78 (is (= (+ (complex 1 2) (imaginary 5)) (complex 1 7)))79 (is (= (+ (imaginary 5) (complex -3 -7)) (complex -3 -2)))80 (is (= (+ (complex -3 -7) (imaginary 5)) (complex -3 -2)))81 (is (= (+ (imaginary 5) 3) (complex 3 5)))82 (is (= (+ 3 (imaginary 5)) (complex 3 5)))83 (is (= (+ (imaginary 5) -1) (complex -1 5)))84 (is (= (+ -1 (imaginary 5)) (complex -1 5)))85 (is (= (+ (imaginary 5) (imaginary -2)) (imaginary 3)))86 (is (= (+ (imaginary -2) (imaginary 5)) (imaginary 3)))87 (is (= (+ (imaginary 5) (imaginary 5)) (imaginary 10))))89 (deftest complex-subtraction90 (is (= (- (complex 1 2) (complex 1 2)) 0))91 (is (= (- (complex 1 2) (complex -3 -7)) (complex 4 9)))92 (is (= (- (complex -3 -7) (complex 1 2)) (complex -4 -9)))93 (is (= (- (complex 1 2) 3) (complex -2 2)))94 (is (= (- 3 (complex 1 2)) (complex 2 -2)))95 (is (= (- (complex 1 2) -1) (complex 2 2)))96 (is (= (- -1 (complex 1 2)) (complex -2 -2)))97 (is (= (- (complex 1 2) (imaginary -2)) (complex 1 4)))98 (is (= (- (imaginary -2) (complex 1 2)) (complex -1 -4)))99 (is (= (- (complex 1 2) (imaginary 5)) (complex 1 -3)))100 (is (= (- (imaginary 5) (complex 1 2)) (complex -1 3)))101 (is (= (- (complex -3 -7) (complex 1 2)) (complex -4 -9)))102 (is (= (- (complex 1 2) (complex -3 -7)) (complex 4 9)))103 (is (= (- (complex -3 -7) (complex -3 -7)) 0))104 (is (= (- (complex -3 -7) 3) (complex -6 -7)))105 (is (= (- 3 (complex -3 -7)) (complex 6 7)))106 (is (= (- (complex -3 -7) -1) (complex -2 -7)))107 (is (= (- -1 (complex -3 -7)) (complex 2 7)))108 (is (= (- (complex -3 -7) (imaginary -2)) (complex -3 -5)))109 (is (= (- (imaginary -2) (complex -3 -7)) (complex 3 5)))110 (is (= (- (complex -3 -7) (imaginary 5)) (complex -3 -12)))111 (is (= (- (imaginary 5) (complex -3 -7)) (complex 3 12)))112 (is (= (- 3 (complex 1 2)) (complex 2 -2)))113 (is (= (- (complex 1 2) 3) (complex -2 2)))114 (is (= (- 3 (complex -3 -7)) (complex 6 7)))115 (is (= (- (complex -3 -7) 3) (complex -6 -7)))116 (is (= (- 3 (imaginary -2)) (complex 3 2)))117 (is (= (- (imaginary -2) 3) (complex -3 -2)))118 (is (= (- 3 (imaginary 5)) (complex 3 -5)))119 (is (= (- (imaginary 5) 3) (complex -3 5)))120 (is (= (- -1 (complex 1 2)) (complex -2 -2)))121 (is (= (- (complex 1 2) -1) (complex 2 2)))122 (is (= (- -1 (complex -3 -7)) (complex 2 7)))123 (is (= (- (complex -3 -7) -1) (complex -2 -7)))124 (is (= (- -1 (imaginary -2)) (complex -1 2)))125 (is (= (- (imaginary -2) -1) (complex 1 -2)))126 (is (= (- -1 (imaginary 5)) (complex -1 -5)))127 (is (= (- (imaginary 5) -1) (complex 1 5)))128 (is (= (- (imaginary -2) (complex 1 2)) (complex -1 -4)))129 (is (= (- (complex 1 2) (imaginary -2)) (complex 1 4)))130 (is (= (- (imaginary -2) (complex -3 -7)) (complex 3 5)))131 (is (= (- (complex -3 -7) (imaginary -2)) (complex -3 -5)))132 (is (= (- (imaginary -2) 3) (complex -3 -2)))133 (is (= (- 3 (imaginary -2)) (complex 3 2)))134 (is (= (- (imaginary -2) -1) (complex 1 -2)))135 (is (= (- -1 (imaginary -2)) (complex -1 2)))136 (is (= (- (imaginary -2) (imaginary -2)) 0))137 (is (= (- (imaginary -2) (imaginary 5)) (imaginary -7)))138 (is (= (- (imaginary 5) (imaginary -2)) (imaginary 7)))139 (is (= (- (imaginary 5) (complex 1 2)) (complex -1 3)))140 (is (= (- (complex 1 2) (imaginary 5)) (complex 1 -3)))141 (is (= (- (imaginary 5) (complex -3 -7)) (complex 3 12)))142 (is (= (- (complex -3 -7) (imaginary 5)) (complex -3 -12)))143 (is (= (- (imaginary 5) 3) (complex -3 5)))144 (is (= (- 3 (imaginary 5)) (complex 3 -5)))145 (is (= (- (imaginary 5) -1) (complex 1 5)))146 (is (= (- -1 (imaginary 5)) (complex -1 -5)))147 (is (= (- (imaginary 5) (imaginary -2)) (imaginary 7)))148 (is (= (- (imaginary -2) (imaginary 5)) (imaginary -7)))149 (is (= (- (imaginary 5) (imaginary 5)) 0)))151 (deftest complex-multiplication152 (is (= (* (complex 1 2) (complex 1 2)) (complex -3 4)))153 (is (= (* (complex 1 2) (complex -3 -7)) (complex 11 -13)))154 (is (= (* (complex -3 -7) (complex 1 2)) (complex 11 -13)))155 (is (= (* (complex 1 2) 3) (complex 3 6)))156 (is (= (* 3 (complex 1 2)) (complex 3 6)))157 (is (= (* (complex 1 2) -1) (complex -1 -2)))158 (is (= (* -1 (complex 1 2)) (complex -1 -2)))159 (is (= (* (complex 1 2) (imaginary -2)) (complex 4 -2)))160 (is (= (* (imaginary -2) (complex 1 2)) (complex 4 -2)))161 (is (= (* (complex 1 2) (imaginary 5)) (complex -10 5)))162 (is (= (* (imaginary 5) (complex 1 2)) (complex -10 5)))163 (is (= (* (complex -3 -7) (complex 1 2)) (complex 11 -13)))164 (is (= (* (complex 1 2) (complex -3 -7)) (complex 11 -13)))165 (is (= (* (complex -3 -7) (complex -3 -7)) (complex -40 42)))166 (is (= (* (complex -3 -7) 3) (complex -9 -21)))167 (is (= (* 3 (complex -3 -7)) (complex -9 -21)))168 (is (= (* (complex -3 -7) -1) (complex 3 7)))169 (is (= (* -1 (complex -3 -7)) (complex 3 7)))170 (is (= (* (complex -3 -7) (imaginary -2)) (complex -14 6)))171 (is (= (* (imaginary -2) (complex -3 -7)) (complex -14 6)))172 (is (= (* (complex -3 -7) (imaginary 5)) (complex 35 -15)))173 (is (= (* (imaginary 5) (complex -3 -7)) (complex 35 -15)))174 (is (= (* 3 (complex 1 2)) (complex 3 6)))175 (is (= (* (complex 1 2) 3) (complex 3 6)))176 (is (= (* 3 (complex -3 -7)) (complex -9 -21)))177 (is (= (* (complex -3 -7) 3) (complex -9 -21)))178 (is (= (* 3 (imaginary -2)) (imaginary -6)))179 (is (= (* (imaginary -2) 3) (imaginary -6)))180 (is (= (* 3 (imaginary 5)) (imaginary 15)))181 (is (= (* (imaginary 5) 3) (imaginary 15)))182 (is (= (* -1 (complex 1 2)) (complex -1 -2)))183 (is (= (* (complex 1 2) -1) (complex -1 -2)))184 (is (= (* -1 (complex -3 -7)) (complex 3 7)))185 (is (= (* (complex -3 -7) -1) (complex 3 7)))186 (is (= (* -1 (imaginary -2)) (imaginary 2)))187 (is (= (* (imaginary -2) -1) (imaginary 2)))188 (is (= (* -1 (imaginary 5)) (imaginary -5)))189 (is (= (* (imaginary 5) -1) (imaginary -5)))190 (is (= (* (imaginary -2) (complex 1 2)) (complex 4 -2)))191 (is (= (* (complex 1 2) (imaginary -2)) (complex 4 -2)))192 (is (= (* (imaginary -2) (complex -3 -7)) (complex -14 6)))193 (is (= (* (complex -3 -7) (imaginary -2)) (complex -14 6)))194 (is (= (* (imaginary -2) 3) (imaginary -6)))195 (is (= (* 3 (imaginary -2)) (imaginary -6)))196 (is (= (* (imaginary -2) -1) (imaginary 2)))197 (is (= (* -1 (imaginary -2)) (imaginary 2)))198 (is (= (* (imaginary -2) (imaginary -2)) -4))199 (is (= (* (imaginary -2) (imaginary 5)) 10))200 (is (= (* (imaginary 5) (imaginary -2)) 10))201 (is (= (* (imaginary 5) (complex 1 2)) (complex -10 5)))202 (is (= (* (complex 1 2) (imaginary 5)) (complex -10 5)))203 (is (= (* (imaginary 5) (complex -3 -7)) (complex 35 -15)))204 (is (= (* (complex -3 -7) (imaginary 5)) (complex 35 -15)))205 (is (= (* (imaginary 5) 3) (imaginary 15)))206 (is (= (* 3 (imaginary 5)) (imaginary 15)))207 (is (= (* (imaginary 5) -1) (imaginary -5)))208 (is (= (* -1 (imaginary 5)) (imaginary -5)))209 (is (= (* (imaginary 5) (imaginary -2)) 10))210 (is (= (* (imaginary -2) (imaginary 5)) 10))211 (is (= (* (imaginary 5) (imaginary 5)) -25)))213 (deftest complex-division214 (is (= (/ (complex 1 2) (complex 1 2)) 1))215 (is (= (/ (complex 1 2) (complex -3 -7)) (complex -17/58 1/58)))216 (is (= (/ (complex -3 -7) (complex 1 2)) (complex -17/5 -1/5)))217 (is (= (/ (complex 1 2) 3) (complex 1/3 2/3)))218 (is (= (/ 3 (complex 1 2)) (complex 3/5 -6/5)))219 (is (= (/ (complex 1 2) -1) (complex -1 -2)))220 (is (= (/ -1 (complex 1 2)) (complex -1/5 2/5)))221 (is (= (/ (complex 1 2) (imaginary -2)) (complex -1 1/2)))222 (is (= (/ (imaginary -2) (complex 1 2)) (complex -4/5 -2/5)))223 (is (= (/ (complex 1 2) (imaginary 5)) (complex 2/5 -1/5)))224 (is (= (/ (imaginary 5) (complex 1 2)) (complex 2 1)))225 (is (= (/ (complex -3 -7) (complex 1 2)) (complex -17/5 -1/5)))226 (is (= (/ (complex 1 2) (complex -3 -7)) (complex -17/58 1/58)))227 (is (= (/ (complex -3 -7) (complex -3 -7)) 1))228 (is (= (/ (complex -3 -7) 3) (complex -1 -7/3)))229 (is (= (/ 3 (complex -3 -7)) (complex -9/58 21/58)))230 (is (= (/ (complex -3 -7) -1) (complex 3 7)))231 (is (= (/ -1 (complex -3 -7)) (complex 3/58 -7/58)))232 (is (= (/ (complex -3 -7) (imaginary -2)) (complex 7/2 -3/2)))233 (is (= (/ (imaginary -2) (complex -3 -7)) (complex 7/29 3/29)))234 (is (= (/ (complex -3 -7) (imaginary 5)) (complex -7/5 3/5)))235 (is (= (/ (imaginary 5) (complex -3 -7)) (complex -35/58 -15/58)))236 (is (= (/ 3 (complex 1 2)) (complex 3/5 -6/5)))237 (is (= (/ (complex 1 2) 3) (complex 1/3 2/3)))238 (is (= (/ 3 (complex -3 -7)) (complex -9/58 21/58)))239 (is (= (/ (complex -3 -7) 3) (complex -1 -7/3)))240 #_(is (= (/ 3 (imaginary -2)) (imaginary 1.5)))241 (is (= (/ (imaginary -2) 3) (imaginary -2/3)))242 (is (= (/ 3 (imaginary 5)) (imaginary -3/5)))243 (is (= (/ (imaginary 5) 3) (imaginary 5/3)))244 (is (= (/ -1 (complex 1 2)) (complex -1/5 2/5)))245 (is (= (/ (complex 1 2) -1) (complex -1 -2)))246 (is (= (/ -1 (complex -3 -7)) (complex 3/58 -7/58)))247 (is (= (/ (complex -3 -7) -1) (complex 3 7)))248 (is (= (/ -1 (imaginary -2)) (imaginary -1/2)))249 (is (= (/ (imaginary -2) -1) (imaginary 2)))250 (is (= (/ -1 (imaginary 5)) (imaginary 1/5)))251 (is (= (/ (imaginary 5) -1) (imaginary -5)))252 (is (= (/ (imaginary -2) (complex 1 2)) (complex -4/5 -2/5)))253 (is (= (/ (complex 1 2) (imaginary -2)) (complex -1 1/2)))254 (is (= (/ (imaginary -2) (complex -3 -7)) (complex 7/29 3/29)))255 (is (= (/ (complex -3 -7) (imaginary -2)) (complex 7/2 -3/2)))256 (is (= (/ (imaginary -2) 3) (imaginary -2/3)))257 (is (= (/ 3 (imaginary -2)) (imaginary 3/2)))258 (is (= (/ (imaginary -2) -1) (imaginary 2)))259 (is (= (/ -1 (imaginary -2)) (imaginary -1/2)))260 (is (= (/ (imaginary -2) (imaginary -2)) 1))261 (is (= (/ (imaginary -2) (imaginary 5)) -2/5))262 (is (= (/ (imaginary 5) (imaginary -2)) -5/2))263 (is (= (/ (imaginary 5) (complex 1 2)) (complex 2 1)))264 (is (= (/ (complex 1 2) (imaginary 5)) (complex 2/5 -1/5)))265 (is (= (/ (imaginary 5) (complex -3 -7)) (complex -35/58 -15/58)))266 (is (= (/ (complex -3 -7) (imaginary 5)) (complex -7/5 3/5)))267 (is (= (/ (imaginary 5) 3) (imaginary 5/3)))268 (is (= (/ 3 (imaginary 5)) (imaginary -3/5)))269 (is (= (/ (imaginary 5) -1) (imaginary -5)))270 (is (= (/ -1 (imaginary 5)) (imaginary 1/5)))271 (is (= (/ (imaginary 5) (imaginary -2)) -5/2))272 (is (= (/ (imaginary -2) (imaginary 5)) -2/5))273 (is (= (/ (imaginary 5) (imaginary 5)) 1)))275 (deftest complex-conjugate276 (is (= (conjugate (complex 1 2)) (complex 1 -2)))277 (is (= (conjugate (complex -3 -7)) (complex -3 7)))278 (is (= (conjugate (imaginary -2)) (imaginary 2)))279 (is (= (conjugate (imaginary 5)) (imaginary -5))))281 (deftest complex-abs282 (doseq [c [(complex 1 2) (complex -2 3) (complex 4 -2)283 (complex -3 -7) (imaginary -2) (imaginary 5)]]284 (is (approx= (* c (conjugate c))285 (sqr (abs c))286 1e-14))))288 (deftest complex-sqrt289 (doseq [c [(complex 1 2) (complex -2 3) (complex 4 -2)290 (complex -3 -7) (imaginary -2) (imaginary 5)]]291 (let [r (sqrt c)]292 (is (approx= c (sqr r) 1e-14))293 (is (>= (real r) 0)))))295 (deftest complex-exp296 (is (approx= (exp (complex 1 2))297 (complex -1.1312043837568135 2.4717266720048188)298 1e-14))299 (is (approx= (exp (complex 2 3))300 (complex -7.3151100949011028 1.0427436562359045)301 1e-14))302 (is (approx= (exp (complex 4 -2))303 (complex -22.720847417619233 -49.645957334580565)304 1e-14))305 (is (approx= (exp (complex 3 -7))306 (complex 15.142531566086868 -13.195928586605717)307 1e-14))308 (is (approx= (exp (imaginary -2))309 (complex -0.41614683654714241 -0.90929742682568171)310 1e-14))311 (is (approx= (exp (imaginary 5))312 (complex 0.2836621854632263 -0.95892427466313845)313 1e-14)))