code: def test_lll():
      normal_test_data = [
          (
              DM(
                  [
                      [1, 0, 0, 0, -20160],
                      [0, 1, 0, 0, 33768],
                      [0, 0, 1, 0, 39578],
                      [0, 0, 0, 1, 47757],
                  ],
                  ZZ,
              ),
              DM(
                  [
                      [10, -3, -2, 8, -4],
                      [3, -9, 8, 1, -11],
                      [-3, 13, -9, -3, -9],
                      [-12, -7, -11, 9, -1],
                  ],
                  ZZ,
              ),
          ),
          (
              DM([[20, 52, 3456], [14, 31, -1], [34, -442, 0]], ZZ),
              DM([[14, 31, -1], [188, -101, -11], [236, 13, 3443]], ZZ),
          ),
          (
              DM(
                  [
                      [34, -1, -86, 12],
                      [-54, 34, 55, 678],
                      [23, 3498, 234, 6783],
                      [87, 49, 665, 11],
                  ],
                  ZZ,
              ),
              DM(
                  [
                      [34, -1, -86, 12],
                      [291, 43, 149, 83],
                      [-54, 34, 55, 678],
                      [-189, 3077, -184, -223],
                  ],
                  ZZ,
              ),
          ),
      ]
      delta = QQ(5, 6)
      for basis_dm, reduced_dm in normal_test_data:
          reduced = _ddm_lll(basis_dm.rep.to_ddm(), delta=delta)[0]
          assert reduced == reduced_dm.rep.to_ddm()
  
          reduced = ddm_lll(basis_dm.rep.to_ddm(), delta=delta)
          assert reduced == reduced_dm.rep.to_ddm()
  
          reduced, transform = _ddm_lll(
              basis_dm.rep.to_ddm(), delta=delta, return_transform=True
          )
          assert reduced == reduced_dm.rep.to_ddm()
          assert (
              transform.matmul(basis_dm.rep.to_ddm())
              == reduced_dm.rep.to_ddm()
          )
  
          reduced, transform = ddm_lll_transform(
              basis_dm.rep.to_ddm(), delta=delta
          )
          assert reduced == reduced_dm.rep.to_ddm()
          assert (
              transform.matmul(basis_dm.rep.to_ddm())
              == reduced_dm.rep.to_ddm()
          )
  
          reduced = basis_dm.rep.lll(delta=delta)
          assert reduced == reduced_dm.rep
  
          reduced, transform = basis_dm.rep.lll_transform(delta=delta)
          assert reduced == reduced_dm.rep
          assert transform.matmul(basis_dm.rep) == reduced_dm.rep
  
          reduced = basis_dm.rep.to_sdm().lll(delta=delta)
          assert reduced == reduced_dm.rep.to_sdm()
  
          reduced, transform = basis_dm.rep.to_sdm().lll_transform(
              delta=delta
          )
          assert reduced == reduced_dm.rep.to_sdm()
          assert (
              transform.matmul(basis_dm.rep.to_sdm())
              == reduced_dm.rep.to_sdm()
          )
  
          reduced = basis_dm.lll(delta=delta)
          assert reduced == reduced_dm
  
          reduced, transform = basis_dm.lll_transform(delta=delta)
          assert reduced == reduced_dm
          assert transform.matmul(basis_dm) == reduced_dm
  
file_path: sympy/sympy/polys/matrices/tests/test_lll.py
imports: from sympy.polys.domains import ZZ, QQ
  from sympy.polys.matrices import DM
  from sympy.polys.matrices.domainmatrix import DomainMatrix
  from sympy.polys.matrices.exceptions import DMRankError, DMValueError, DMShapeError, DMDomainError
  from sympy.polys.matrices.lll import _ddm_lll, ddm_lll, ddm_lll_transform
  from sympy.testing.pytest import raises
label_desc: Use image node_id 1 for calling a global function with example usage: test_lll() without return types