[linalg.reqs.val]

# 29 Numerics library [[numerics]](./#numerics)

## 29.9 Basic linear algebra algorithms [[linalg]](linalg#reqs.val)

### 29.9.4 Requirements [[linalg.reqs]](linalg.reqs#val)

#### 29.9.4.1 Linear algebra value types [linalg.reqs.val]

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L11788)

Throughout [[linalg]](linalg "29.9 Basic linear algebra algorithms"),
the following types are[*linear algebra value types*](#def:value_type,linear_algebra "29.9.4.1 Linear algebra value types [linalg.reqs.val]"):

- [(1.1)](#1.1)

the value_type type alias of
any input or output mdspan parameter(s) of
any function in [[linalg]](linalg "29.9 Basic linear algebra algorithms"); and

- [(1.2)](#1.2)

the Scalar template parameter (if any) of
any function or class in [[linalg]](linalg "29.9 Basic linear algebra algorithms")[.](#1.sentence-1)

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L11802)

Linear algebra value types shall model [semiregular](concepts.object#concept:semiregular "18.6 Object concepts [concepts.object]")[.](#2.sentence-1)

[3](#3)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/numerics.tex#L11805)

A value-initialized object of linear algebra value type
shall act as the additive identity[.](#3.sentence-1)
