Chop

Chop(a) replaces approximate real numbers in a that are close to zero by the exact integer 0. Chop(a, $\epsilon$) replaces numbers smaller in absolute magnitude than $\epsilon$ by 0. Chop uses a default tolerance of $\epsilon=10^{-10}$. Chop works on Real and Complex numbers as well as on operators, wavefunctions and Tight binding objects.

Input

• a : object that will be chopped, all types allowed
• $\epsilon$ : real number setting the boundary between zero and finite

Output

• a' : object of same type as a

Example

A small test script of chop is:

Input

Chop.Quanty
dofile("../definitions.Quanty")

Opp = Opp1 + 0.000001*Opp2
print(Opp)
Opp3 = Chop(Opp,0.001)
print(Opp3)

psi = psi1 + 0.00001 * psi2
print(psi)
psi3 = Chop(psi,0.001)
print(psi3)

a = 0.000001 + 0.3 * I
b = Chop(a,0.001)
print("a = ",a,"\nChop(a) = ",b)

Result

Chop.out
Operator: Lx
QComplex         =          1 (Real==0 or Complex==1 or Mixed==2)
MaxLength        =          2 (largest number of product of lader operators)
NFermionic modes =          6 (Number of fermionic modes (site, spin, orbital, ...) in the one particle basis)
NBosonic modes   =          0 (Number of bosonic modes (phonon modes, ...) in the one particle basis)

Operator of Length   2
QComplex      =          1 (Real==0 or Complex==1)
N             =          8 (number of operators of length   2)
C  3 A  1 |  7.071067811865476E-01 -7.071067811865476E-07
C  1 A  3 |  7.071067811865476E-01  7.071067811865476E-07
C  2 A  0 |  7.071067811865476E-01 -7.071067811865476E-07
C  0 A  2 |  7.071067811865476E-01  7.071067811865476E-07
C  5 A  3 |  7.071067811865476E-01 -7.071067811865476E-07
C  3 A  5 |  7.071067811865476E-01  7.071067811865476E-07
C  4 A  2 |  7.071067811865476E-01 -7.071067811865476E-07
C  2 A  4 |  7.071067811865476E-01  7.071067811865476E-07

Operator: Lx
QComplex         =          0 (Real==0 or Complex==1 or Mixed==2)
MaxLength        =          2 (largest number of product of lader operators)
NFermionic modes =          6 (Number of fermionic modes (site, spin, orbital, ...) in the one particle basis)
NBosonic modes   =          0 (Number of bosonic modes (phonon modes, ...) in the one particle basis)

Operator of Length   2
QComplex      =          0 (Real==0 or Complex==1)
N             =          8 (number of operators of length   2)
C  3 A  1 |  7.071067811865476E-01
C  1 A  3 |  7.071067811865476E-01
C  2 A  0 |  7.071067811865476E-01
C  0 A  2 |  7.071067811865476E-01
C  5 A  3 |  7.071067811865476E-01
C  3 A  5 |  7.071067811865476E-01
C  4 A  2 |  7.071067811865476E-01
C  2 A  4 |  7.071067811865476E-01

WaveFunction: Wave Function
QComplex         =          0 (Real==0 or Complex==1)
N                =          3 (Number of basis functions used to discribe psi)
NFermionic modes =          6 (Number of fermions in the one particle basis)
NBosonic modes   =          0 (Number of bosons in the one particle basis)

#      pre-factor         Determinant
1   3.162277660168E-01       110000
2   9.486832980505E-01       100010
3   1.000000000000E-05       010010

WaveFunction: Wave Function
QComplex         =          0 (Real==0 or Complex==1)
N                =          2 (Number of basis functions used to discribe psi)
NFermionic modes =          6 (Number of fermions in the one particle basis)
NBosonic modes   =          0 (Number of bosons in the one particle basis)

#      pre-factor         Determinant
1   9.486832980505E-01       100010
2   3.162277660168E-01       110000

a = 	(1e-06 + 0.3 I)
Chop(a) = 	(0 + 0.3 I)

Options

The last element of Chop can be a table of options. Possible options are:

• “Distance” For tight binding objects one can chop according to the size of the hopping matrix element (keep all that are larger) or chop according to the distance between the atoms (keep all interactions that connect sites with a distance that is smaller than the given length).