Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
;; This file: ;; http://anggtwu.net/MAXIMA/dim-antideriv.lisp.html ;; http://anggtwu.net/MAXIMA/dim-antideriv.lisp ;; (find-angg "MAXIMA/dim-antideriv.lisp") ;; Author: Robert Dodier ;; Trivial changes by: Eduardo Ochs ;; From: https://sourceforge.net/p/maxima/mailman/message/59178281/ ;; (find-maximamsg "59178281 202504 29" "RDodier: dim-antideriv.lisp") ;; (find-maximamsg "59178287 202504 29" "Edrx: Thanks!!! =)") ;; (find-maximamsg "59178856 202505 01" "Edrx: TeXmacs") ;; ;; DIM-%ANTIDERIV -- 2-d pretty printer display for antiderivative-like expressions ;; copyright 2025 by Robert Dodier ;; I release this work under terms of the GNU General Public License, v2 (if (not (fboundp 'display2d-unicode-enabled)) (defun display2d-unicode-enabled () nil)) (defun dim-%antideriv (form result) (unless (= (length (cdr form)) 4) (return-from dim-%antideriv (dimension-function form result))) (let* ((args (rest form)) (expr (first args)) (my-var (second args)) (lower-val (third args)) (upper-val (fourth args)) (lower-eqn (list '(mequal) my-var lower-val)) (upper-eqn (list '(mequal) my-var upper-val)) (vertical-bar-char (if (display2d-unicode-enabled) at-char-unicode (car (coerce $absboxchar 'list)))) vertical-bar expr-result lower-result upper-result expr-w expr-h expr-d lower-w lower-h lower-d upper-w upper-h upper-d) (declare (ignorable expr-w expr-h expr-d lower-w lower-h lower-d upper-w upper-h upper-d)) (setq expr-result (dimension expr nil 'mparen 'mparen nil 0) expr-w width expr-h height expr-d depth) (setq lower-result (dimension-infix lower-eqn nil) lower-w width lower-h height lower-d depth) (setq upper-result (dimension-infix upper-eqn nil) upper-w width upper-h height upper-d depth) (setq vertical-bar (list 'd-vbar (1+ (max expr-h upper-d)) (max (1+ expr-d) lower-h) vertical-bar-char)) (setq result (append (list (append (list (- lower-w) (max expr-h upper-d)) upper-result) (append (list 0 (- (max (1+ expr-d) lower-h))) lower-result) vertical-bar (append (list 0 0) expr-result)) result)) (setq height (+ 1 (max expr-h upper-d) upper-h) depth (+ (max (1+ expr-d) lower-h) lower-d)) (update-heights height depth) result)) (setf (get '%antideriv 'dimension) 'dim-%antideriv) (setf (get '$antideriv 'dimension) 'dim-%antideriv) ; Edrx #| ** Tests: * (eepitch-oldmaxima) * (eepitch-kill) * (eepitch-oldmaxima) * (eepitch-maxima) * (eepitch-kill) * (eepitch-maxima) load ("dim-antideriv.lisp"); 42 = 'antideriv (F(u), u, a, b); 42 = 'antideriv (F(u[k]), u[k], a[k], b[k]); 42 = 'antideriv(a+b,u,z^2^n+y[k],x^2-z[k]); 42 = 'antideriv(a+b,u,z^2^n+y[k],x^2-z[k[l[u]]]); mybox(o) := matrix(["+", "-", "_"],["|",o,"|"],["+", "-", "_"]); o : antideriv(a+b,u,z^2^n+y[k],x^2-z[k[l[u]]]); mybox(o); o : 'antideriv (F(u), u, a, b); o : antideriv (F(u), u, a, b); tex1(o); texput(antideriv, antideriv_tex); antideriv_tex(o) := block([fx,x,a,b], [fx,x,a,b]:args(o), format("\\left.~a\\right|_{~a=~a}^{~a=~a}", tex1(fx), tex1(x),tex1(a), tex1(x),tex1(b))); antideriv_tex([f(x),x,a,b]); tex1(antideriv(f(x),x,a,b)); to_lisp(); |#