2 added 6 characters in body edited Aug 10 at 0:23 axsvl77 51133 silver badges1616 bronze badges Here is a simple answer for an ordinary list. The OP asked about: vec = E^(I 2 \[Pi] #/10) & /@ Range[100]; resMMA = Arg[vec] // N;  Just a simple few functions is enough: unwraped = resMMA + Accumulate[2*Pi*Unitize[Chop[Prepend[Differences[resMMA]Accumulate[2*Pi*Unitize[Threshold[Prepend[Differences[resMMA], 0]0.], 1]]]; ListLinePlot[{resMMA, unwraped}]  Sometimes you might need to subtract instead of add, if your saw-tooth is upside down. Here is a simple answer for an ordinary list. The OP asked about: vec = E^(I 2 \[Pi] #/10) & /@ Range[100]; resMMA = Arg[vec] // N;  Just a simple few functions is enough: unwraped = resMMA + Accumulate[2*Pi*Unitize[Chop[Prepend[Differences[resMMA], 0], 1]]]; ListLinePlot[{resMMA, unwraped}]  Sometimes you might need to subtract instead of add, if your saw-tooth is upside down. Here is a simple answer for an ordinary list. The OP asked about: vec = E^(I 2 \[Pi] #/10) & /@ Range[100]; resMMA = Arg[vec] // N;  Just a simple few functions is enough: unwraped = resMMA + Accumulate[2*Pi*Unitize[Threshold[Prepend[Differences[resMMA], 0.], 1]]]; ListLinePlot[{resMMA, unwraped}]  Sometimes you might need to subtract instead of add, if your saw-tooth is upside down. 1 answered Aug 9 at 17:27 axsvl77 51133 silver badges1616 bronze badges Here is a simple answer for an ordinary list. The OP asked about: vec = E^(I 2 \[Pi] #/10) & /@ Range[100]; resMMA = Arg[vec] // N;  Just a simple few functions is enough: unwraped = resMMA + Accumulate[2*Pi*Unitize[Chop[Prepend[Differences[resMMA], 0], 1]]]; ListLinePlot[{resMMA, unwraped}]  Sometimes you might need to subtract instead of add, if your saw-tooth is upside down.