func ExprGen(egp *prob.TreeParams, srules SimpRules, rng *rand.Rand) Expr { var ret Expr good := false cnt := 0 for !good { egp.ResetCurr() egp.ResetTemp() // eqn := ExprGenStats( &egp, rng ) eqn := exprGrow(-1, ExprGenDepth, egp, rng) eqn.CalcExprStats(0) // fmt.Printf( "%v\n", eqn) ret = eqn.Simplify(srules) ret.CalcExprStats(0) // fmt.Printf( "%v\n\n", ret) // check eqn after simp good = egp.CheckExpr(ret) cnt++ } return ret }