class_docstr: The class used to define vectors.
  
  It along with ReferenceFrame are the building blocks of describing a
  classical mechanics system in PyDy and sympy.physics.vector.
  
  Attributes
  ==========
  
  simp : Boolean
      Let certain methods use trigsimp on their outputs
class_docstr_tok: ["The","class","used","to","define","vectors",".","It","along","with","ReferenceFrame","are","the","building","blocks","of","describing","a","classical","mechanics","system","in","PyDy","and","sympy.physics.vector",".","Attributes","==========","simp",":","Boolean","Let","certain","methods","use","trigsimp","on","their","outputs"]
docstr: Dot product of two vectors.
  
  Returns a scalar, the dot product of the two Vectors
  
  Parameters
  ==========
  
  other : Vector
      The Vector which we are dotting with
  
  Examples
  ========
  
  >>> from sympy.physics.vector import ReferenceFrame, dot
  >>> from sympy import symbols
  >>> q1 = symbols('q1')
  >>> N = ReferenceFrame('N')
  >>> dot(N.x, N.x)
  1
  >>> dot(N.x, N.y)
  0
  >>> A = N.orientnew('A', 'Axis', [q1, N.x])
  >>> dot(N.y, A.y)
  cos(q1)
docstr_tok: ["Dot","product","of","two","vectors",".","Returns","a","scalar",",","the","dot","product","of","the","two","Vectors","Parameters","==========","other",":","Vector","The","Vector","which","we","are","dotting","with","Examples","========",">",">",">","from","sympy.physics.vector","import","ReferenceFrame",",","dot",">",">",">","from","sympy","import","symbols",">",">",">","q1","=","symbols","(","'q1","'",")",">",">",">","N","=","ReferenceFrame","(","'N","'",")",">",">",">","dot","(","N.x",",","N.x",")","1",">",">",">","dot","(","N.x",",","N.y",")","0",">",">",">","A","=","N.orientnew","(","'","A","'",",","'Axis","'",",","[","q1",",","N.x","]",")",">",">",">","dot","(","N.y",",","A.y",")","cos","(","q1",")"]
code: def __and__(self, other):
      """Dot product of two vectors.
  
      Returns a scalar, the dot product of the two Vectors
  
      Parameters
      ==========
  
      other : Vector
          The Vector which we are dotting with
  
      Examples
      ========
  
      >>> from sympy.physics.vector import ReferenceFrame, dot
      >>> from sympy import symbols
      >>> q1 = symbols('q1')
      >>> N = ReferenceFrame('N')
      >>> dot(N.x, N.x)
      1
      >>> dot(N.x, N.y)
      0
      >>> A = N.orientnew('A', 'Axis', [q1, N.x])
      >>> dot(N.y, A.y)
      cos(q1)
  
      """
  
      from sympy.physics.vector.dyadic import Dyadic
  
      if isinstance(other, Dyadic):
          return NotImplemented
      other = _check_vector(other)
      out = S.Zero
      for i, v1 in enumerate(self.args):
          for j, v2 in enumerate(other.args):
              out += ((v2[0].T) * (v2[1].dcm(v1[1])) * (v1[0]))[0]
      if Vector.simp:
          return trigsimp(out, recursive=True)
      else:
          return out
  
imports: from sympy import S, sympify, expand, sqrt, Add, zeros, acos, ImmutableMatrix, simplify
  from sympy.simplify.trigsimp import trigsimp
  from sympy.printing.defaults import Printable
  from sympy.utilities.misc import filldedent
  from sympy.core.evalf import EvalfMixin
  from mpmath.libmp.libmpf import prec_to_dps
label_desc: Use image node_id 5 for calling the Vector obj's underlying member method code with example usage: obj.__and__(other) and returns: NotImplemented, trigsimp, out