adam.pytorch.torch_like
=======================

.. py:module:: adam.pytorch.torch_like


Classes
-------

.. autoapisummary::

   adam.pytorch.torch_like.TorchLike
   adam.pytorch.torch_like.TorchLikeFactory
   adam.pytorch.torch_like.SpatialMath


Module Contents
---------------

.. py:class:: TorchLike

   Bases: :py:obj:`adam.core.array_api_math.ArrayAPILike`


   Class wrapping pyTorch types


   .. py:attribute:: array
      :type:  torch.Tensor


.. py:class:: TorchLikeFactory(spec: adam.core.array_api_math.ArraySpec | None = None)

   Bases: :py:obj:`adam.core.array_api_math.ArrayAPIFactory`


   Generic factory. Give it (a) a Like class and (b) an xp namespace
   (array_api_compat.* if available; otherwise the library module).


   .. py:attribute:: xp


.. py:class:: SpatialMath(spec: adam.core.array_api_math.ArraySpec | None = None)

   Bases: :py:obj:`adam.core.array_api_math.ArrayAPISpatialMath`


   A drop-in SpatialMath that implements sin/cos/outer/concat/skew with the Array API.

   Works for NumPy, PyTorch, and JAX; CasADi should keep its own subclass.


   .. py:method:: solve(A: adam.core.array_api_math.ArrayAPILike, B: adam.core.array_api_math.ArrayAPILike) -> adam.core.array_api_math.ArrayAPILike

      Override solve to use torch.linalg.solve directly to avoid array_api_compat bug



