File: invert.lisp

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 (70 lines) | stat: -rw-r--r-- 2,387 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
;;; -*-  Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;
;;;Translated on: 5/12/85 13:57:48;;Maxima System version 8
;;** Variable settings were **

(in-package "MAXIMA")

;;TRANSCOMPILE:FALSE;
;;TR_SEMICOMPILE:FALSE;
;;TRANSLATE_FAST_ARRAYS:TRUE;
;;TR_WARN_UNDECLARED:COMPILE;
;;TR_WARN_MEVAL:COMPFILE;
;;TR_WARN_FEXPR:COMPFILE;
;;TR_WARN_MODE:ALL;
;;TR_WARN_UNDEFINED_VARIABLE:ALL;
;;TR_FUNCTION_CALL_DEFAULT:GENERAL;
;;TR_ARRAY_AS_REF:TRUE;
;;TR_NUMER:FALSE;
;;DEFINE_VARIABLE:FALSE;
(EVAL-WHEN (COMPILE EVAL LOAD)
 (DEFPROP $ADJOINT T TRANSLATED)
 (ADD2LNC '$ADJOINT $PROPS)
 (DEFMTRFUN
  ($ADJOINT $ANY MDEFINE NIL NIL)
  ($MAT)
  NIL
  ((LAMBDA
    ($ADJ $N)
    NIL
    (SETQ $N ($LENGTH $MAT))
    (SETQ $ADJ (SIMPLIFY ($IDENT $N)))
    (COND
     ((NOT (LIKE $N 1))
      (DO (($I 1 (f+ 1 $I)))
          ((> $I $N) '$DONE)
        (DO (($J 1 (f+ 1 $J)))
            ((> $J $N) '$DONE)
         (MASET (MUL* (POWER -1 (f+ $I $J))
                      (SIMPLIFY ($DETERMINANT (SIMPLIFY ($MINOR $MAT
                                                                $J
                                                                $I)))))
                $ADJ
                $I
                $J)))))
    $ADJ)
   '$ADJ
   '$N)))
(EVAL-WHEN (COMPILE EVAL LOAD)
       (DEFPROP $INVERT T TRANSLATED)
       (ADD2LNC '$INVERT $PROPS)
       (DEFMTRFUN ($INVERT $ANY MDEFINE NIL NIL)
                  ($MAT)
                  NIL
                  ((LAMBDA ($ADJ $ANS)
                       NIL
                       (SETQ $ADJ (SIMPLIFY ($ADJOINT $MAT)))
                       (SETQ $ANS ((LAMBDA ($SCALARMATRIXP)
                                       NIL
                                       (DIV $ADJ
                                            (NCMUL2 (SIMPLIFY ($ROW $MAT 1))
                                                    (SIMPLIFY ($COL $ADJ
                                                                    1)))))
                                   T))
                       (COND ((AND (LIKE (TRD-MSYMEVAL $SCALARMATRIXP
                                                       '$SCALARMATRIXP)
                                         T)
                                   (EQL ($LENGTH $MAT) 1))
                              (MAREF $ANS 1 1))
                             (T $ANS)))
                   '$ADJ
                   '$ANS)))