fun saddle _ = let val start = [(Base 1.0), (Base 1.0)]
fun f x1 y1 x2 y2 = ((sqr x1)+(sqr y1))-((sqr x2)+(sqr y2))
val [x1_star, y1_star] =
multivariate_argmin
(fn [x1, y1] =>
multivariate_max
(fn [x2, y2] => f x1 y1 x2 y2)
start)
start
val [x2_star, y2_star] =
multivariate_argmax
(fn [x2, y2] => f x1_star y1_star x2 y2)
start
in [[(write x1_star), (write y1_star)],
[(write x2_star), (write y2_star)]];
0
end