docstr: Gives the sine of a square matrix `A`, defined in analogy
  with the matrix exponential.
  
  Examples::
  
      >>> from mpmath import *
      >>> mp.dps = 15; mp.pretty = True
      >>> X = eye(3)
      >>> sinm(X)
      [0.841470984807897                0.0                0.0]
      [              0.0  0.841470984807897                0.0]
      [              0.0                0.0  0.841470984807897]
      >>> X = hilbert(3)
      >>> sinm(X)
      [0.711608512150994  0.339783913247439  0.220742837314741]
      [0.339783913247439  0.244113865695532  0.187231271174372]
      [0.220742837314741  0.187231271174372  0.155816730769635]
      >>> X = matrix([[1+j,-2],[0,-j]])
      >>> sinm(X)
      [(1.29845758141598 + 0.634963914784736j)  (-1.96751511930922 + 0.314700021761367j)]
      [                                    0.0                  (0.0 - 1.1752011936438j)]
docstr_tok: ["Gives","the","sine","of","a","square","matrix","`","A","`",",","defined","in","analogy","with","the","matrix","exponential",".","Examples",":",":",">",">",">","from","mpmath","import","*",">",">",">","mp.dps","=","15",";","mp.pretty","=","True",">",">",">","X","=","eye","(","3",")",">",">",">","sinm","(","X",")","[","0.841470984807897","0.0","0.0","]","[","0.0","0.841470984807897","0.0","]","[","0.0","0.0","0.841470984807897","]",">",">",">","X","=","hilbert","(","3",")",">",">",">","sinm","(","X",")","[","0.711608512150994","0.339783913247439","0.220742837314741","]","[","0.339783913247439","0.244113865695532","0.187231271174372","]","[","0.220742837314741","0.187231271174372","0.155816730769635","]",">",">",">","X","=","matrix","(","[","[","1+j",",","-2","]",",","[","0",",","-j","]","]",")",">",">",">","sinm","(","X",")","[","(","1.29845758141598","+","0.634963914784736j",")","(","-1.96751511930922","+","0.314700021761367j",")","]","[","0.0","(","0.0","-","1.1752011936438j",")","]"]
code: def sinm(ctx, A):
      r"""
      Gives the sine of a square matrix `A`, defined in analogy
      with the matrix exponential.
  
      Examples::
  
          >>> from mpmath import *
          >>> mp.dps = 15; mp.pretty = True
          >>> X = eye(3)
          >>> sinm(X)
          [0.841470984807897                0.0                0.0]
          [              0.0  0.841470984807897                0.0]
          [              0.0                0.0  0.841470984807897]
          >>> X = hilbert(3)
          >>> sinm(X)
          [0.711608512150994  0.339783913247439  0.220742837314741]
          [0.339783913247439  0.244113865695532  0.187231271174372]
          [0.220742837314741  0.187231271174372  0.155816730769635]
          >>> X = matrix([[1+j,-2],[0,-j]])
          >>> sinm(X)
          [(1.29845758141598 + 0.634963914784736j)  (-1.96751511930922 + 0.314700021761367j)]
          [                                    0.0                  (0.0 - 1.1752011936438j)]
      """
      B = (-0.5j) * (ctx.expm(A * ctx.j) - ctx.expm(A * (-ctx.j)))
      if not sum(A.apply(ctx.im).apply(abs)):
          B = B.apply(ctx.re)
      return B
  
file_path: catboost/contrib/python/mpmath/py3/mpmath/matrices/calculus.py
imports: from ..libmp.backend import xrange
label_desc: Use image node_id 4 for calling the MatrixCalculusMethods obj's underlying member method code with example usage: obj.sinm(ctx, A) and returns: B