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).