NEML2 2.0.0
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
Quaternion Class Reference

A batched quaternion. More...

Detailed Description

A batched quaternion.

Our convention is s q1 q2 q3, i.e. the scalar part first

The storage space is (4,).

Currently we only use this for data storage, so the only method needed is to convert it to an R2

#include <Quaternion.h>

Inheritance diagram for Quaternion:

Public Member Functions

 Quaternion (const Rot &r)
 
Scalar operator() (Size i) const
 Accessor.
 
R2 to_R2 () const
 Convert to R2.
 
Scalar dot (const Quaternion &other) const
 Dot product.
 
Scalar dist (const Quaternion &other) const
 Distance measure between two quaternions.
 
- Public Member Functions inherited from PrimitiveTensor< Quaternion, 4 >
 PrimitiveTensor ()=default
 Special member functions.
 
 PrimitiveTensor (const ATensor &tensor, Size batch_dim)
 Construct from another ATensor given batch dimension.
 
 PrimitiveTensor (const ATensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another ATensor given batch shape.
 
 PrimitiveTensor (const Tensor &tensor)
 Copy constructor.
 
 PrimitiveTensor (const ATensor &tensor)
 Construct from another ATensor and infer batch dimension.
 
 operator Tensor () const
 Implicit conversion to a Tensor and loses information on the fixed base shape.
 
- Public Member Functions inherited from TensorBase< Quaternion >
 TensorBase ()=default
 Special member functions.
 
 TensorBase (const ATensor &tensor, Size batch_dim)
 Construct from another ATensor with given batch dimension.
 
 TensorBase (const ATensor &tensor, const TraceableTensorShape &batch_shape)
 Construct from another ATensor with given batch shape.
 
 TensorBase (const neml2::Tensor &tensor)
 Copy constructor.
 
 TensorBase (Real)=delete
 
Quaternion variable_data () const
 
Quaternion clone () const
 
Quaternion detach () const
 Discard function graph.
 
Quaternion to (const TensorOptions &options) const
 Change tensor options.
 
Quaternion operator- () const
 Negation.
 
bool batched () const
 Whether the tensor is batched.
 
Size batch_dim () const
 Return the number of batch dimensions.
 
Size base_dim () const
 Return the number of base dimensions.
 
const TraceableTensorShapebatch_sizes () const
 Return the batch size.
 
TraceableSize batch_size (Size index) const
 Return the size of a batch axis.
 
TensorShapeRef base_sizes () const
 Return the base size.
 
Size base_size (Size index) const
 Return the size of a base axis.
 
Size base_storage () const
 Return the flattened storage needed just for the base indices.
 
Quaternion batch_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the batch dimensions.
 
neml2::Tensor base_index (indexing::TensorIndicesRef indices) const
 Get a tensor by slicing on the base dimensions.
 
Quaternion batch_slice (Size dim, const indexing::Slice &index) const
 Get a tensor by slicing along a batch dimension.
 
neml2::Tensor base_slice (Size dim, const indexing::Slice &index) const
 Get a tensor by slicing along a base dimension.
 
void batch_index_put_ (indexing::TensorIndicesRef indices, const ATensor &other)
 
void batch_index_put_ (indexing::TensorIndicesRef indices, Real v)
 
void base_index_put_ (indexing::TensorIndicesRef indices, const ATensor &other)
 
void base_index_put_ (indexing::TensorIndicesRef indices, Real v)
 
Quaternion batch_expand (const TraceableTensorShape &batch_shape) const
 
Quaternion batch_expand (const TraceableSize &batch_size, Size dim) const
 Return a new view of the tensor with values broadcast along a given batch dimension.
 
neml2::Tensor base_expand (TensorShapeRef base_shape) const
 Return a new view of the tensor with values broadcast along the base dimensions.
 
neml2::Tensor base_expand (Size base_size, Size dim) const
 Return a new view of the tensor with values broadcast along a given base dimension.
 
Quaternion batch_expand_as (const neml2::Tensor &other) const
 Expand the batch to have the same shape as another tensor.
 
neml2::Tensor base_expand_as (const neml2::Tensor &other) const
 Expand the base to have the same shape as another tensor.
 
Quaternion batch_expand_copy (const TraceableTensorShape &batch_shape) const
 Return a new tensor with values broadcast along the batch dimensions.
 
neml2::Tensor base_expand_copy (TensorShapeRef base_shape) const
 Return a new tensor with values broadcast along the base dimensions.
 
Quaternion batch_reshape (const TraceableTensorShape &batch_shape) const
 Reshape batch dimensions.
 
neml2::Tensor base_reshape (TensorShapeRef base_shape) const
 Reshape base dimensions.
 
Quaternion batch_unsqueeze (Size d) const
 Unsqueeze a batch dimension.
 
neml2::Tensor base_unsqueeze (Size d) const
 Unsqueeze a base dimension.
 
Quaternion batch_transpose (Size d1, Size d2) const
 Transpose two batch dimensions.
 
neml2::Tensor base_transpose (Size d1, Size d2) const
 Transpose two base dimensions.
 
neml2::Tensor base_flatten () const
 Flatten base dimensions.
 

Static Public Member Functions

static Quaternion fill (const Scalar &s, const Scalar &q1, const Scalar &q2, const Scalar &q3)
 fill with four scalars
 
static Quaternion fill (const Real &s, const Real &q1, const Real &q2, const Real &q3, const TensorOptions &options=default_tensor_options())
 fill with four reals
 
- Static Public Member Functions inherited from PrimitiveTensor< Quaternion, 4 >
static Quaternion create (const TensorDataContainer &data, const TensorOptions &options=default_tensor_options())
 Arbitrary tensor from a nested container with inferred batch dimension.
 
static Quaternion empty (const TensorOptions &options=default_tensor_options())
 Unbatched empty tensor.
 
static Quaternion empty (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Empty tensor given batch shape.
 
static Quaternion zeros (const TensorOptions &options=default_tensor_options())
 Unbatched zero tensor.
 
static Quaternion zeros (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Zero tensor given batch shape.
 
static Quaternion ones (const TensorOptions &options=default_tensor_options())
 Unbatched unit tensor.
 
static Quaternion ones (const TraceableTensorShape &batch_shape, const TensorOptions &options=default_tensor_options())
 Unit tensor given batch shape.
 
static Quaternion full (Real init, const TensorOptions &options=default_tensor_options())
 Unbatched tensor filled with a given value given base shape.
 
static Quaternion full (const TraceableTensorShape &batch_shape, Real init, const TensorOptions &options=default_tensor_options())
 Full tensor given batch shape.
 
static Tensor identity_map (const TensorOptions &)
 Derived tensor classes should define identity_map where appropriate.
 
- Static Public Member Functions inherited from TensorBase< Quaternion >
static Quaternion empty_like (const Quaternion &other)
 
static Quaternion zeros_like (const Quaternion &other)
 Zero tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Quaternion ones_like (const Quaternion &other)
 Unit tensor like another, i.e. same batch and base shapes, same tensor options, etc.
 
static Quaternion full_like (const Quaternion &other, Real init)
 
static Quaternion linspace (const Quaternion &start, const Quaternion &end, Size nstep, Size dim=0)
 Create a new tensor by adding a new batch dimension with linear spacing between start and end.
 
static Quaternion logspace (const Quaternion &start, const Quaternion &end, Size nstep, Size dim=0, Real base=10)
 log-space equivalent of the linspace named constructor
 

Additional Inherited Members

- Static Public Attributes inherited from PrimitiveTensor< Quaternion, 4 >
static const TensorShape const_base_sizes
 The base shape.
 
static constexpr Size const_base_dim
 The base dim.
 
static const Size const_base_storage
 The base storage.
 

Constructor & Destructor Documentation

◆ Quaternion()

Quaternion ( const Rot & r)

Member Function Documentation

◆ dist()

Scalar dist ( const Quaternion & other) const

Distance measure between two quaternions.

◆ dot()

Scalar dot ( const Quaternion & other) const

Dot product.

◆ fill() [1/2]

Quaternion fill ( const Real & s,
const Real & q1,
const Real & q2,
const Real & q3,
const TensorOptions & options = default_tensor_options() )
static

fill with four reals

◆ fill() [2/2]

Quaternion fill ( const Scalar & s,
const Scalar & q1,
const Scalar & q2,
const Scalar & q3 )
static

fill with four scalars

◆ operator()()

Scalar operator() ( Size i) const

Accessor.

◆ to_R2()

R2 to_R2 ( ) const

Convert to R2.