#reader(lib"read.ss""wxme")WXME0108 ## #| This file uses the GRacket editor format. Open this file in DrRacket version 5.3.0.6 or later to read it. Most likely, it was created by saving a program in DrRacket, and it probably contains a program with non-text elements (such as images or comment boxes). http://racket-lang.org/ |# 30 7 #"wxtext\0" 3 1 6 #"wxtab\0" 1 1 8 #"wximage\0" 2 0 8 #"wxmedia\0" 4 1 34 #"(lib \"syntax-browser.ss\" \"mrlib\")\0" 1 0 16 #"drscheme:number\0" 3 0 44 #"(lib \"number-snip.ss\" \"drscheme\" \"private\")\0" 1 0 36 #"(lib \"comment-snip.ss\" \"framework\")\0" 1 0 93 ( #"((lib \"collapsed-snipclass.ss\" \"framework\") (lib \"collapsed-sni" #"pclass-wxme.ss\" \"framework\"))\0" ) 0 0 43 #"(lib \"collapsed-snipclass.ss\" \"framework\")\0" 0 0 19 #"drscheme:sexp-snip\0" 0 0 36 #"(lib \"cache-image-snip.ss\" \"mrlib\")\0" 1 0 68 ( #"((lib \"image-core.ss\" \"mrlib\") (lib \"image-core-wxme.rkt\" \"mr" #"lib\"))\0" ) 1 0 33 #"(lib \"bullet-snip.ss\" \"browser\")\0" 0 0 88 ( #"((lib \"pict-snip.rkt\" \"drracket\" \"private\") (lib \"pict-snip.r" #"kt\" \"drracket\" \"private\"))\0" ) 0 0 29 #"drscheme:bindings-snipclass%\0" 1 0 25 #"(lib \"matrix.ss\" \"htdp\")\0" 1 0 22 #"drscheme:lambda-snip%\0" 1 0 57 #"(lib \"hrule-snip.rkt\" \"macro-debugger\" \"syntax-browser\")\0" 1 0 45 #"(lib \"image-snipr.ss\" \"slideshow\" \"private\")\0" 1 0 26 #"drscheme:pict-value-snip%\0" 0 0 38 #"(lib \"pict-snipclass.ss\" \"slideshow\")\0" 2 0 55 #"(lib \"vertical-separator-snip.ss\" \"stepper\" \"private\")\0" 1 0 18 #"drscheme:xml-snip\0" 1 0 31 #"(lib \"xml-snipclass.ss\" \"xml\")\0" 1 0 21 #"drscheme:scheme-snip\0" 2 0 34 #"(lib \"scheme-snipclass.ss\" \"xml\")\0" 1 0 10 #"text-box%\0" 1 0 32 #"(lib \"text-snipclass.ss\" \"xml\")\0" 1 0 15 #"test-case-box%\0" 2 0 1 6 #"wxloc\0" 0 0 63 0 1 #"\0" 0 75 1 #"\0" 0 12 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 0 9 #"Standard\0" 0 75 12 #"Courier New\0" 0 16 90 -1 90 -1 3 -1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 255 255 255 1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 -1 -1 2 24 #"framework:default-color\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 15 #"text:ports out\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 150 0 150 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 2 15 #"text:ports err\0" 0 -1 1 #"\0" 1.0 0 -1 -1 93 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 2 17 #"text:ports value\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 175 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 -1 2 27 #"Matching Parenthesis Style\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1.0 1.0 1.0 34 139 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 37 #"framework:syntax-color:scheme:symbol\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 38 #"framework:syntax-color:scheme:keyword\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 38 38 128 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 38 #"framework:syntax-color:scheme:comment\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 194 116 31 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 37 #"framework:syntax-color:scheme:string\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 39 #"framework:syntax-color:scheme:constant\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 41 128 38 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 42 #"framework:syntax-color:scheme:parenthesis\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 132 60 36 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 36 #"framework:syntax-color:scheme:error\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 36 #"framework:syntax-color:scheme:other\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 38 #"drracket:check-syntax:lexically-bound\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 81 112 203 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 28 #"drracket:check-syntax:set!d\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 37 #"drracket:check-syntax:unused-require\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 36 #"drracket:check-syntax:free-variable\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 255 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 31 #"drracket:check-syntax:imported\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 68 0 203 0 0 0 -1 -1 2 47 #"drracket:check-syntax:my-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 178 34 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 50 #"drracket:check-syntax:their-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 116 0 0 0 0 -1 -1 2 48 #"drracket:check-syntax:unk-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 49 #"drracket:check-syntax:both-obligation-style-pref\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 139 142 28 0 0 0 -1 -1 2 26 #"plt:htdp:test-coverage-on\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 2 27 #"plt:htdp:test-coverage-off\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 1 0 0 0 0 0 0 255 165 0 0 0 0 -1 -1 4 1 #"\0" 0 70 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 4 #"XML\0" 0 70 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 37 #"plt:module-language:test-coverage-on\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 34 139 34 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 176 48 96 0 0 0 -1 -1 2 38 #"plt:module-language:test-coverage-off\0" 0 -1 1 #"\0" 1 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 1 1 1 176 48 96 0 0 0 -1 -1 0 1 #"\0" 0 75 12 #"Courier New\0" 0.0 16 90 -1 90 -1 3 -1 0 1 0 1 0 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 255 0 0 0 -1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 1 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 0 255 0 0 0 -1 -1 4 1 #"\0" 0 71 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 0 100 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0.0 0.0 0.0 1.0 1.0 1.0 200 0 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 92 -1 -1 -1 -1 -1 0 0 0 0 0 1 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 0 -1 -1 0 1 #"\0" 0 -1 1 #"\0" 0.0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 2 1 #"\0" 0 -1 1 #"\0" 0.0 13 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 4 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 45 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 1.0 1.0 1.0 1.0 1.0 1.0 0 0 0 0 0 0 -1 -1 47 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 49 1 #"\0" 0 -1 1 #"\0" 1.0 0 -1 -1 -1 -1 -1 -1 0 0 0 0 1 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 255 255 255 -1 -1 0 14783 0 26 3 12 #"#lang racket" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"require" 0 0 22 3 1 #" " 0 0 19 3 13 #"\"for-max.rkt\"" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 17 3 8 #";;; BUGS" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 9 #"; None..." 0 0 22 29 1 #"\n" 0 0 17 3 9 #"; (known)" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 17 3 8 #";;; TODO" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 37 #"; Add tolerance to various functions." 0 0 22 29 1 #"\n" 0 0 17 3 60 #"; If elements are below tolerance they are interpreted as 0." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 47 #"; Partial pivoting is turned of in determinant," 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; due to the row interchanges in gauss-eliminate!" 0 0 22 29 1 #"\n" 0 0 17 3 54 #"; Find way to communicate the number of row changes to" 0 0 22 29 1 #"\n" 0 0 17 3 42 #"; determinant, so it can correct the sign." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 4 #";;; " 0 0 22 29 1 #"\n" 0 0 17 3 18 #";;; DENSE MATRICES" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 59 #"; This module contains an implementation of dense matrices." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 17 3 17 #";;; Documentation" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; See link to docs." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 17 3 17 #";;; Project ideas" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 50 #"; 1. Specialized versions of Gaussian elimination." 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; - floats: use Noel's bindings for GSL ?" 0 0 22 29 1 #"\n" 0 0 17 3 17 #"; - integers" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; - expressions" 0 0 22 29 1 #"\n" 0 0 17 3 65 #"; 2. For integer version see Geddes (two-step integer algorithm)." 0 0 22 29 1 #"\n" 0 0 17 3 67 #"; 3. The integer version can be generealized to gaussian elimantion" 0 0 22 29 1 #"\n" 0 0 17 3 53 #"; of matrices over non-fields (think polynomials)." 0 0 22 29 1 #"\n" 0 0 17 3 55 #"; 4. LUP factorization (easy - modify LU-factorization)" 0 0 22 29 1 #"\n" 0 0 17 3 27 #"; 5. Cholesky factorization" 0 0 22 29 1 #"\n" 0 0 17 3 39 #"; 6. SVD - Singular Value Decomposition" 0 0 22 29 1 #"\n" 0 0 17 3 30 #"; 7. More matrix constructors:" 0 0 22 29 1 #"\n" 0 0 17 3 10 #"; - \"" 0 0 17 3 12 #"famous\" ones" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; - band matrices" 0 0 22 29 1 #"\n" 0 0 17 3 23 #"; - stack matrices" 0 0 22 29 1 #"\n" 0 0 17 3 26 #"; - rotation matrices" 0 0 22 29 1 #"\n" 0 0 17 3 28 #"; - reflection matrices" 0 0 22 29 1 #"\n" 0 0 17 3 28 #"; - permuation matrices" 0 0 22 29 1 #"\n" 0 0 17 3 28 #"; - projection matrices" 0 0 22 29 1 #"\n" 0 0 17 3 26 #"; 8. 2d and 3d-operations:" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; - hat vector" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; - cross product" 0 0 22 29 1 #"\n" 0 0 17 3 21 #"; 9. Equation solving" 0 0 22 29 1 #"\n" 0 0 17 3 61 #"; - back and forward substituion for triangular matrices" 0 0 22 29 1 #"\n" 0 0 17 3 16 #"; 10. Predicates" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; - test for different shapes" 0 0 22 29 1 #"\n" 0 0 17 3 41 #"; - test for different type of entries" 0 0 22 29 1 #"\n" 0 0 17 3 44 #"; 11. Matrix language with convenient syntax" 0 0 22 29 1 #"\n" 0 0 17 3 14 #"; 12. Generics" 0 0 22 29 1 #"\n" 0 0 17 3 48 #"; 13. Rewrite rank and nullity to use QR or SVD." 0 0 22 29 1 #"\n" 0 0 17 3 55 #"; 14. Test algorithms with matrices from Matrix Market." 0 0 22 29 1 #"\n" 0 0 17 3 40 #"; http://math.nist.gov/MatrixMarket/" 0 0 22 29 1 #"\n" 0 0 17 3 35 #"; 15. Implement SVD with ideas from" 0 0 22 29 1 #"\n" 0 0 17 3 42 #"; http://arxiv.org/pdf/0909.4061v2.pdf" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 9 #";;; TESTS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; Tests are situated next to the code." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 36 #"; Run this in DrRacket and evaluate " 0 0 22 29 1 #"\n" 0 0 17 3 6 #"; (" 0 0 17 3 7 #"require" 0 0 17 3 10 #" (submod \"" 0 0 17 3 1 #"." 0 0 17 3 8 #"\" test))" 0 0 22 29 1 #"\n" 0 0 17 3 45 #"; in the interaction window to run the tests." 0 0 22 29 1 #"\n" 0 0 17 3 57 #"; Or customize the language in DrRacekt and add the test " 0 0 22 29 1 #"\n" 0 0 17 3 11 #"; module to" 0 0 17 3 1 #" " 0 0 17 3 3 #"the" 0 0 17 3 1 #" " 0 0 17 3 4 #"list" 0 0 17 3 1 #" " 0 0 17 3 2 #"of" 0 0 17 3 19 #" submodules to run." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 3 2 #" (" 0 0 14 3 7 #"require" 0 0 22 3 1 #" " 0 0 14 3 8 #"rackunit" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 14 3 5 #"test=" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"actual" 0 0 22 3 1 #" " 0 0 14 3 8 #"expected" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 20 3 2 #"#`" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 26 3 2 #"#," 0 0 22 3 1 #"(" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 20 3 2 #"#'" 0 0 14 3 6 #"actual" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 6 #"actual" 0 0 22 3 1 #" " 0 0 14 3 8 #"expected" 0 0 22 3 6 #")))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 13 #";;; Shorthand" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 14 3 5 #"alias" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 3 #"new" 0 0 22 3 1 #" " 0 0 14 3 3 #"old" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 20 3 2 #"#'" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 1 #" " 0 0 14 3 3 #"new" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 23 #"make-rename-transformer" 0 0 22 3 1 #" " 0 0 20 3 2 #"#'" 0 0 14 3 3 #"old" 0 0 22 3 5 #"))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"alias" 0 0 22 3 1 #" " 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 15 3 6 #"define" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"alias" 0 0 22 3 1 #" " 0 0 15 3 4 #"def*" 0 0 22 3 1 #" " 0 0 15 3 13 #"define-values" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 18 #";;; REPRESENTATION" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 73 ( #"; A MATRIX consists of m rows, n columns, and a vector d of m*n elem" #"ents." ) 0 0 22 29 1 #"\n" 0 0 17 3 68 #"; For now all elements are numbers, but elm? is used (inconsistenly)" 0 0 22 29 1 #"\n" 0 0 17 3 56 #"; for easier to conversion to matrices over expressions." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 7 #"number?" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 17 3 70 ( #"; The constructor and accessors of the matrix struct are not exporte" #"d." ) 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"struct" 0 0 22 3 1 #" " 0 0 14 3 6 #"matrix" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 16 #") #:transparent)" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 5 #"nat/c" 0 0 22 3 1 #" " 0 0 14 3 16 #"natural-number/c" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 1 #" " 0 0 14 3 5 #"nat/c" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 4 #"void" 0 0 22 3 2 #" (" 0 0 14 3 8 #"struct/c" 0 0 22 3 1 #" " 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 2 #" (" 0 0 14 3 8 #"vectorof" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 44 #";;; SIMPLE ACCESSORS TO THE matrix STRUCTURE" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 7 #";; size" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 11 #"matrix-size" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 2 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"values" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 4 #"list" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 6 #";; ref" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 5 #"nat/c" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")] " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 20 3 1 #"4" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 13 #";;; CONTRACTS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 2 #" (" 0 0 14 3 19 #"flat-named-contract" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 12 #"row-vector/c" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 19 #"flat-named-contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 20 3 1 #"'" 0 0 14 3 10 #"row-vector" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 19 #"flat-named-contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 20 3 1 #"'" 0 0 14 3 13 #"column-vector" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"or/c" 0 0 22 3 1 #" " 0 0 14 3 8 #"vector/c" 0 0 22 3 1 #" " 0 0 14 3 12 #"row-vector/c" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 15 #"square-matrix/c" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 19 #"flat-named-contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 20 3 1 #"'" 0 0 14 3 13 #"square-matrix" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 6 #"))))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 14 #"column-vector?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"row-vector?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 23 #";;; SIMPLE CONSTRUCTORS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 11 #"make-matrix" 0 0 22 3 2 #" [" 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #"]])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 42 #"; Make m x n - matrix. Elements are all v." 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-vector" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"v" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" [" 0 0 14 3 7 #"matrix:" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 2 #" (" 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 13 #") () #:rest (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 2 #") " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 7 #"matrix:" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->i" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 23 #" #:rest [" 0 0 14 3 2 #"xs" 0 0 22 3 2 #" (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 17 #")] " 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" #:pre/name (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 19 3 1 #"\"" 0 0 19 3 6 #"Matrix" 0 0 19 3 1 #" " 0 0 19 3 4 #"size" 0 0 19 3 1 #" " 0 0 19 3 3 #"and" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #" " 0 0 19 3 2 #"of" 0 0 19 3 1 #" " 0 0 19 3 8 #"elements" 0 0 19 3 1 #" " 0 0 19 3 2 #"do" 0 0 19 3 1 #" " 0 0 19 3 3 #"not" 0 0 19 3 7 #" match." 0 0 19 3 1 #"\"" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 1 #"=" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" [" 0 0 14 3 6 #"result" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 25 #" #:post () " 0 0 20 3 2 #"#t" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 2 #" (" 0 0 14 3 10 #"rename-out" 0 0 22 3 2 #" [" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 14 3 6 #"matrix" 0 0 22 3 3 #"]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 12 #"list->vector" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 3 #") (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 7 #") (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 12 #"build-matrix" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 17 3 16 #"; TODO: contract" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"build-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"build-matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"+" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 10 #";;; SETTER" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 2 #" [" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 5 #"any/c" 0 0 22 3 3 #"]])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 46 #"; set the element of M in position (i,j) to x." 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"vector-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 14 3 1 #"x" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 6 #"vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")]) " 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 15 3 9 #"for*/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 4 #"]) (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")) " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 15 3 9 #"for*/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 4 #"]) (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")) " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 18 #";;; COMPREHENSIONS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 17 #"(for/matrix m n (" 0 0 17 3 6 #"clause" 0 0 17 3 1 #" " 0 0 17 3 3 #"..." 0 0 17 3 15 #") . defs+exprs)" 0 0 22 29 1 #"\n" 0 0 17 3 63 #"; Return an m x n matrix with elements from the last expr." 0 0 22 29 1 #"\n" 0 0 17 3 55 #"; The first n values produced becomes the first row." 0 0 22 29 1 #"\n" 0 0 17 3 56 #"; The next n values becomes the second row and so on." 0 0 22 29 1 #"\n" 0 0 17 3 45 #"; The bindings in clauses run in parallel." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 15 3 10 #"for/vector" 0 0 22 3 11 #" #:length (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 7 #"))))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #"]) " 0 0 14 3 1 #"i" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 5 #")]) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 1 #" " 0 0 20 3 2 #"14" 0 0 22 3 1 #" " 0 0 20 3 2 #"16" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; (for*/matrix m n (" 0 0 17 3 6 #"clause" 0 0 17 3 1 #" " 0 0 17 3 18 #"...) . defs+exprs)" 0 0 22 29 1 #"\n" 0 0 17 3 63 #"; Return an m x n matrix with elements from the last expr." 0 0 22 29 1 #"\n" 0 0 17 3 55 #"; The first n values produced becomes the first row." 0 0 22 29 1 #"\n" 0 0 17 3 56 #"; The next n values becomes the second row and so on." 0 0 22 29 1 #"\n" 0 0 17 3 40 #"; The bindings in clauses run nested." 0 0 22 29 1 #"\n" 0 0 17 3 29 #"; (for*/matrix m n #:column (" 0 0 17 3 6 #"clause" 0 0 17 3 19 #" ...) . defs+exprs)" 0 0 22 29 1 #"\n" 0 0 17 3 63 #"; Return an m x n matrix with elements from the last expr." 0 0 22 29 1 #"\n" 0 0 17 3 58 #"; The first m values produced becomes the first column." 0 0 22 29 1 #"\n" 0 0 17 3 59 #"; The next m values becomes the second column and so on." 0 0 22 29 1 #"\n" 0 0 17 3 40 #"; The bindings in clauses run nested." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 11 #" #:column (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 2 #"] " 0 0 22 29 1 #"\n" 0 0 22 3 15 #" [" 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" [" 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-vector" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" [" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" [" 0 0 14 3 1 #"w" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/vector" 0 0 22 3 11 #" #:length (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 4 #"for*" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 4 #")] [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 11 #"vector-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 25 #" (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #") " 0 0 14 3 1 #"i" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 6 #"m-expr" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 6 #"n-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/vector" 0 0 22 3 11 #" #:length (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 7 #"))))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #"]) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 12 #" #:column ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #"]) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 12 #" #:column ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #"]) " 0 0 14 3 1 #"i" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; (for/matrix-sum " 0 0 17 3 1 #"(" 0 0 17 3 6 #"clause" 0 0 17 3 1 #" " 0 0 17 3 3 #"..." 0 0 17 3 15 #") . defs+exprs)" 0 0 22 29 1 #"\n" 0 0 17 3 69 ( #"; Return the matrix sum of all matrices produced by the last expr" #"." ) 0 0 22 29 1 #"\n" 0 0 17 3 42 #"; The bindings in clauses are parallel." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 5 #"foldl" 0 0 22 3 1 #" " 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #") (" 0 0 14 3 4 #"rest" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 7 #"))))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #")]) (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #"]) " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")]) " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"]) " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; (for*/matrix-sum " 0 0 17 3 1 #"(" 0 0 17 3 6 #"clause" 0 0 17 3 1 #" " 0 0 17 3 18 #"...) . defs+exprs)" 0 0 22 29 1 #"\n" 0 0 17 3 69 ( #"; Return the matrix sum of all matrices produced by the last expr" #"." ) 0 0 22 29 1 #"\n" 0 0 17 3 43 #"; The bindings in clauses are in nested." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 13 #"define-syntax" 0 0 22 3 2 #" (" 0 0 14 3 15 #"for*/matrix-sum" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"_" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 10 #"syntax/loc" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 15 3 9 #"for*/list" 0 0 22 3 2 #" (" 0 0 14 3 6 #"clause" 0 0 22 3 1 #" " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 15 3 10 #"defs+exprs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 5 #"foldl" 0 0 22 3 1 #" " 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #") (" 0 0 14 3 4 #"rest" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 7 #"))))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")]) " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 15 #"for*/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #"]) " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 1 #" " 0 0 20 3 2 #"16" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 13 #";;; SEQUENCES" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 13 #"(in-matrix M)" 0 0 22 29 1 #"\n" 0 0 17 3 50 #"; Returns a sequence that of all elements of M." 0 0 22 29 1 #"\n" 0 0 17 3 47 #"; First the elements row 0, then row 1, etc." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 9 #"in-vector" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #"))]) " 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 14 #"; (in-row M i]" 0 0 22 29 1 #"\n" 0 0 17 3 50 #"; Returns a sequence of all elements of row i," 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; that is xi0, xi1, xi2, ..." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 22 #"define-sequence-syntax" 0 0 22 3 1 #" " 0 0 14 3 6 #"in-row" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 4 #" () " 0 0 20 3 2 #"#'" 0 0 14 3 11 #"in-row/proc" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [[(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"r-expr" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 2 #"#'" 0 0 22 3 2 #"((" 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #":do-in" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"r-expr" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 5 #"begin" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 8 #"integer?" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 3 #"row" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [(" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 5 #")]))]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [[(" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"r-expr" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 2 #"#'" 0 0 22 3 2 #"((" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #":do-in" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"r-expr" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 5 #"begin" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 8 #"integer?" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 3 #"row" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" [(" 0 0 14 3 1 #"i" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [(" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 8 #")]))])))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 4 #")]) " 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 14 #"; (in-col M j]" 0 0 22 29 1 #"\n" 0 0 17 3 53 #"; Returns a sequence of all elements of column j," 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; that is x0j, x1j, x2j, ..." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 22 #"define-sequence-syntax" 0 0 22 3 1 #" " 0 0 14 3 6 #"in-col" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 4 #" () " 0 0 20 3 2 #"#'" 0 0 14 3 11 #"in-col/proc" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 3 #"stx" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 11 #"syntax-case" 0 0 22 3 1 #" " 0 0 14 3 3 #"stx" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [[(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"s-expr" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 2 #"#'" 0 0 22 3 2 #"((" 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #":do-in" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"s-expr" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 5 #"begin" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 8 #"integer?" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 3 #"col" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"s" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [(" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 5 #")]))]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [[(" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 1 #"_" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 1 #" " 0 0 14 3 6 #"s-expr" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 2 #"#'" 0 0 22 3 2 #"((" 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #":do-in" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"M-expr" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 6 #"s-expr" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-m" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 5 #"begin" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 8 #"integer?" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 16 #"raise-type-error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 3 #"col" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 3 #"got" 0 0 19 3 3 #" ~a" 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" ([(" 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #") " 0 0 14 3 1 #"s" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" [(" 0 0 14 3 1 #"i" 0 0 22 3 2 #") " 0 0 14 3 1 #"j" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 20 3 5 #"#true" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [(" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 8 #")]))])))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 4 #")]) " 0 0 14 3 1 #"x" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 16 #";;; CONSTRUCTORS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 9 #"submatrix" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 1 #" " 0 0 14 3 6 #"size/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 13 #"; (submatrix " 0 0 17 3 1 #"M" 0 0 17 3 1 #" " 0 0 17 3 1 #"i" 0 0 17 3 2 #" j" 0 0 17 3 5 #" m n)" 0 0 22 29 1 #"\n" 0 0 17 3 62 #"; Return the submatrix of M with upper left corner in (i,j)" 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; with m rows and n columns." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"k" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" [" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 3 #" ((" 0 0 14 3 6 #"size/c" 0 0 22 3 3 #") (" 0 0 14 3 6 #"size/c" 0 0 22 3 2 #") " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 3 #"->*" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 21 #"; (matrix-identity m)" 0 0 22 29 1 #"\n" 0 0 17 3 37 #"; Return the m x m identity matrix" 0 0 22 29 1 #"\n" 0 0 17 3 21 #"; (matrix-identity m)" 0 0 22 29 1 #"\n" 0 0 17 3 13 #"; Return m" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 1 #" " 0 0 17 3 1 #"n" 0 0 17 3 1 #" " 0 0 17 3 6 #"matrix" 0 0 17 3 1 #" " 0 0 17 3 4 #"with" 0 0 17 3 1 #" " 0 0 17 3 4 #"ones" 0 0 17 3 1 #" " 0 0 17 3 2 #"on" 0 0 17 3 34 #" the diagonal and zeros elsewhere." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #" [" 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 5 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 17 3 33 #"; TODO: check same number of rows" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 14 #"matrix-augment" 0 0 17 3 5 #" M N)" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; Return [M N]." 0 0 22 29 1 #"\n" 0 0 17 3 53 #"; Given M and N must have the same number of rows." 0 0 22 29 1 #"\n" 0 0 17 3 54 #"; If the sizes of M and N are mxs and mxt then the " 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; result has size m x (s+t)." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 4 #") ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 24 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 15 #"matrix-augment*" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 2 #" (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #") " 0 0 14 3 8 #"matrix/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; (matrix-augment* ms)" 0 0 22 29 1 #"\n" 0 0 17 3 41 #"; Augment the matrices in the list ms." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-augment*" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 30 #"; TODO: improve efficieny here" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 5 #"foldl" 0 0 22 3 1 #" " 0 0 14 3 14 #"matrix-augment" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #") (" 0 0 14 3 4 #"rest" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-augment*" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 17 #"; (matrix-copy M)" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; Return copy of M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-copy" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 14 #";;; PREDICATES" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 8 #"boolean?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 25 #"; (matrix-same-size? M N)" 0 0 22 29 1 #"\n" 0 0 17 3 68 #"; Check that M and N have the same number of rows and columns. " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 3 #"and" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 19 #";;; UNARY OPERATORS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; (matrix-transpose M)" 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; Return the transpose of M." 0 0 22 29 1 #"\n" 0 0 17 3 42 #"; (ref (transpose M) i j) = (ref M j i)" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 12 #" #:column ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 4 #")]) " 0 0 14 3 1 #"x" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 16 #"matrix-conjugate" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; (matrix-conjugate M)" 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; Return the conjugate of M." 0 0 22 29 1 #"\n" 0 0 17 3 54 #"; (ref (conjugate M) i j) = (conjugate (ref M j i))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-conjugate" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 5 #")]) (" 0 0 14 3 9 #"conjugate" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-conjugate" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 3 #"3+i" 0 0 22 3 1 #" " 0 0 20 3 3 #"4-i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 3 #"3-i" 0 0 22 3 1 #" " 0 0 20 3 3 #"4+i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 26 #"matrix-hermitian-transpose" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; (matrix-hermitian-transpose M)" 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; Return the transpose of M." 0 0 22 29 1 #"\n" 0 0 17 3 54 #"; (ref (transpose M) i j) = (conjugate (ref M j i))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 26 #"matrix-hermitian-transpose" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 12 #" #:column ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 5 #")]) (" 0 0 14 3 9 #"conjugate" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 26 #"matrix-hermitian-transpose" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"1+i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 3 #"3-i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"3+i" 0 0 22 3 1 #" " 0 0 20 3 3 #"1-i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 26 #"matrix-hermitian-transpose" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"1+i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 3 #"3-i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-conjugate" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"1+i" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 3 #"3-i" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 14 #";;; OPERATIONS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; (matrix-scale s M)" 0 0 22 29 1 #"\n" 0 0 17 3 15 #"; Return sM." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 1 #"(" 0 0 17 3 10 #"matrix-add" 0 0 17 3 5 #" M N)" 0 0 22 29 1 #"\n" 0 0 17 3 16 #"; Return M+N." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-add" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 4 #")] [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 16 #"(matrix-sub M N)" 0 0 22 29 1 #"\n" 0 0 17 3 16 #"; Return M-N." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 4 #")] [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 13 #"matrix-linear" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 2 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 25 #"; (matrix-linear a M b N)" 0 0 22 29 1 #"\n" 0 0 17 3 41 #"; Return the linear combination aM+bN." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-linear" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-same-size?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-linear" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #") " 0 0 20 3 2 #"-3" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")) " 0 0 22 29 1 #"\n" 0 0 22 3 20 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 2 #"-3" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; (matrix-mul M N)" 0 0 22 29 1 #"\n" 0 0 17 3 16 #"; Return M*N." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"N" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 2 #"19" 0 0 22 3 1 #" " 0 0 20 3 2 #"22" 0 0 22 3 1 #" " 0 0 20 3 2 #"43" 0 0 22 3 1 #" " 0 0 20 3 2 #"50" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 29 #";;; ELEMENTARY ROW OPERATIONS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 17 #"matrix-swap-rows!" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 5 #"void?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 1 #"(" 0 0 17 3 17 #"matrix-swap-rows!" 0 0 17 3 1 #" " 0 0 17 3 1 #"M" 0 0 17 3 5 #" r s)" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; Swap the rows r and s in M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-swap-rows!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"for" 0 0 22 3 4 #" ([(" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 17 #"matrix-swap-rows!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 5 #"void?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 1 #"(" 0 0 17 3 17 #"matrix-scale-row!" 0 0 17 3 1 #" " 0 0 17 3 1 #"M" 0 0 17 3 5 #" r a)" 0 0 22 29 1 #"\n" 0 0 17 3 43 #"; Multiply all elements in row r with a." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"for" 0 0 22 3 4 #" ([(" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 1 #" " 0 0 14 3 5 #"void?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 22 #"matrix-add-scaled-row!" 0 0 17 3 1 #" " 0 0 17 3 1 #"M" 0 0 17 3 1 #" " 0 0 17 3 1 #"r" 0 0 17 3 5 #" a s)" 0 0 22 29 1 #"\n" 0 0 17 3 34 #"; row t becomes row_r + a*row_s" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"for" 0 0 22 3 4 #" ([(" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 3 #") (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 1 #"y" 0 0 22 3 6 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 14 #";;; INVARIANTS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 12 #"matrix-trace" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 15 #"square-matrix/c" 0 0 22 3 2 #" " 0 0 14 3 4 #"elm?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-trace" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 4 #"]) (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-trace" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 23 #";;; VECTOR CONSTRUCTORS" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"row-vector" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 12 #" () #:rest (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 7 #"number?" 0 0 22 3 2 #") " 0 0 14 3 12 #"row-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 1 #"(" 0 0 17 3 16 #"row-vector . xs)" 0 0 22 29 1 #"\n" 0 0 17 3 59 #"; Return row vector (1xn matrix) with elements from xs." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 3 #") (" 0 0 14 3 12 #"list->vector" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 13 #"column-vector" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 12 #" () #:rest (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #") " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; (column-vector . xs)" 0 0 22 29 1 #"\n" 0 0 17 3 62 #"; Return column vector (mx1 matrix) with elements from xs." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 26 3 1 #"." 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 2 #" (" 0 0 14 3 12 #"list->vector" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 13 #"matrix-column" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 2 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 21 #"; (matrix-column M j)" 0 0 22 29 1 #"\n" 0 0 17 3 60 #"; Return column vector with elements from column j in M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #")]) " 0 0 14 3 1 #"x" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"matrix-row" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 2 #" " 0 0 14 3 12 #"row-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; (matrix-row M i)" 0 0 22 29 1 #"\n" 0 0 17 3 54 #"; Return row vector with elements from row i in M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 4 #")]) " 0 0 14 3 1 #"x" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 40 #";;; GAUSS ELIMINATION / ROW ECHELON FORM" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #") (" 0 0 14 3 8 #"boolean?" 0 0 22 3 2 #") " 0 0 14 3 5 #"nat/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 23 #"matrix-gauss-eliminate!" 0 0 17 3 1 #" " 0 0 17 3 1 #"M" 0 0 17 3 25 #" [unitize-pivot-row? #f])" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; Transform M to row echelon form." 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; If unitize-pivot-row? is true, the pivot" 0 0 22 29 1 #"\n" 0 0 17 3 56 #"; is scaled, s.t. the pivot is 1, before elimination" 0 0 22 29 1 #"\n" 0 0 17 3 34 #"; of elements below the pivot." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" [" 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 3 #"] [" 0 0 14 3 17 #"partial-pivoting?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #") " 0 0 17 3 26 #"; count rows without pivot" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 3 #"())" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 5 #"alias" 0 0 22 3 1 #" " 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 10 #"matrix-ref" 0 0 22 3 3 #") " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 17 3 15 #"; i from 0 to m" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 2 #"or" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 26 #"; find row to become pivot" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 17 #"partial-pivoting?" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" " 0 0 17 3 42 #"; find element with maximal absolute value" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 10 #"let-values" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" ([(" 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"_" 0 0 22 3 3 #") (" 0 0 14 3 13 #"for/max+index" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 24 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 4 #")]) " 0 0 22 29 1 #"\n" 0 0 22 3 23 #" (" 0 0 14 3 3 #"abs" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))) " 0 0 14 3 1 #"p" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" " 0 0 17 3 33 #"; find non-zero element in column" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 9 #"for/first" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))) " 0 0 14 3 1 #"l" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 4 #"cond" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [(" 0 0 14 3 3 #"not" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 16 #"; no pivot found" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 4 #"else" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 20 #"; swap if neccessary" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 17 #"matrix-swap-rows!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 29 #"; now we now (i,j) is a pivot" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 4 #"when" 0 0 22 3 1 #" " 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 17 3 21 #"; maybe unitize pivot" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 5 #"pivot" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 5 #"pivot" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 5 #"pivot" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 17 3 29 #"; remove elements below pivot" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_lj" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_lj" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 18 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_lj" 0 0 22 3 1 #" " 0 0 14 3 5 #"pivot" 0 0 22 3 3 #")) " 0 0 14 3 1 #"i" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 6 #"))])))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 4 #"rank" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 50 #"; TODO: Use QR or SVD instead for inexact matrices" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 94 ( #"; See answer: http://scicomp.stackexchange.com/questions/1861/unders" #"tanding-how-numpy-does-svd" ) 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 59 #"; rank = dimension of column space = dimension of row space" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 2 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 7 #"nullity" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 35 #"; nullity = dimension of null space" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 2 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"column+null-space" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"M1" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 2 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 10 #"null-space" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 7 #"in-list" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 26 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 12 #"column-space" 0 0 22 3 2 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 44 #" #:when (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 6 #"member" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 18 #"cols-without-pivot" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 28 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 12 #"column-space" 0 0 22 3 1 #" " 0 0 14 3 10 #"null-space" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 20 3 1 #"'" 0 0 14 3 3 #"foo" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 17 #"column+null-space" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"-8" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" " 0 0 22 29 1 #"\n" 0 0 22 3 4 #" " 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"-8" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 16 #"row-echelon-form" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #") (" 0 0 14 3 8 #"boolean?" 0 0 22 3 2 #") " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; (row-echelon-form " 0 0 17 3 26 #"M [unitize-pivot-row? #f])" 0 0 22 29 1 #"\n" 0 0 17 3 39 #"; Return the row-echelon form of M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"row-echelon-form" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" [" 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #" " 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #") (" 0 0 14 3 8 #"boolean?" 0 0 22 3 2 #") " 0 0 14 3 5 #"nat/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 60 #"; (matrix-gauss-jordan-eliminate! M [unitize-pivot-row? #f])" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; TODO: i) Pick maximal pivot. " 0 0 22 29 1 #"\n" 0 0 17 3 34 #"; ii) Use scalars from rows." 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; Transform M to reduced row echelon form." 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; If unitize-pivot-row? is true, the pivot" 0 0 22 29 1 #"\n" 0 0 17 3 56 #"; is scaled, s.t. the pivot is 1, before elimination" 0 0 22 29 1 #"\n" 0 0 17 3 34 #"; of elements below the pivot." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" [" 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 3 #"] [" 0 0 14 3 17 #"partial-pivoting?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #") " 0 0 17 3 26 #"; count rows without pivot" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 3 #"())" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 5 #"alias" 0 0 22 3 1 #" " 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 10 #"matrix-ref" 0 0 22 3 3 #") " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 17 3 15 #"; i from 0 to m" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 2 #"or" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 26 #"; find row to become pivot" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 17 #"partial-pivoting?" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" " 0 0 17 3 42 #"; find element with maximal absolute value" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 10 #"let-values" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" ([(" 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"_" 0 0 22 3 3 #") (" 0 0 14 3 13 #"for/max+index" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 24 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 4 #")]) " 0 0 22 29 1 #"\n" 0 0 22 3 23 #" (" 0 0 14 3 3 #"abs" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 5 #")))])" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))) " 0 0 14 3 1 #"p" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" " 0 0 17 3 33 #"; find non-zero element in column" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 9 #"for/first" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))) " 0 0 14 3 1 #"l" 0 0 22 3 10 #")))) " 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 4 #"cond" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [(" 0 0 14 3 3 #"not" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 71 ( #"; no pivot found - this implies the matrix is singular (not invertib" #"le)" ) 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 4 #"else" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 20 #"; swap if neccessary" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 17 #"matrix-swap-rows!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" " 0 0 17 3 29 #"; now we now (i,j) is a pivot" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 4 #"when" 0 0 22 3 1 #" " 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 17 3 21 #"; maybe unitize pivot" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 5 #"pivot" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 5 #"pivot" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 5 #"pivot" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 17 3 39 #"; remove elements above and below pivot" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 25 #" #:when (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_lj" 0 0 22 3 2 #" (" 0 0 14 3 3 #"ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_lj" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 18 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"l" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_lj" 0 0 22 3 1 #" " 0 0 14 3 5 #"pivot" 0 0 22 3 3 #")) " 0 0 14 3 1 #"i" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 6 #"))])))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 14 3 13 #"without-pivot" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 24 #"reduced-row-echelon-form" 0 0 22 3 2 #" (" 0 0 14 3 3 #"->*" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #") (" 0 0 14 3 8 #"boolean?" 0 0 22 3 2 #") " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; (row-echelon-form M [unitize-pivot-row? #f])" 0 0 22 29 1 #"\n" 0 0 17 3 47 #"; Return the reduced row-echelon form of M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 24 #"reduced-row-echelon-form" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" [" 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"M1" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 14 3 18 #"unitize-pivot-row?" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 14 3 2 #"M1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 20 #";;; LU Factorization" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; Not all matrices can be LU-factored." 0 0 22 29 1 #"\n" 0 0 17 3 57 #"; If Gauss-elimination can be done without any row swaps," 0 0 22 29 1 #"\n" 0 0 17 3 33 #"; a LU-factorization is possible." 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"require" 0 0 22 3 1 #" " 0 0 14 3 11 #"racket/snip" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 30 #"matrix-gauss-eliminate-for-lu!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 3 #"())" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"let/ec" 0 0 22 3 1 #" " 0 0 14 3 6 #"return" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 30 #"; Gauss: find non-zero element" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 33 #"; LU: this has to be the first" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ii" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 4 #"when" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #"return" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 3 #")) " 0 0 17 3 32 #"; no LU - factorization possible" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 15 #"; unitize pivot" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ii" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 29 #"; remove elements below pivot" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ji" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 18 #" [" 0 0 14 3 4 #"m_ij" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ji" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 4 #"m_ij" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ji" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 4 #"m_ij" 0 0 22 3 2 #") " 0 0 14 3 1 #"i" 0 0 22 3 7 #")))))))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 34 #"; Now M has been transformed to U." 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 3 #"car" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 3 #"cdr" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 30 #"matrix-gauss-eliminate-for-lu!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 3 #"())" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"let/ec" 0 0 22 3 1 #" " 0 0 14 3 6 #"return" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 30 #"; Gauss: find non-zero element" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 17 3 33 #"; LU: this has to be the first" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ii" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 4 #"when" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 6 #"return" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 3 #")) " 0 0 17 3 32 #"; no LU - factorization possible" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 15 #"; unitize pivot" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 14 3 17 #"matrix-scale-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ii" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 29 #"; remove elements below pivot" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"for" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"x_ji" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 18 #" [" 0 0 14 3 4 #"m_ij" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ji" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ii" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 4 #"m_ij" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"x_ji" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 22 #"matrix-add-scaled-row!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 4 #"m_ij" 0 0 22 3 2 #") " 0 0 14 3 1 #"i" 0 0 22 3 7 #")))))))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 34 #"; Now M has been transformed to U." 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 3 #"car" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 4 #"set!" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 2 #" (" 0 0 14 3 3 #"cdr" 0 0 22 3 1 #" " 0 0 14 3 2 #"ms" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 9 #"matrix-LU" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 9 #"matrix-LU" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 2 #" (" 0 0 14 3 30 #"matrix-gauss-eliminate-for-lu!" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 14 3 4 #"list" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 2 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"4" 0 0 22 29 1 #"\n" 0 0 22 3 22 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 29 1 #"\n" 0 0 22 3 22 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 29 1 #"\n" 0 0 22 3 22 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 29 1 #"\n" 0 0 22 3 22 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"L" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 3 #") (" 0 0 14 3 5 #"apply" 0 0 22 3 1 #" " 0 0 14 3 6 #"values" 0 0 22 3 2 #" (" 0 0 14 3 9 #"matrix-LU" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-3" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #" " 0 0 20 3 1 #"3" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #" " 0 0 20 3 2 #"-5" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 2 #"13" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"-13" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"L" 0 0 22 3 1 #" " 0 0 14 3 1 #"U" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 32 #";;; OPERATORS / EQUATION SOLVING" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 2 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; (matrix-inverse M)" 0 0 22 29 1 #"\n" 0 0 17 3 45 #"; Return the inverse of a square matrix M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 6 #"matrix" 0 0 19 3 1 #" " 0 0 19 3 3 #"not" 0 0 19 3 7 #" square" 0 0 19 3 1 #"\"" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"MI" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 2 #"MI" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 1 #" " 0 0 14 3 2 #"MI" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #")]) (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #")]) (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 18 #"(matrix-solve M b)" 0 0 22 29 1 #"\n" 0 0 17 3 47 #"; Return a column-vector x such that Mx = b." 0 0 22 29 1 #"\n" 0 0 17 3 40 #"; If no such vector exists return #f." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"column" 0 0 19 3 1 #" " 0 0 19 3 6 #"vector" 0 0 19 3 2 #" (" 0 0 19 3 4 #"i.e." 0 0 19 3 1 #" " 0 0 19 3 1 #"r" 0 0 19 3 1 #" " 0 0 19 3 1 #"x" 0 0 19 3 1 #" " 0 0 19 3 1 #"1" 0 0 19 3 1 #" " 0 0 19 3 1 #"-" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #")" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 4 #"got:" 0 0 19 3 1 #" " 0 0 19 3 3 #"~a " 0 0 19 3 1 #"\"" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"column" 0 0 19 3 1 #" " 0 0 19 3 6 #"vector" 0 0 19 3 1 #" " 0 0 19 3 4 #"with" 0 0 19 3 1 #" " 0 0 19 3 4 #"same" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #" " 0 0 19 3 2 #"of" 0 0 19 3 1 #" " 0 0 19 3 4 #"rows" 0 0 19 3 1 #" " 0 0 19 3 2 #"as" 0 0 19 3 1 #" " 0 0 19 3 3 #"the" 0 0 19 3 7 #" matrix" 0 0 19 3 1 #"\"" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"Mb" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 2 #"Mb" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 1 #" " 0 0 14 3 2 #"Mb" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #")] [" 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #")) " 0 0 14 3 1 #"b" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-solve-many" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"t" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"column" 0 0 19 3 1 #" " 0 0 19 3 6 #"vector" 0 0 19 3 2 #" (" 0 0 19 3 4 #"i.e." 0 0 19 3 1 #" " 0 0 19 3 1 #"r" 0 0 19 3 1 #" " 0 0 19 3 1 #"x" 0 0 19 3 1 #" " 0 0 19 3 1 #"1" 0 0 19 3 1 #" " 0 0 19 3 1 #"-" 0 0 19 3 1 #" " 0 0 19 3 6 #"matrix" 0 0 19 3 1 #")" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 4 #"got:" 0 0 19 3 1 #" " 0 0 19 3 3 #"~a " 0 0 19 3 1 #"\"" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"unless" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 3 #") (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 6 #"column" 0 0 19 3 1 #" " 0 0 19 3 7 #"vectors" 0 0 19 3 1 #" " 0 0 19 3 4 #"with" 0 0 19 3 1 #" " 0 0 19 3 4 #"same" 0 0 19 3 1 #" " 0 0 19 3 6 #"number" 0 0 19 3 1 #" " 0 0 19 3 2 #"of" 0 0 19 3 1 #" " 0 0 19 3 4 #"rows" 0 0 19 3 1 #" " 0 0 19 3 2 #"as" 0 0 19 3 1 #" " 0 0 19 3 3 #"the" 0 0 19 3 7 #" matrix" 0 0 19 3 1 #"\"" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"MB" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 13 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 10 #") #:column" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" ([" 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" " 0 0 14 3 1 #"x" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 30 #"matrix-gauss-jordan-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 2 #"MB" 0 0 22 3 1 #" " 0 0 20 3 2 #"#t" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"k" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 1 #" " 0 0 14 3 2 #"MB" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"k" 0 0 22 3 2 #") " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"matrix?" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 24 #"; (matrix-determinant M)" 0 0 22 29 1 #"\n" 0 0 17 3 45 #"; Return the inverse of a square matrix M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"a" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"c" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 4 #")))]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"a" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"c" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"e" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"f" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"g" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"h" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" [" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 4 #" " 0 0 14 3 1 #"a" 0 0 22 3 3 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"e" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" (" 0 0 14 3 1 #"*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"g" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" (" 0 0 14 3 1 #"*" 0 0 22 3 4 #" " 0 0 14 3 1 #"c" 0 0 22 3 3 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"e" 0 0 22 3 1 #" " 0 0 14 3 1 #"g" 0 0 22 3 6 #")))))]" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" [" 0 0 14 3 4 #"else" 0 0 22 3 11 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-copy" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 17 3 40 #"; TODO: #f #f turns off partial pivoting" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 23 #"matrix-gauss-eliminate!" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 11 #"for/product" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 6 #")))]))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")) " 0 0 20 3 1 #"3" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 3 #")) " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"-5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 3 #")) " 0 0 20 3 3 #"120" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-determinant" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"-5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 1 #"8" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 3 #"-11" 0 0 22 3 1 #" " 0 0 20 3 2 #"12" 0 0 22 3 1 #" " 0 0 20 3 2 #"13" 0 0 22 3 1 #" " 0 0 20 3 2 #"14" 0 0 22 3 1 #" " 0 0 20 3 2 #"15" 0 0 22 3 1 #" " 0 0 20 3 2 #"16" 0 0 22 3 3 #")) " 0 0 20 3 4 #"5280" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 17 3 12 #";;; VECTORS " 0 0 22 29 1 #"\n" 0 0 17 3 3 #";;;" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 24 #"; TODO: test and provide" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"zero-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 11 #"make-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"unit-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 2 #"de" 0 0 15 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 11 #"matrix-set!" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 17 #"current-tolerance" 0 0 22 3 2 #" (" 0 0 14 3 14 #"make-parameter" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 8 #"vector=?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 2 #" [" 0 0 14 3 9 #"tolerance" 0 0 22 3 2 #" (" 0 0 14 3 17 #"current-tolerance" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 2 #"mv" 0 0 22 3 1 #" " 0 0 14 3 2 #"nv" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 2 #"mw" 0 0 22 3 1 #" " 0 0 14 3 2 #"nw" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 2 #"mv" 0 0 22 3 1 #" " 0 0 14 3 2 #"mw" 0 0 22 3 3 #") (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 2 #"nv" 0 0 22 3 1 #" " 0 0 14 3 2 #"nw" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 9 #"tolerance" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 7 #"for/and" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 2 #"mv" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 2 #"<=" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" " 0 0 14 3 9 #"tolerance" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 15 3 7 #"for/and" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 2 #"mv" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 1 #"=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 6 #"))))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 24 #"; TODO: test and provide" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"zero-vector?" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 15 3 7 #"for/and" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 7 #"row-dot" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 12 #"row-vector/c" 0 0 22 3 1 #" " 0 0 14 3 12 #"row-vector/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 15 #"; (row-dot v w)" 0 0 22 29 1 #"\n" 0 0 17 3 43 #"; dot product of the row vectors v and w" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 7 #"row-dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"row-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"row-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 2 #"11" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"row-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 2 #"25" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 7 #"row-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"column-dot" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; (column-dot v w)" 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; dot product of the column vectors v and w" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 2 #"11" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 2 #"25" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"raw-vector" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 8 #"vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; (raw-vector gv)" 0 0 22 29 1 #"\n" 0 0 17 3 78 ( #"; Return the vector of elements used to represent the general " #"vector gv." ) 0 0 22 29 1 #"\n" 0 0 17 3 53 #"; Note: Mutating the raw vector will affect gv." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"raw-vector" 0 0 22 3 1 #" " 0 0 14 3 2 #"gv" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 7 #"vector?" 0 0 22 3 1 #" " 0 0 14 3 2 #"gv" 0 0 22 3 2 #") " 0 0 14 3 2 #"gv" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 2 #"gv" 0 0 22 3 3 #") (" 0 0 14 3 8 #"matrix-d" 0 0 22 3 1 #" " 0 0 14 3 2 #"gv" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" [" 0 0 14 3 4 #"else" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 20 3 1 #"'" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 19 3 1 #"\"" 0 0 19 3 8 #"expected" 0 0 19 3 1 #" " 0 0 19 3 7 #"general" 0 0 19 3 1 #" " 0 0 19 3 6 #"vector" 0 0 19 3 1 #" " 0 0 19 3 2 #"gv" 0 0 19 3 1 #"," 0 0 19 3 1 #" " 0 0 19 3 4 #"got:" 0 0 19 3 1 #" " 0 0 19 3 3 #"~a\"" 0 0 22 3 1 #" " 0 0 14 3 2 #"gv" 0 0 22 3 4 #")]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 3 #"dot" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 11 #"; (dot v w)" 0 0 22 29 1 #"\n" 0 0 17 3 52 #"; Returns the dot product of the vectors v and w." 0 0 22 29 1 #"\n" 0 0 17 3 71 ( #"; Vectors are normal Racket vectors, column-vectors and row-vecto" #"rs." ) 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 10 #"raw-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 1 #"w" 0 0 22 3 2 #" (" 0 0 14 3 10 #"raw-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 4 #")] [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 5 #")]) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 2 #"18" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 2 #"18" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 1 #" " 0 0 20 3 2 #"18" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 23 #"; (matrix-norm-row M r)" 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; Return the norm of the r'th row vector of M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 3 #") " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 5 #")]) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-row" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 1 #" " 0 0 20 3 2 #"16" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 7 #"index/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 23 #"; (matrix-norm-col M r)" 0 0 22 29 1 #"\n" 0 0 17 3 52 #"; Return the norm of the s'th column vector of M." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 5 #")]) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 20 3 2 #"20" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-norm-col" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 2 #"16" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 11 #"vector-norm" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"; " 0 0 17 3 15 #"(vector-norm v)" 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; Return the norm of the genereal vector v." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"sqrt" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 3 #")) " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 12 #"vector-angle" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 7 #"number?" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 12 #"vector-angle" 0 0 17 3 5 #" v w)" 0 0 22 29 1 #"\n" 0 0 17 3 47 #"; Return the unsigned angle between v and w." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-angle" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"acos" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"*" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-angle" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 4 #") #(" 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 2 #"pi" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-angle" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 4 #") #(" 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")) " 0 0 14 3 2 #"pi" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-angle" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 4 #") #(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 3 #")) " 0 0 14 3 2 #"pi" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-angle" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 3 #")) " 0 0 14 3 2 #"pi" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 12 #"vector-scale" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 7 #"number?" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 15 #"; (vector-scale" 0 0 17 3 5 #" s v)" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; Multiply s on all elements of v." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 7 #"vector?" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 10 #"for/vector" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 5 #")]) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 10 #"for/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 9 #"in-vector" 0 0 22 3 2 #" (" 0 0 14 3 10 #"raw-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 6 #"))]) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 5 #")) #(" 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #")) (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #")) (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 22 #"; (vector-normalize v)" 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; Return unit vector with same direction as v." 0 0 22 29 1 #"\n" 0 0 17 3 58 #"; If v is the zero vector, the zero vector is returned." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"norm" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 4 #"norm" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 14 3 1 #"w" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 1 #" " 0 0 14 3 4 #"norm" 0 0 22 3 2 #") " 0 0 14 3 1 #"w" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #")) #(" 0 0 20 3 3 #"3/5" 0 0 22 3 1 #" " 0 0 20 3 3 #"4/5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")) (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 3 #"3/5" 0 0 22 3 1 #" " 0 0 20 3 3 #"4/5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #")) (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 3 #"3/5" 0 0 22 3 1 #" " 0 0 20 3 3 #"4/5" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 10 #"projection" 0 0 22 3 2 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 2 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; (projection v w)" 0 0 22 29 1 #"\n" 0 0 17 3 51 #"; Return the projection og vector v on vector w." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 3 #"w.w" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 1 #" " 0 0 14 3 3 #"w.w" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #" " 0 0 17 3 38 #"; projection on zero vector undefined." 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 12 #"vector-scale" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 3 #"dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 2 #") " 0 0 14 3 3 #"w.w" 0 0 22 3 2 #") " 0 0 14 3 1 #"w" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 3 #" #(" 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #") #(" 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 5 #")) #(" 0 0 20 3 6 #"128/77" 0 0 22 3 1 #" " 0 0 20 3 6 #"160/77" 0 0 22 3 1 #" " 0 0 20 3 6 #"192/77" 0 0 22 3 3 #")) " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")) " 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 5 #"19/29" 0 0 22 3 2 #" (" 0 0 14 3 10 #"row-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 5 #"19/29" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 3 #" (" 0 0 14 3 4 #"or/c" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 9 #"sequence?" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 30 #"projection-on-orthogonal-basis" 0 0 17 3 6 #" v bs)" 0 0 22 29 1 #"\n" 0 0 17 3 64 #"; Project the basis v on the orthogonal basis vectors in bs." 0 0 22 29 1 #"\n" 0 0 17 3 64 #"; The basis bs must be either the column vectors of a matrix" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; or a sequence of column-vectors." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" [" 0 0 14 3 6 #"v-on-b" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 6 #"v-on-b" 0 0 22 3 1 #" " 0 0 14 3 6 #"v-on-b" 0 0 22 3 2 #" (" 0 0 14 3 11 #"zero-vector" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" " 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 6 #"v-on-b" 0 0 22 3 2 #" (" 0 0 14 3 10 #"projection" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 6 #"v-on-b" 0 0 22 3 1 #" " 0 0 14 3 6 #"v-on-b" 0 0 22 3 2 #" (" 0 0 14 3 11 #"zero-vector" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 7 #")))))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 4 #"-1/3" 0 0 22 3 1 #" " 0 0 20 3 4 #"-1/3" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 4 #"-1/3" 0 0 22 3 1 #" " 0 0 20 3 4 #"-1/3" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 31 #"projection-on-orthonormal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 16 #"general-vector/c" 0 0 22 3 3 #" (" 0 0 14 3 4 #"or/c" 0 0 22 3 1 #" " 0 0 14 3 8 #"matrix/c" 0 0 22 3 1 #" " 0 0 14 3 9 #"sequence?" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 37 #"projection-on-orthonormal-basis v bs)" 0 0 22 29 1 #"\n" 0 0 17 3 65 #"; Project the basis v on the orthonormal basis vectors in bs." 0 0 22 29 1 #"\n" 0 0 17 3 64 #"; The basis bs must be either the column vectors of a matrix" 0 0 22 29 1 #"\n" 0 0 17 3 38 #"; or a sequence of column-vectors." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 31 #"projection-on-orthonormal-basis" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix?" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"matrix-n" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 2 #") " 0 0 14 3 1 #"b" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 14 #"for/matrix-sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 2 #"bs" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 2 #" (" 0 0 14 3 10 #"column-dot" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 2 #") " 0 0 14 3 1 #"b" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 31 #"projection-on-orthonormal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 31 #"projection-on-orthonormal-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 24 #"gram-schmidt-orthonormal" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 18 #"0.7071067811865475" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 18 #"0.7071067811865475" 0 0 22 3 3 #")) " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 23 #"gram-schmidt-orthogonal" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 2 #" (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 2 #") " 0 0 14 3 8 #"matrix/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 30 #"; (gram-schmidt-orthogonal ws)" 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; Given a list ws of column vectors, produce " 0 0 22 29 1 #"\n" 0 0 17 3 8 #"; an" 0 0 17 3 1 #" " 0 0 17 3 10 #"orthogonal" 0 0 17 3 26 #" basis for the span of the" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; vectors in ws." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 23 #"gram-schmidt-orthogonal" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 6 #"empty?" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 2 #") " 0 0 20 3 1 #"'" 0 0 22 3 3 #"()]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [(" 0 0 14 3 6 #"empty?" 0 0 22 3 2 #" (" 0 0 14 3 4 #"rest" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 3 #")) " 0 0 14 3 2 #"ws" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" [" 0 0 14 3 4 #"else" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 7 #"reverse" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 15 3 8 #"for/fold" 0 0 22 3 3 #" ([" 0 0 14 3 2 #"vs" 0 0 22 3 2 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 7 #"))]) ([" 0 0 14 3 1 #"w" 0 0 22 3 2 #" (" 0 0 14 3 4 #"rest" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 51 #"; Note: We project onto vs (not on the original ws)" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 44 #"; in order to get numerical stability." 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 6 #"w-proj" 0 0 22 3 2 #" (" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 2 #"if" 0 0 22 3 1 #" " 0 0 14 3 6 #"w-proj" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 12 #"w-minus-proj" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 6 #"w-proj" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 12 #"zero-vector?" 0 0 22 3 1 #" " 0 0 14 3 12 #"w-minus-proj" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" " 0 0 14 3 2 #"vs" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 6 #"w-proj" 0 0 22 3 2 #") " 0 0 14 3 2 #"vs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" " 0 0 14 3 2 #"vs" 0 0 22 3 7 #"))))]))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 23 #"gram-schmidt-orthogonal" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 4 #"-2/5" 0 0 22 3 1 #" " 0 0 20 3 3 #"6/5" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 24 #"gram-schmidt-orthonormal" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 2 #" (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 2 #") " 0 0 14 3 8 #"matrix/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 31 #"; (gram-schmidt-orthonormal ws)" 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; Given a list ws of column vectors, produce " 0 0 22 29 1 #"\n" 0 0 17 3 46 #"; an orthonormal basis for the span of the" 0 0 22 29 1 #"\n" 0 0 17 3 20 #"; vectors in ws." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 24 #"gram-schmidt-orthonormal" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 3 #"map" 0 0 22 3 1 #" " 0 0 14 3 16 #"vector-normalize" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 23 #"gram-schmidt-orthogonal" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 24 #"gram-schmidt-orthonormal" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 16 #"vector-normalize" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 4 #"-2/5" 0 0 22 3 1 #" " 0 0 20 3 3 #"6/5" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 16 #"provide/contract" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" [" 0 0 14 3 22 #"projection-on-subspace" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 2 #"->" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 2 #" (" 0 0 14 3 6 #"listof" 0 0 22 3 1 #" " 0 0 14 3 15 #"column-vector/c" 0 0 22 3 3 #") " 0 0 14 3 8 #"matrix/c" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 22 #"projection-on-subspace" 0 0 17 3 6 #" v ws)" 0 0 22 29 1 #"\n" 0 0 17 3 57 #"; Returns the projection of v on span{w_i}, w_i in ws." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 22 #"projection-on-subspace" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 30 #"projection-on-orthogonal-basis" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 23 #"gram-schmidt-orthogonal" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 22 #"projection-on-subspace" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #") (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 5 #"19/29" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 20 #"extend-span-to-basis" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 1 #" " 0 0 14 3 1 #"r" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 2 #">=" 0 0 22 3 2 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 14 3 2 #"ws" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ()" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 2 #"ei" 0 0 22 3 2 #" (" 0 0 14 3 11 #"unit-vector" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 2 #"pi" 0 0 22 3 2 #" (" 0 0 14 3 22 #"projection-on-subspace" 0 0 22 3 1 #" " 0 0 14 3 2 #"ei" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 8 #"vector=?" 0 0 22 3 1 #" " 0 0 14 3 2 #"ei" 0 0 22 3 1 #" " 0 0 14 3 2 #"pi" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"w" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 2 #"ei" 0 0 22 3 1 #" " 0 0 14 3 2 #"pi" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 2 #" (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 3 #") (" 0 0 14 3 4 #"cons" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 2 #"ws" 0 0 22 3 3 #") (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 7 #")))))))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 4 #"take" 0 0 22 3 2 #" (" 0 0 14 3 4 #"sort" 0 0 22 3 2 #" (" 0 0 14 3 4 #"loop" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 3 #"() " 0 0 20 3 1 #"0" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"v" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 3 #") (" 0 0 14 3 1 #">" 0 0 22 3 2 #" (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 3 #") (" 0 0 14 3 11 #"vector-norm" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 14 3 1 #"r" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 22 #";;;;;;;;;;;;;;;;; HERE" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 22 #"matrix->column-vectors" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 13 #"matrix-column" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 19 #"matrix->row-vectors" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 10 #"matrix-row" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 29 #"; compute the QR-facorization" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 12 #"; 1) QR = M " 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 36 #"; 2) columns of Q is are orthonormal" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 26 #"; 3) R is upper-triangular" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 22 #"basis-for-column-space" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 24 #"gram-schmidt-orthonormal" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 22 #"matrix->column-vectors" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [" 0 0 14 3 9 #"extension" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 20 #"extend-span-to-basis" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 11 #" " 0 0 14 3 22 #"basis-for-column-space" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 6 #"length" 0 0 22 3 1 #" " 0 0 14 3 22 #"basis-for-column-space" 0 0 22 3 4 #")))]" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [" 0 0 14 3 1 #"Q" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-augment*" 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 14 3 6 #"append" 0 0 22 3 1 #" " 0 0 14 3 22 #"basis-for-column-space" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 22 #" (" 0 0 14 3 3 #"map" 0 0 22 3 1 #" " 0 0 14 3 16 #"vector-normalize" 0 0 22 29 1 #"\n" 0 0 22 3 26 #" " 0 0 14 3 9 #"extension" 0 0 22 3 4 #")))]" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [" 0 0 14 3 1 #"R" 0 0 22 3 2 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 16 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #"] [" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 1 #">" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 18 #" " 0 0 20 3 1 #"0" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" (" 0 0 15 3 7 #"for/sum" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 29 #" [" 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 6 #"in-col" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 21 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 6 #"))))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 10 #"let-values" 0 0 22 3 4 #" ([(" 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 3 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 14 3 4 #"list" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 19 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 18 #"0.7071067811865475" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 18 #"0.7071067811865475" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 25 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 17 #"1.414213562373095" 0 0 22 3 1 #" " 0 0 20 3 17 #"1.414213562373095" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 6 #"))))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 7 #"module+" 0 0 22 3 1 #" " 0 0 14 3 4 #"test" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"A" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 2 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 3 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 1 #" " 0 0 14 3 1 #"A" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"check-equal?" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 4 #"list" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 4 #"list" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 4 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 6 #"#( " 0 0 20 3 3 #"1/2" 0 0 22 3 1 #" " 0 0 20 3 19 #"-0.6708203932499369" 0 0 22 3 4 #" " 0 0 20 3 18 #"0.5477225575051662" 0 0 22 3 2 #" " 0 0 20 3 4 #"-0.0" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 1 #" " 0 0 20 3 20 #"-0.22360679774997896" 0 0 22 3 2 #" " 0 0 20 3 19 #"-0.7302967433402214" 0 0 22 3 3 #" " 0 0 20 3 18 #"0.4082482904638629" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" " 0 0 20 3 19 #"0.22360679774997896" 0 0 22 3 2 #" " 0 0 20 3 20 #"-0.18257418583505536" 0 0 22 3 1 #" " 0 0 20 3 19 #"-0.8164965809277259" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" " 0 0 20 3 3 #"1/2" 0 0 22 3 2 #" " 0 0 20 3 18 #"0.6708203932499369" 0 0 22 3 4 #" " 0 0 20 3 18 #"0.3651483716701107" 0 0 22 3 3 #" " 0 0 20 3 17 #"0.408248290463863" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 1 #" " 0 0 20 3 2 #"11" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"0.0" 0 0 22 3 1 #" " 0 0 20 3 16 #"2.23606797749979" 0 0 22 3 1 #" " 0 0 20 3 16 #"2.23606797749979" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"0.0" 0 0 22 3 1 #" " 0 0 20 3 21 #"4.440892098500626e-16" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 3 #"0.0" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 7 #"improve" 0 0 22 3 1 #" " 0 0 14 3 3 #"Q+R" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"Q" 0 0 22 3 2 #" (" 0 0 14 3 5 #"first" 0 0 22 3 1 #" " 0 0 14 3 3 #"Q+R" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 1 #"R" 0 0 22 3 2 #" (" 0 0 14 3 6 #"second" 0 0 22 3 1 #" " 0 0 14 3 3 #"Q+R" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 15 3 10 #"let-values" 0 0 22 3 4 #" ([(" 0 0 14 3 2 #"Q1" 0 0 22 3 1 #" " 0 0 14 3 2 #"R1" 0 0 22 3 3 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 4 #"))])" 0 0 22 29 1 #"\n" 0 0 22 3 7 #" (" 0 0 14 3 4 #"list" 0 0 22 3 1 #" " 0 0 14 3 2 #"Q1" 0 0 22 3 1 #" " 0 0 14 3 2 #"R1" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 15 #"matrix-diagonal" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-diagonal" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"ys" 0 0 22 3 2 #" (" 0 0 14 3 12 #"list->vector" 0 0 22 3 1 #" " 0 0 14 3 2 #"xs" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 14 3 13 #"vector-length" 0 0 22 3 1 #" " 0 0 14 3 2 #"ys" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"for*/matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" [" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 10 #"vector-ref" 0 0 22 3 1 #" " 0 0 14 3 2 #"ys" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 5 #"test=" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-diagonal" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 1 #"(" 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 18 #"matrix-householder" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 10 #"; v in R^m" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 31 #"; return P = I - v*transpose(v)" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 26 #"matrix-householder-complex" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 10 #"; v in C^m" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 41 #"; return P = I - v*hermitian_transpose(v)" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 2 #" (" 0 0 14 3 26 #"matrix-hermitian-transpose" 0 0 22 3 1 #" " 0 0 14 3 1 #"v" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"solve-quadratic" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"cond" 0 0 22 3 1 #" " 0 0 17 3 2 #"#;" 0 0 22 3 3 #" [(" 0 0 14 3 1 #"<" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 3 #") (" 0 0 14 3 6 #"values" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 1 #" " 0 0 20 3 2 #"#f" 0 0 22 3 3 #")] " 0 0 17 3 26 #"; return complex solutions" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" [(" 0 0 14 3 1 #"=" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 6 #"values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 4 #")))]" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" " 0 0 17 3 2 #"#;" 0 0 22 3 2 #"[(" 0 0 14 3 3 #"and" 0 0 22 3 2 #" (" 0 0 14 3 1 #">" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 3 #"not" 0 0 22 3 2 #" (" 0 0 14 3 5 #"zero?" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 6 #"values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 3 #") (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 20 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 3 #") (" 0 0 14 3 1 #"+" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 5 #"))))]" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" [" 0 0 14 3 4 #"else" 0 0 22 3 4 #" " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 6 #"values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 18 #" (" 0 0 14 3 1 #"/" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 3 #") (" 0 0 14 3 4 #"sqrt" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 6 #")))]))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 20 #"eigen-values-for-2x2" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 59 ( #"; (a-\316\273)(d-\316\273)-cb = ad-a\316" #"\273-d\316\273+\316\273\316\273-cd = \316\273^2-(a+d)\316\273+ad-bc" ) 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 15 #"solve-quadratic" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"+" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 4 #")) (" 0 0 14 3 1 #"-" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"a" 0 0 22 3 1 #" " 0 0 14 3 1 #"d" 0 0 22 3 3 #") (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 14 3 1 #"b" 0 0 22 3 1 #" " 0 0 14 3 1 #"c" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 4 #"step" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 54 #"; page 18 of http://www.mathworks.com/moler/eigs.pdf " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" " 0 0 14 3 1 #"s" 0 0 22 3 6 #" (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #") (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" " 0 0 14 3 2 #"sI" 0 0 22 3 5 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 14 3 1 #"s" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 3 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 2 #"sI" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 10 #"matrix-add" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 2 #") " 0 0 14 3 2 #"sI" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 5 #"step+" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 54 #"; page 18 of http://www.mathworks.com/moler/eigs.pdf " 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 5 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 3 #"\317\2011" 0 0 22 3 1 #" " 0 0 14 3 3 #"\317\2012" 0 0 22 3 3 #") (" 0 0 14 3 20 #"eigen-values-for-2x2" 0 0 22 3 2 #" (" 0 0 14 3 9 #"submatrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #") (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 2 #") " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" " 0 0 14 3 2 #"\317\201" 0 0 22 3 8 #" (" 0 0 14 3 2 #"if" 0 0 22 3 2 #" (" 0 0 14 3 1 #">" 0 0 22 3 2 #" (" 0 0 14 3 9 #"magnitude" 0 0 22 3 1 #" " 0 0 14 3 3 #"\317\2012" 0 0 22 3 3 #") (" 0 0 14 3 9 #"magnitude" 0 0 22 3 1 #" " 0 0 14 3 3 #"\317\2011" 0 0 22 3 3 #")) " 0 0 14 3 3 #"\317\2011" 0 0 22 3 1 #" " 0 0 14 3 3 #"\317\2012" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"def" 0 0 22 3 2 #" " 0 0 14 3 3 #"\317\201I" 0 0 22 3 7 #" (" 0 0 14 3 12 #"matrix-scale" 0 0 22 3 1 #" " 0 0 14 3 2 #"\317\201" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-identity" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 4 #"def*" 0 0 22 3 2 #" (" 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 5 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-sub" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 3 #"\317\201I" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 10 #"matrix-add" 0 0 22 3 4 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 1 #" " 0 0 14 3 1 #"Q" 0 0 22 3 2 #") " 0 0 14 3 3 #"\317\201I" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 11 #";;; DISPLAY" 0 0 22 29 1 #"\n" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"require" 0 0 22 3 1 #" " 0 0 14 3 14 #"slideshow/pict" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"add-brackets" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"h" 0 0 22 3 2 #" (" 0 0 14 3 11 #"pict-height" 0 0 22 3 1 #" " 0 0 14 3 1 #"p" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 9 #"hc-append" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 17 3 14 #"; left bracket" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 9 #"vl-append" 0 0 22 3 2 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 5 #"blank" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 17 3 10 #"; contents" 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 14 3 1 #"p" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 5 #" " 0 0 17 3 15 #"; right bracket" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 9 #"vl-append" 0 0 22 3 2 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 2 #") " 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 5 #"blank" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 2 #" (" 0 0 14 3 1 #"-" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 2 #" (" 0 0 14 3 1 #"*" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 17 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 14 3 2 #"bw" 0 0 22 3 1 #" " 0 0 14 3 2 #"bh" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 16 #"filled-rectangle" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 14 3 1 #"h" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"build-array-pict" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 5 #"apply" 0 0 22 3 1 #" " 0 0 14 3 9 #"hc-append" 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 14 3 11 #"add-between" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 14 3 5 #"apply" 0 0 22 3 1 #" " 0 0 14 3 9 #"vr-append" 0 0 22 3 19 #" " 0 0 22 29 1 #"\n" 0 0 22 3 20 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 2 #" (" 0 0 14 3 8 #"in-range" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 22 #" (" 0 0 15 3 3 #"let" 0 0 22 3 3 #" ([" 0 0 14 3 4 #"f_ij" 0 0 22 3 2 #" (" 0 0 14 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 24 #" (" 0 0 15 3 4 #"cond" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" [(" 0 0 14 3 7 #"number?" 0 0 22 3 1 #" " 0 0 14 3 4 #"f_ij" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" (" 0 0 14 3 4 #"text" 0 0 22 3 2 #" (" 0 0 14 3 14 #"number->string" 0 0 22 3 1 #" " 0 0 14 3 4 #"f_ij" 0 0 22 3 3 #"))]" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" [(" 0 0 14 3 5 #"pict?" 0 0 22 3 1 #" " 0 0 14 3 4 #"f_ij" 0 0 22 3 2 #") " 0 0 14 3 4 #"f_ij" 0 0 22 3 1 #"]" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" [(" 0 0 14 3 7 #"string?" 0 0 22 3 1 #" " 0 0 14 3 4 #"f_ij" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 27 #" (" 0 0 14 3 4 #"text" 0 0 22 3 1 #" " 0 0 14 3 4 #"f_ij" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 26 #" [" 0 0 14 3 4 #"else" 0 0 22 3 2 #" (" 0 0 14 3 5 #"error" 0 0 22 3 7 #")])))))" 0 0 22 29 1 #"\n" 0 0 22 3 11 #" (" 0 0 14 3 5 #"blank" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 17 #"build-matrix-pict" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"add-brackets" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 16 #"build-array-pict" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix->pict" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"add-brackets" 0 0 22 29 1 #"\n" 0 0 22 3 4 #" (" 0 0 14 3 16 #"build-array-pict" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 4 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #") (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 5 #")))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix->snip" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 11 #"make-object" 0 0 22 3 1 #" " 0 0 14 3 11 #"image-snip%" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 5 #" (" 0 0 14 3 12 #"pict->bitmap" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 5 #"scale" 0 0 22 3 2 #" (" 0 0 14 3 12 #"matrix->pict" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 20 3 1 #"2" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 7 #";;; TeX" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 16 #"build-tex-matrix" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 16 #"build-tex-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 14 3 1 #"f" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 2 #"cs" 0 0 22 3 2 #" (" 0 0 14 3 11 #"make-string" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 1 #" " 0 0 20 3 3 #"#\\c" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 4 #"rows" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 8 #" (" 0 0 14 3 14 #"string-append*" 0 0 22 29 1 #"\n" 0 0 22 3 9 #" (" 0 0 14 3 11 #"add-between" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 10 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 12 #" (" 0 0 14 3 14 #"string-append*" 0 0 22 29 1 #"\n" 0 0 22 3 13 #" (" 0 0 14 3 11 #"add-between" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 14 #" (" 0 0 15 3 8 #"for/list" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"j" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #"])" 0 0 22 29 1 #"\n" 0 0 22 3 16 #" (" 0 0 14 3 6 #"format" 0 0 22 3 1 #" " 0 0 19 3 3 #"\"~a" 0 0 19 3 1 #"\"" 0 0 22 3 2 #" (" 0 0 14 3 1 #"f" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))) " 0 0 19 3 3 #"\"&\"" 0 0 22 3 4 #"))) " 0 0 19 3 6 #"\"\\\\\\\\\"" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 6 #" (" 0 0 14 3 6 #"format" 0 0 22 3 1 #" " 0 0 22 29 1 #"\n" 0 0 22 3 6 #" " 0 0 19 3 52 #"\"\\\\left( \\\\begin{array}{~a}~a \\\\end{array} \\\\right)\"" 0 0 22 3 1 #" " 0 0 14 3 2 #"cs" 0 0 22 3 1 #" " 0 0 14 3 4 #"rows" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"provide" 0 0 22 3 1 #" " 0 0 14 3 10 #"tex-matrix" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 10 #"tex-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 3 #") (" 0 0 14 3 11 #"matrix-size" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 16 #"build-tex-matrix" 0 0 22 3 1 #" " 0 0 14 3 1 #"m" 0 0 22 3 1 #" " 0 0 14 3 1 #"n" 0 0 22 3 2 #" (" 0 0 15 3 2 #"\316\273" 0 0 22 3 2 #" (" 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 3 #") (" 0 0 14 3 10 #"matrix-ref" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 1 #" " 0 0 14 3 1 #"i" 0 0 22 3 1 #" " 0 0 14 3 1 #"j" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 7 #"require" 0 0 22 3 1 #" " 0 0 14 3 8 #"rackunit" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 6 #"define" 0 0 17 3 37 #" b (column-vector 6.5 8.5 11.0 12.5))" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 6 #"define" 0 0 17 3 1 #" " 0 0 17 3 1 #"A" 0 0 17 3 2 #" (" 0 0 17 3 4 #"list" 0 0 17 3 15 #" (column-vector" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 1 #" " 0 0 17 3 28 #"1) (column-vector 2 4 5 6)))" 0 0 22 29 1 #"\n" 0 0 17 3 30 #"; (projection-on-subspace b A)" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 14 3 12 #"check-equal?" 0 0 22 3 2 #" (" 0 0 14 3 17 #"matrix-solve-many" 0 0 22 3 2 #" (" 0 0 14 3 7 #"matrix:" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 2 #"-3" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 34 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 3 #"-10" 0 0 22 3 1 #" " 0 0 20 3 2 #"-4" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 3 #"-11" 0 0 22 3 3 #") (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 2 #"-8" 0 0 22 3 1 #" " 0 0 20 3 2 #"-2" 0 0 22 3 1 #" " 0 0 20 3 1 #"9" 0 0 22 3 1 #" " 0 0 20 3 3 #"-15" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 4 #"list" 0 0 22 3 2 #" (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 4 #")) (" 0 0 14 3 6 #"matrix" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 22 3 2 #"#(" 0 0 20 3 1 #"0" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 2 #"-1" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 4 #"))))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 15 #"vector-in-span?" 0 0 22 3 1 #" " 0 0 14 3 1 #"w" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 12 #"matrix-solve" 0 0 22 3 2 #" (" 0 0 14 3 15 #"matrix-augment*" 0 0 22 3 1 #" " 0 0 14 3 2 #"vs" 0 0 22 3 2 #") " 0 0 14 3 1 #"w" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; TODO: Start here." 0 0 22 29 1 #"\n" 0 0 17 3 66 #"; Make the row reducer signal back when no pivot is present." 0 0 22 29 1 #"\n" 0 0 17 3 65 #"; At that moment, the non-existance of a solution is known." 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #">" 0 0 17 3 39 #" (vector-in-span? (column-vector 7 6 1)" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 46 #" (list (column-vector 1 2 3)" 0 0 22 29 1 #"\n" 0 0 17 3 49 #"; (column-vector -2 -5 2)" 0 0 22 29 1 #"\n" 0 0 17 3 50 #"; (column-vector 1 2 -2)))" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #"(" 0 0 17 3 6 #"matrix" 0 0 17 3 8 #" 3 1 '#(" 0 6 10 17 5 #"31/5\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 1 #" " 0 0 17 3 1 #"8" 0 0 17 3 1 #" " 0 6 10 17 5 #"84/5\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #">" 0 0 17 3 2 #" (" 0 0 17 3 10 #"matrix-mul" 0 0 17 3 2 #" (" 0 0 17 3 15 #"matrix-augment*" 0 0 17 3 2 #" (" 0 0 17 3 4 #"list" 0 0 17 3 2 #" (" 0 0 17 3 13 #"column-vector" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 5 #" 2 3)" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 38 #" (" 0 0 17 3 13 #"column-vector" 0 0 17 3 1 #" " 0 0 17 3 2 #"-2" 0 0 17 3 6 #" -5 2)" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 38 #" (" 0 0 17 3 13 #"column-vector" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 8 #" 2 -2)))" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 15 #" (" 0 0 17 3 13 #"column-vector" 0 0 17 3 1 #" " 0 6 10 17 5 #"31/5\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 1 #" " 0 0 17 3 1 #"8" 0 0 17 3 1 #" " 0 6 10 17 5 #"84/5\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #"(" 0 0 17 3 6 #"matrix" 0 0 17 3 1 #" " 0 0 17 3 1 #"3" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 1 #" " 0 0 17 3 1 #"'" 0 0 17 3 2 #"#(" 0 0 17 3 1 #"7" 0 0 17 3 6 #" 6 1))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #"(" 0 0 17 3 6 #"define" 0 0 17 3 15 #" (is-basis? vs)" 0 0 22 29 1 #"\n" 0 0 17 3 6 #"; (" 0 0 17 3 5 #"check" 0 0 17 3 1 #" " 0 0 17 3 4 #"that" 0 0 17 3 1 #" " 0 0 17 3 2 #"vs" 0 0 17 3 1 #" " 0 0 17 3 3 #"are" 0 0 17 3 1 #" " 0 0 17 3 1 #"a" 0 0 17 3 1 #" " 0 0 17 3 18 #"basis)) p. 122-123" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 1 #";" 0 0 17 3 1 #"(" 0 0 17 3 6 #"define" 0 0 17 3 26 #" (reduce-span-to-basis vs)" 0 0 22 29 1 #"\n" 0 0 17 3 18 #"; ...) ; p. 138" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 2 #"#;" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 11 #"matrix-rank" 0 0 22 3 1 #" " 0 0 14 3 1 #"M" 0 0 22 3 2 #") " 0 0 14 3 3 #"..." 0 0 22 3 2 #") " 0 0 17 3 8 #"; p. 148" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 20 #"expand-span-to-basis" 0 0 17 3 1 #" " 0 0 17 3 17 #"vs) ...) ; p. 145" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 29 #"coordinated-relative-to-basis" 0 0 17 3 1 #" " 0 0 17 3 1 #"v" 0 0 17 3 1 #" " 0 0 17 3 17 #"bs) ...) ; p. 153" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 22 #"change-of-basis-matrix" 0 0 17 3 1 #" " 0 0 17 3 2 #"bs" 0 0 17 3 1 #" " 0 0 17 3 17 #"cs) ...) ; p. 157" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 2 #" (" 0 0 17 3 11 #"determinant" 0 0 17 3 1 #" " 0 0 17 3 13 #"M) ...) ; p ?" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 13 #";;; Run tests" 0 0 22 29 1 #"\n" 0 0 17 3 28 #";(require (submod \".\" test))" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 7 #"require" 0 0 17 3 2 #" (" 0 0 17 3 17 #"submod \".\" test))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 91 ( #"; Problem from: http://en.wikipedia.org/wiki/Linear_least_squares_(m" #"athematics)#Computation" ) 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"x" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"2" 0 0 22 3 1 #" " 0 0 20 3 1 #"3" 0 0 22 3 1 #" " 0 0 20 3 1 #"4" 0 0 22 3 5 #")) " 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"6" 0 0 22 3 1 #" " 0 0 20 3 1 #"5" 0 0 22 3 1 #" " 0 0 20 3 1 #"7" 0 0 22 3 1 #" " 0 0 20 3 2 #"10" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 17 3 35 #"; Find b1 and b2 s.t. y = b2 x + b1" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; Put b = (column-vector b1 b2)." 0 0 22 29 1 #"\n" 0 0 17 3 27 #"; We must \"solve\": X b = y." 0 0 22 29 1 #"\n" 0 0 17 3 35 #"; or rather minimize norm(y-X b)^2." 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 4 #"let*" 0 0 22 3 3 #" ([" 0 0 14 3 1 #"X" 0 0 22 3 5 #" (" 0 0 14 3 14 #"matrix-augment" 0 0 22 3 2 #" (" 0 0 14 3 13 #"column-vector" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 1 #" " 0 0 20 3 1 #"1" 0 0 22 3 2 #") " 0 0 14 3 1 #"x" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" [" 0 0 14 3 3 #"X^T" 0 0 22 3 3 #" (" 0 0 14 3 16 #"matrix-transpose" 0 0 22 3 1 #" " 0 0 14 3 1 #"X" 0 0 22 3 2 #")]" 0 0 22 29 1 #"\n" 0 0 22 3 8 #" [" 0 0 14 3 4 #"X^TX" 0 0 22 3 2 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 3 #"X^T" 0 0 22 3 1 #" " 0 0 14 3 1 #"X" 0 0 22 3 3 #")])" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 2 #" (" 0 0 14 3 14 #"matrix-inverse" 0 0 22 3 1 #" " 0 0 14 3 4 #"X^TX" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 15 #" (" 0 0 14 3 10 #"matrix-mul" 0 0 22 3 1 #" " 0 0 14 3 3 #"X^T" 0 0 22 3 1 #" " 0 0 14 3 1 #"y" 0 0 22 3 3 #")))" 0 0 22 29 1 #"\n" 0 0 17 3 9 #"; Result:" 0 0 22 29 1 #"\n" 0 0 17 3 6 #"; (" 0 0 17 3 7 #"matrix " 0 0 17 3 1 #"2" 0 0 17 3 1 #" " 0 0 17 3 1 #"1" 0 0 17 3 1 #" " 0 0 17 3 1 #"'" 0 0 17 3 2 #"#(" 0 6 10 17 4 #"7/2\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 1 #" " 0 6 10 17 4 #"7/5\0" 3 #"#e\0" 6 #"mixed\0" 2 #"1\0" 0 0 17 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 17 3 48 #"; Note: This works, but is numerically unstable." 0 0 22 29 1 #"\n" 0 0 17 3 36 #"; (when using flonums that is)" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 3 1 #"(" 0 0 15 3 6 #"define" 0 0 22 3 2 #" (" 0 0 14 3 21 #"matrix-pseudo-inverse" 0 0 22 3 1 #" " 0 0 14 3 1 #"A" 0 0 22 3 1 #")" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 47 #"; compute the Moore-Penrose pseudo inverse: A+" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 66 #"; http://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_pseudoinverse" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 61 #"; If A is of full column rank, then the QR method can be used" 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 15 3 13 #"define-values" 0 0 22 3 2 #" (" 0 0 14 3 1 #"Q" 0 0 22 3 1 #" " 0 0 14 3 1 #"R" 0 0 22 3 3 #") (" 0 0 14 3 9 #"matrix-QR" 0 0 22 3 1 #" " 0 0 14 3 1 #"A" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 17 #"; now A* A = R* R" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 34 #"; A+ = (A* A)^-1 <=> R* R A+ = A*" 0 0 22 29 1 #"\n" 0 0 22 3 2 #" " 0 0 17 3 70 ( #"; This can be solved by forward substituion and backward substitutio" #"n." ) 0 0 22 29 1 #"\n" 0 0 22 3 3 #" (" 0 0 14 3 5 #"error" 0 0 22 3 1 #" " 0 0 20 3 1 #"'" 0 0 14 3 4 #"todo" 0 0 22 3 2 #"))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 6 #"define" 0 0 17 3 1 #" " 0 0 17 3 1 #"M" 0 0 17 3 2 #" (" 0 0 17 3 7 #"matrix:" 0 0 17 3 1 #" " 0 0 17 3 1 #"2" 0 0 17 3 1 #" " 0 0 17 3 1 #"3" 0 0 17 3 2 #" " 0 0 17 3 3 #".01" 0 0 17 3 1 #" " 0 0 17 3 5 #"100.0" 0 0 17 3 1 #" " 0 0 17 3 5 #"100.0" 0 0 17 3 2 #" " 0 0 17 3 5 #"-100." 0 0 17 3 1 #" " 0 0 17 3 4 #"200." 0 0 17 3 1 #" " 0 0 17 3 6 #"100.))" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 16 #"row-echelon-form" 0 0 17 3 1 #" " 0 0 17 3 2 #"M)" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0 17 3 32 #"; Example from Trefethen and Bau" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 1 #" " 0 0 17 3 2 #"xs" 0 0 17 3 2 #" (" 0 0 17 3 5 #"range" 0 0 17 3 1 #" " 0 0 17 3 5 #"-128." 0 0 17 3 1 #" " 0 0 17 3 4 #"128." 0 0 17 3 1 #" " 0 0 17 3 5 #"4.0))" 0 0 22 29 1 #"\n" 0 0 17 3 2 #";(" 0 0 17 3 6 #"define" 0 0 17 3 1 #" " 0 0 17 3 1 #"A" 0 0 17 3 2 #" (" 0 0 17 3 16 #"matrix-augment* " 0 0 22 29 1 #"\n" 0 0 17 3 13 #"; (" 0 0 17 3 4 #"list" 0 0 17 3 2 #" (" 0 0 17 3 5 #"apply" 0 0 17 3 1 #" " 0 0 17 3 13 #"column-vector" 0 0 17 3 2 #" (" 0 0 17 3 3 #"map" 0 0 17 3 2 #" (" 0 0 17 3 2 #"\316\273" 0 0 17 3 2 #" (" 0 0 17 3 1 #"x" 0 0 17 3 2 #") " 0 0 17 3 1 #"0" 0 0 17 3 2 #") " 0 0 17 3 4 #"xs))" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; (" 0 0 17 3 5 #"apply" 0 0 17 3 1 #" " 0 0 17 3 13 #"column-vector" 0 0 17 3 2 #" (" 0 0 17 3 3 #"map" 0 0 17 3 2 #" (" 0 0 17 3 2 #"\316\273" 0 0 17 3 2 #" (" 0 0 17 3 1 #"x" 0 0 17 3 2 #") " 0 0 17 3 1 #"x" 0 0 17 3 2 #") " 0 0 17 3 4 #"xs))" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; (" 0 0 17 3 5 #"apply" 0 0 17 3 1 #" " 0 0 17 3 13 #"column-vector" 0 0 17 3 2 #" (" 0 0 17 3 3 #"map" 0 0 17 3 2 #" (" 0 0 17 3 2 #"\316\273" 0 0 17 3 2 #" (" 0 0 17 3 1 #"x" 0 0 17 3 3 #") (" 0 0 17 3 1 #"*" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 3 #")) " 0 0 17 3 4 #"xs))" 0 0 22 29 1 #"\n" 0 0 17 3 19 #"; (" 0 0 17 3 5 #"apply" 0 0 17 3 1 #" " 0 0 17 3 13 #"column-vector" 0 0 17 3 2 #" (" 0 0 17 3 3 #"map" 0 0 17 3 2 #" (" 0 0 17 3 2 #"\316\273" 0 0 17 3 2 #" (" 0 0 17 3 1 #"x" 0 0 17 3 3 #") (" 0 0 17 3 1 #"*" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 1 #" " 0 0 17 3 1 #"x" 0 0 17 3 3 #")) " 0 0 17 3 7 #"xs)))))" 0 0 22 29 1 #"\n" 0 0 17 3 3 #"; (" 0 0 17 3 13 #"define-values" 0 0 17 3 2 #" (" 0 0 17 3 1 #"Q" 0 0 17 3 1 #" " 0 0 17 3 1 #"R" 0 0 17 3 3 #") (" 0 0 17 3 9 #"matrix-QR" 0 0 17 3 1 #" " 0 0 17 3 3 #"A))" 0 0 22 29 1 #"\n" 0 0 22 29 1 #"\n" 0 0