egison-3.7.8: sample/math/geometry/surface.egi
; We can bound f to a specific function.
; (define $f (lambda [$x $y] (+ (** x 2) (** y 2))))
(define $v1 [| 1 0 (∂/∂ (f x y) x) |])
(define $v2 [| 0 1 (∂/∂ (f x y) y) |])
v1;[| 1 0 (f|1 x y) |]
v2;[| 0 1 (f|2 x y) |]
(define $v3 (cross-product v1 v2))
v3;[| (* -1 (f|1 x y)) (* -1 (f|2 x y)) 1 |]
(define $e3 (/ v3 (sqrt '(V.* v3 v3))))
e3
;[|(/ (* -1 (f|1 x y))
; (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))
; (/ (* -1 (f|2 x y))
; (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))
; (/ 1
; (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))|]
(define $E (V.* v1 v1))
(define $F (V.* v1 v2))
(define $G (V.* v2 v2))
E;(+ 1 (f|1 x y)^2)
F;(* (f|1 x y) (f|2 x y)
G;(+ 1 (f|2 x y)^2)
(define $L (V.* (∂/∂ v1 x) e3))
(define $M (V.* (∂/∂ v1 y) e3))
;(define $M (V.* (∂/∂ v2 x) e3))
(define $N (V.* (∂/∂ v2 y) e3))
L;(/ (f|1|1 x y) (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))
M;(/ (f|1|2 x y) (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))
N;(/ (f|2|2 x y) (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1)))
(define $K (/ (- (* L N) (** M 2))
'(- (* E G) (** F 2))))
(define $H (/ (+ (* 'E N) (* 'G L) (* -2 F M))
(* 2 '(- (* E G) (** F 2)))))
K
;(/ (+ (* (f|1|1 x y) (f|2|2 x y)) (* -1 (f|1|2 x y)^2))
; '(+ (f|1 x y)^2 (f|2 x y)^2 1)^2)
H
;(/ (+ (* '(+ 1 (f|1 x y)^2) (f|2|2 x y))
; (* '(+ 1 (f|2 x y)^2) (f|1|1 x y))
; (* -2 (f|1 x y) (f|2 x y) (f|1|2 x y)))
; (* 2
; (sqrt '(+ (f|1 x y)^2 (f|2 x y)^2 1))
; '(+ 1 (f|2 x y)^2 (f|1 x y)^2)))