func (PS *PgeSearch) ExpandMethod1(O expr.Expr) (ret []expr.Expr) { O.Sort() ret = make([]expr.Expr, 0) // fmt.Printf("Expanding expression: %v\n", O) for i := 0; i < O.Size(); i++ { I := i E := O.GetExpr(&I) switch E.ExprType() { case expr.ADD: tmp := PS.AddTermToExprMethod1(O, E, i) ret = append(ret, tmp[:]...) case expr.MUL: tmp := PS.WidenTermInExprMethod1(O, E, i) ret = append(ret, tmp[:]...) case expr.VAR: tmp := PS.DeepenTermInExprMethod1(O, E, i) ret = append(ret, tmp[:]...) default: // expr.DIV,expr.COS,expr.SIN,expr.EXP,expr.LOG,expr.ABS,expr.POW continue } } return ret }