func InjectEqn_Vanilla(p1 Expr, egp *prob.TreeParams, rng *rand.Rand) Expr { eqn := p1.Clone() eqn.CalcExprStats(0) s1 := rng.Intn(eqn.Size()) s2 := s1 e2 := eqn.GetExpr(&s2) egp.CurrSize = eqn.Size() - e2.Size() egp.CurrDepth = e2.Depth() egp.ResetTemp() // not correct (should be size based) new_eqn := exprGrow(-1, ExprGenDepth, egp, rng) // eqn.SetExpr(&s1, new_eqn ) SwapExpr(eqn, new_eqn, s1) eqn.CalcExprStats(0) return eqn }