File: pfaff.lsp

package info (click to toggle)
maxima 5.6-17
  • links: PTS
  • area: main
  • in suites: woody
  • size: 30,572 kB
  • ctags: 47,715
  • sloc: ansic: 154,079; lisp: 147,553; asm: 45,843; tcl: 16,744; sh: 11,057; makefile: 7,198; perl: 1,842; sed: 334; fortran: 24; awk: 5
file content (156 lines) | stat: -rw-r--r-- 3,788 bytes parent folder | download
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
;;; -*- Mode: Lisp; Package: Macsyma -*-
;;; Translated code for LMIVAX::MAX$DISK:[SHARE2]PFAFF.MC;2
;;; Written on 9/20/1984 05:27:53, from MACSYMA 302
;;; Translated for LPH

;;; TRANSL-AUTOLOAD version NIL
;;; TRANSS version 87 TRANSL version 1157 TRUTIL version 27
;;; TRANS1 version 108 TRANS2 version 39 TRANS3 version 50
;;; TRANS4 version 29 TRANS5 version 26 TRANSF version NIL
;;; TROPER version 15 TRPRED version 6 MTAGS version NIL
;;; MDEFUN version 58 TRANSQ version 88 FCALL version 40
;;; ACALL version 70 TRDATA version 68 MCOMPI version 146
;;; TRMODE version 73 TRHOOK version NIL
(eval-when (compile eval)
      (setq *infile-name-key*
	          (namestring (truename '#.standard-input))))

(eval-when (compile)
   (setq $tr_semicompile 'NIL)
   (setq forms-to-compile-queue ()))

(comment "PFAFF.MC")

;;; General declarations required for translated MACSYMA code.

(DECLARE (SPECIAL $ERREXP $PFAFFM ^W))

(DEF-MTRVAR $PFAFFM '$PFAFFM 1)

(DEFMTRFUN-EXTERNAL ($PFAFFIAN $ANY MDEFINE NIL NIL))


(SETQ ^W T)

(MEVAL* '(($DECLARE) $PFAFFM $SPECIAL))

(DEFPROP $PFAFFIAN T TRANSLATED)

(ADD2LNC '$PFAFFIAN $PROPS)

(DEFMTRFUN
 ($PFAFFIAN $ANY MDEFINE NIL NIL) ($INTEG $LIST) NIL
 ((LAMBDA ($SGN $ANS $PDUM $LDUM)
   NIL
   (PROG ()
    (COND
     ((NOT (AND (MFUNCTION-CALL $LISTP $LIST)
		(MFUNCTION-CALL $INTEGERP $INTEG)
		(IS-BOOLE-CHECK (MGRP $INTEG 0))
		(LIKE (MFUNCTION-CALL $LENGTH $LIST)
		      (DIV (MUL* $INTEG (ADD* $INTEG 1)) 2))))
      (SIMPLIFY
       (MFUNCTION-CALL
	$ERROR
	(PROGN
	 (SETQ $ERREXP (LIST '(MLIST) $INTEG $LIST))
	 '|&Invalid arg to PFAFFIAN.MERREXP holds the offending expression.|)))))
    (COND ((LIKE $INTEG 1) (RETURN (SIMPLIFY ($FIRST $LIST)))))
    (COND ((MFUNCTION-CALL $EVENP $INTEG) (RETURN 0)))
    (COND
     ((LIKE $INTEG 3)
	(RETURN
	  (ADD*
	    (MUL* (MARRAYREF $LIST 1) (MARRAYREF $LIST 6))
	    (*MMINUS (MUL* (MARRAYREF $LIST 2) (MARRAYREF $LIST 5)))
	    (MUL* (MARRAYREF $LIST 3) (MARRAYREF $LIST 4)))))
     (T
      (DO (($KZERO 1 (+ 1 $KZERO)))
	  ((IS-BOOLE-CHECK (MGRP $KZERO $INTEG)) '$DONE)
	(SETQ
	  $ANS
	  (ADD*
	    $ANS
	    (MUL*
	      (SIMPLIFY (MFUNCTION-CALL $INPART $LIST $KZERO))
	      (SETQ $SGN (*MMINUS $SGN))
	      (SIMPLIFY
		(MFUNCTION-CALL
		  $PFAFFIAN (ADD* $INTEG -2)
		  (SIMPLIFY
		    (MFUNCTION-CALL
		      $REST
		      (SIMPLIFY
			(MFUNCTION-CALL
			  $INPART $LIST
			  (SIMPLIFY
			    (MAPPLY-TR
			      '$ALLBUT
			      (COND
				((MFUNCTION-CALL
				   $LISTP
				   (SETQ
				     $PDUM
				     (MARRAYREF
				       (TRD-MSYMEVAL $PFAFFM '$PFAFFM)
				       $INTEG $KZERO)))
				   $PDUM)
				(T
				  (MARRAYSET
				    (PROGN
				      (SETQ
					$LDUM
					(DIV (MUL* (+ $KZERO 1)
						   (ADD* (MUL* 2 $INTEG)
							 (- $KZERO)))
					     2))
				      (SETQ $PDUM '((MLIST)))
				      (COND
					((NOT (= $KZERO 1))
					   (DO (($MDUM 2 (+ 1 $MDUM)))
					       ((> $MDUM $KZERO) '$DONE)
					     (SETQ
					       $PDUM
					       (SIMPLIFY
						 (MFUNCTION-CALL
						   $ENDCONS
						   (ADD*
						     $KZERO
						     (DIV (MUL*
							    (+ $MDUM
							       -1)
							    (ADD*
							      (MUL* 2
								    $INTEG)
							      (- $MDUM)))
							  2))
						   $PDUM))))))
				      (DO
					(($MDUM
					   (ADD*
					     (DIV (MUL*
						    $KZERO
						    (ADD* (MUL* 2 $INTEG)
							  (- $KZERO) 1))
						  2)
					     1)
					   (ADD* 1 $MDUM)))
					((IS-BOOLE-CHECK
					   (MGRP $MDUM $LDUM))
					   '$DONE)
					(SETQ
					  $PDUM
					  (SIMPLIFY
					    (MFUNCTION-CALL $ENDCONS $MDUM
							    $PDUM))))
				      $PDUM)
				    (TRD-MSYMEVAL $PFAFFM '$PFAFFM)
				    $INTEG $KZERO)))))))
		      $INTEG))))))))))
    (RETURN $ANS)))
  -1 0 '$PDUM '$LDUM))

(SETQ ^W NIL)

(compile-forms-to-compile-queue)