12345678910111213141516171819202122232425262728293031323334353637383940414243# 1 "src/base/stats/owl_base_stats_dist_gaussian.ml"(*
* OWL - OCaml Scientific and Engineering Computing
* Copyright (c) 2016-2020 Liang Wang <liang.wang@cl.cam.ac.uk>
*)let_u1=ref0.let_u2=ref0.let_case=reffalselet_z0=ref0.let_z1=ref1.letstd_gaussian_rvs()=if!_casethen(_case:=false;!_z1)else(_case:=true;_u1:=Random.float1.;_u2:=Random.float1.;_z0:=sqrt(~-.2.*.log!_u1)*.cos(2.*.Owl_const.pi*.!_u2);_z1:=sqrt(~-.2.*.log!_u1)*.sin(2.*.Owl_const.pi*.!_u2);!_z0)(* TODO: use the polar, is more efficient *)letgaussian_rvs~mu~sigma=if!_casethen(_case:=false;mu+.(sigma*.!_z1))else(_case:=true;_u1:=Random.float1.;_u2:=Random.float1.;_z0:=sqrt(~-.2.*.log!_u1)*.cos(2.*.Owl_const.pi*.!_u2);_z1:=sqrt(~-.2.*.log!_u1)*.sin(2.*.Owl_const.pi*.!_u2);mu+.(sigma*.!_z0))