|
1515 | 1515 | (kwcall-unless-empty f pa kw-container kw-container) |
1516 | 1516 | `(call (call (core kwfunc) ,f) ,kw-container ,f ,@pa))))) |
1517 | 1517 |
|
1518 | | -;; convert e.g. A'*B to Ac_mul_B(A,B) |
1519 | | -(define (expand-transposed-op e ops) |
1520 | | - (let ((a (caddr e)) |
1521 | | - (b (cadddr e))) |
1522 | | - (cond ((ctrans? a) |
1523 | | - (if (ctrans? b) |
1524 | | - `(call ,(aref ops 0) #;Ac_mul_Bc ,(expand-forms (cadr a)) |
1525 | | - ,(expand-forms (cadr b))) |
1526 | | - `(call ,(aref ops 1) #;Ac_mul_B ,(expand-forms (cadr a)) |
1527 | | - ,(expand-forms b)))) |
1528 | | - ((ctrans? b) |
1529 | | - `(call ,(aref ops 2) #;A_mul_Bc ,(expand-forms a) |
1530 | | - ,(expand-forms (cadr b)))) |
1531 | | - (else |
1532 | | - `(call ,(cadr e) ,(expand-forms a) ,(expand-forms b)))))) |
1533 | | - |
1534 | 1518 | ;; convert `a+=b` to `a=a+b` |
1535 | 1519 | (define (expand-update-operator- op op= lhs rhs declT) |
1536 | 1520 | (let ((e (remove-argument-side-effects lhs))) |
|
2210 | 2194 | ((and (eq? f '^) (length= e 4) (integer? (cadddr e))) |
2211 | 2195 | (expand-forms |
2212 | 2196 | `(call (top literal_pow) ^ ,(caddr e) (call (call (core apply_type) (top Val) ,(cadddr e)))))) |
2213 | | - |
2214 | | - ((and (eq? f '*) (length= e 4)) |
2215 | | - (expand-transposed-op |
2216 | | - e |
2217 | | - #(Ac_mul_Bc Ac_mul_B A_mul_Bc))) |
2218 | | - ((and (eq? f '/) (length= e 4)) |
2219 | | - (expand-transposed-op |
2220 | | - e |
2221 | | - #(Ac_rdiv_Bc Ac_rdiv_B A_rdiv_Bc))) |
2222 | | - ((and (eq? f '\\) (length= e 4)) |
2223 | | - (expand-transposed-op |
2224 | | - e |
2225 | | - #(Ac_ldiv_Bc Ac_ldiv_B A_ldiv_Bc))) |
2226 | 2197 | (else |
2227 | 2198 | (map expand-forms e)))) |
2228 | 2199 | (map expand-forms e))) |
|
2394 | 2365 | ,.(apply append rows))) |
2395 | 2366 | `(call (top typed_vcat) ,t ,@a))))) |
2396 | 2367 |
|
2397 | | - '|'| (lambda (e) (expand-forms `(call adjoint ,(cadr e)))) |
| 2368 | + '|'| (lambda (e) (expand-forms `(call postfixapostrophize ,(cadr e)))) |
2398 | 2369 | '|.'| (lambda (e) (begin (deprecation-message (string "The syntax `.'` for transposition is deprecated, " |
2399 | 2370 | "and the special lowering of `.'` in multiplication " |
2400 | 2371 | "(`*`), left-division (`\\`), and right-division (`/`) " |
|
0 commit comments