open Formula let mean = Func.def "mean" ~args:["X"] ~return:Mathset.Real Syntax.( let x = var "X" (Mathset.Vector Mathset.Real) in !1 / (length x) * sum x ) let f = Func.def "F" ~doc:"Exponential family log-normalizer" ~args:["\\theta"] ~return:Mathset.Real Syntax.( let theta = var ~doc:"natural parameter" ~prop:"dimension 2" "\\theta" (Mathset.Vector Mathset.Real) in - (!1 / !4 * ((theta@0) ** !2 / (theta@1))) + !1 / !2 * log(- (pi / (theta@1))) ) let display func = print_endline (Latex.doc func); print_newline (); List.iter (fun (name, doc, set, prop) -> Printf.printf "%s: %s (%s, %s)\n" name doc set prop ) (Backend.variables func); print_newline (); print_endline (Latex.def func); print_newline (); print_endline (Python.def func); print_newline (); print_endline (C.def func); print_newline (); print_endline (Matlab.def func); () let () = display mean; display f; ()