code: def niggli_reduce(lattice, eps=1e-5):
      
      _set_no_error()
  
      niggli_lattice = np.array(np.transpose(lattice), dtype='double', order='C')
      result = spg.niggli_reduce(niggli_lattice, float(eps))
      _set_error_message()
  
      if result == 0:
          return None
      else:
          return np.array(np.transpose(niggli_lattice),
                          dtype='double', order='C')
docs: Run Niggli reduction
  
      Args:
          lattice: Lattice parameters in the form of
              [[a_x, a_y, a_z],
               [b_x, b_y, b_z],
               [c_x, c_y, c_z]]
          eps:
              float: Tolerance to check if difference of norms of two basis
                     vectors is close to zero or not and if two basis vectors are
                     orthogonal by the value of dot product being close to zero or
                     not. The detail is shown at
                     https://atztogo.github.io/niggli/.
  
      Returns:
          if the Niggli reduction succeeded:
              Reduced lattice parameters are given as a numpy 'double' array:
              [[a_x, a_y, a_z],
               [b_x, b_y, b_z],
               [c_x, c_y, c_z]]
          otherwise None is returned.