Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
uni20::krylov::KrylovVectorSpace< S, Ops, Prototype > Struct Template Reference

An opaque vector space with one explicit arithmetic precision. More...

#include <vector_space.hpp>

Collaboration diagram for uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >:
[legend]

Public Types

using prototype_type = Prototype
 
using real_type = make_real_t< S >
 
using scalar_type = S
 
using vector_type = decltype(std::declval< Ops & >().allocate_like(std::declval< Prototype const & >()))
 

Public Member Functions

void validate () const
 

Public Attributes

Ops & ops
 
Precision precision
 
Prototype prototype
 

Detailed Description

template<RealOrComplex S, class Ops, class Prototype>
requires (!std::is_reference_v<Prototype>) && KrylovVectorOps<Ops, decltype(std::declval<Ops&>().allocate_like(std::declval<Prototype const&>())), S>
struct uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >

An opaque vector space with one explicit arithmetic precision.

Owns an allocation descriptor, not a numerical vector. The operations and any storage/context borrowed by the descriptor must outlive the solve. Allocation returns an independent owning vector preserving the descriptor's metadata and placement. Fixed scalar types require their native precision; runtime scalars require finite precision. Operations are responsible for performing their arithmetic at that precision.

Member Typedef Documentation

◆ prototype_type

template<RealOrComplex S, class Ops , class Prototype >
using uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::prototype_type = Prototype

◆ real_type

template<RealOrComplex S, class Ops , class Prototype >
using uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::real_type = make_real_t<S>

◆ scalar_type

template<RealOrComplex S, class Ops , class Prototype >
using uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::scalar_type = S

◆ vector_type

template<RealOrComplex S, class Ops , class Prototype >
using uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::vector_type = decltype(std::declval<Ops&>().allocate_like(std::declval<Prototype const&>()))

Member Function Documentation

◆ validate()

template<RealOrComplex S, class Ops , class Prototype >
void uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::validate ( ) const
inline

Member Data Documentation

◆ ops

template<RealOrComplex S, class Ops , class Prototype >
Ops& uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::ops

◆ precision

template<RealOrComplex S, class Ops , class Prototype >
Precision uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::precision

◆ prototype

template<RealOrComplex S, class Ops , class Prototype >
Prototype uni20::krylov::KrylovVectorSpace< S, Ops, Prototype >::prototype

The documentation for this struct was generated from the following file: