File: matrix-test-env.thb

package info (click to toggle)
theme-d 7.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,036 kB
  • sloc: lisp: 9,625; sh: 5,321; makefile: 715; ansic: 477
file content (106 lines) | stat: -rw-r--r-- 3,863 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
;; -*-theme-d-*-

;; Copyright (C) 2023 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.

(define-body (tests matrix-test-env)

  (import (standard-library console-io)
	  (standard-library list-utilities))

  (define-syntax generate-print-method
    (syntax-rules ()
      ((_ &type)
       (define-simple-method console-display-matrix
	   (((mx &type)) <none> nonpure)
	 (let ((i-rows (number-of-rows mx))
	       (i-columns (number-of-columns mx)))
	   (do ((i1 <integer> 0 (+ i1 1))) ((>= i1 i-rows))
	     (do ((i2 <integer> 0 (+ i2 1))) ((>= i2 i-columns))
	       (console-display (matrix-ref mx i1 i2))
	       (if (< i2 i-columns)
		   (console-display " ")))
	     (console-newline)))))))

  (define-syntax generate-print-method1
    (syntax-rules ()
      ((_ &type)
       (define-simple-method console-display-matrix
	   (((mx &type)) <none> nonpure)
	 (let ((i-rows (number-of-rows mx))
	       (i-columns (number-of-columns mx)))
	   (do ((i1 <integer> 0 (+ i1 1))) ((>= i1 i-rows))
	     (do ((i2 <integer> 0 (+ i2 1))) ((>= i2 i-columns))
	       (console-display (bvm-ref mx i1 i2))
	       (if (< i2 i-columns)
		   (console-display " ")))
	     (console-newline)))))))

  (define-syntax generate-diag-printable-method
    (syntax-rules ()
      ((_ &type)
       (define-simple-method diag-printable-repr
	   (((mx &type)) <list> pure)
	 (let ((i-elements (diag-matrix-numel mx)))
	   (let-mutable ((l-result <list> null))
	     (do ((i <integer> 0 (+ i 1))) ((>= i i-elements))
	       (set! l-result
		     (append-uniform2 l-result
				      (list (diagonal-matrix-ref mx i)))))
	     l-result))))))
  
  (define-syntax generate-report-method
    (syntax-rules ()
      ((_ &type)
       (define-simple-method do-report-matrix-test
	   (((x-expr <object>) (mx-result &type) (mx-correct &type))
	    <none> nonpure)
	 (console-write x-expr)
	 (console-display-line " =")
	 (console-display-matrix mx-result)
	 (if (= mx-result mx-correct)
	     (console-display "OK")
	     (console-display "FAIL"))
	 (console-newline)))))

  (define-syntax generate-report-diag-method
    (syntax-rules ()
      ((_ &type)
       (define-simple-method do-report-diag-matrix-test
	   (((x-expr <object>) (mx-result &type) (mx-correct &type))
	    <none> nonpure)
	 (console-write x-expr)
	 (console-display-line " =")
	 (console-display (cons 'diag (diag-printable-repr mx-result)))
	 (console-display " ")
	 (if (= mx-result mx-correct)
	     (console-display "OK")
	     (console-display "FAIL"))
	 (console-newline)))))

  (generate-print-method (:matrix <real>))
  (generate-print-method (:matrix <complex>))
  (generate-diag-printable-method (:diagonal-matrix <real>))
  (generate-diag-printable-method (:diagonal-matrix <complex>))
  (generate-print-method1 <bvm-matrix>)
  (generate-print-method1 <bvm-complex-matrix>)
  (generate-print-method1 <bvm-single-matrix>)
  (generate-print-method1 <bvm-single-complex-matrix>)
  (generate-diag-printable-method <bvm-diag-matrix>)
  (generate-diag-printable-method <bvm-complex-diag-matrix>)
  (generate-diag-printable-method <bvm-single-diag-matrix>)
  (generate-diag-printable-method <bvm-single-complex-diag-matrix>)
  
  (generate-report-method (:matrix <real>))
  (generate-report-method (:matrix <complex>))
  (generate-report-diag-method (:diagonal-matrix <real>))
  (generate-report-diag-method (:diagonal-matrix <complex>))
  (generate-report-method <bvm-matrix>)
  (generate-report-method <bvm-complex-matrix>)
  (generate-report-method <bvm-single-matrix>)
  (generate-report-method <bvm-single-complex-matrix>)
  (generate-report-diag-method <bvm-diag-matrix>)
  (generate-report-diag-method <bvm-complex-diag-matrix>)
  (generate-report-diag-method <bvm-single-diag-matrix>)
  (generate-report-diag-method <bvm-single-complex-diag-matrix>))