# \[ANN\] ZChop.jl v0.3.5

**URL:** <https://discourse.julialang.org/t/ann-zchop-jl-v0-3-5/71616>\
**Category:** Package Announcements\
**Created:** [November 16, 2021, 10:04pm UTC](https://discourse.julialang.org/t/ann-zchop-jl-v0-3-5/71616 "2021-11-16T22:04:18Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![jlapeyre](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlapeyre/32/4514_2.png) [@jlapeyre](https://discourse.julialang.org/u/jlapeyre)\
**Post date:** [November 16, 2021, 10:04pm UTC](https://discourse.julialang.org/t/ann-zchop-jl-v0-3-5/71616/1 "2021-11-16T22:04:18Z")

</div>

[ZChop.jl](https://github.com/jlapeyre/ZChop.jl) was written in December 2015. This is the first version with a new feature: Functions `nchop` and `nchop!`. This represents the culmination of a few hours of work.

EDIT: The original function `zchop` does this:

zchop(x) replaces numbers in x that are close to zero with zero.

zchop(x) returns 0 if abs(x) is smaller than 1e-14, and x otherwise.

zchop(x,eps) uses eps rather than 1e-14

zchop!(a,eps) works inplace on Arrays and nested Arrays.

I added `nchop` in response to a slack post by @staticfloat . Following the example in that post

```julia
julia> x = [7.401486830834377e-17 + 3.700743415417188e-17im
    8.26024732898714e-17 + 7.020733317042351e-17im
      0.9999999999999997 + 1.0000000000000002im
 -1.0177044392397268e-16 - 6.476300976980079e-17im
                     0.0 - 7.401486830834377e-17im
 -4.5595039135699516e-17 - 2.1823706978711105e-16im
  1.2952601953960158e-16 + 0.0im
 -2.1079998571544233e-16 + 5.303212320736824e-17im
                     0.0 - 7.401486830834377e-17im
  -6.476300976980079e-17 + 2.498001805406602e-16im
   7.401486830834377e-17 - 1.4802973661668753e-16im
   1.7379255156127046e-16 + 2.0982745100975517e-17im]

julia> nchop(x)
12-element Vector{ComplexF64}:
  0.0 + 0.0im
  0.0 + 0.0im
  1.0 + 1.0im
 -0.0 - 0.0im
  0.0 - 0.0im
 -0.0 - 0.0im
  0.0 + 0.0im
 -0.0 + 0.0im
  0.0 - 0.0im
 -0.0 + 0.0im
  0.0 - 0.0im
  0.0 + 0.0im

```

You could get the same result with `round.(x; digits=12)` (maybe you have to look it up first). Or, as in the slack post, `Base.show(io::IO, f::Float64) = @printf(io, "%.2f", f)` !

But, there are other features, efficiency, `nchop!`, `zchop` , and `zchop!`, which would require some thought and different incantations of `round`.
