Init
This commit is contained in:
116
cppdraft/partial/sort.md
Normal file
116
cppdraft/partial/sort.md
Normal file
@@ -0,0 +1,116 @@
|
||||
[partial.sort]
|
||||
|
||||
# 26 Algorithms library [[algorithms]](./#algorithms)
|
||||
|
||||
## 26.8 Sorting and related operations [[alg.sorting]](alg.sorting#partial.sort)
|
||||
|
||||
### 26.8.2 Sorting [[alg.sort]](alg.sort#partial.sort)
|
||||
|
||||
#### 26.8.2.3 partial_sort [partial.sort]
|
||||
|
||||
[ð](#lib:partial_sort)
|
||||
|
||||
`template<class RandomAccessIterator>
|
||||
constexpr void partial_sort(RandomAccessIterator first,
|
||||
RandomAccessIterator middle,
|
||||
RandomAccessIterator last);
|
||||
template<class ExecutionPolicy, class RandomAccessIterator>
|
||||
void partial_sort(ExecutionPolicy&& exec,
|
||||
RandomAccessIterator first,
|
||||
RandomAccessIterator middle,
|
||||
RandomAccessIterator last);
|
||||
|
||||
template<class RandomAccessIterator, class Compare>
|
||||
constexpr void partial_sort(RandomAccessIterator first,
|
||||
RandomAccessIterator middle,
|
||||
RandomAccessIterator last,
|
||||
Compare comp);
|
||||
template<class ExecutionPolicy, class RandomAccessIterator, class Compare>
|
||||
void partial_sort(ExecutionPolicy&& exec,
|
||||
RandomAccessIterator first,
|
||||
RandomAccessIterator middle,
|
||||
RandomAccessIterator last,
|
||||
Compare comp);
|
||||
|
||||
template<[random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<I> S, class Comp = ranges::less,
|
||||
class Proj = identity>
|
||||
requires [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<I, Comp, Proj>
|
||||
constexpr I
|
||||
ranges::partial_sort(I first, I middle, S last, Comp comp = {}, Proj proj = {});
|
||||
template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<I> S,
|
||||
class Comp = ranges::less, class Proj = identity>
|
||||
requires [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<I, Comp, Proj>
|
||||
I ranges::partial_sort(Ep&& exec, I first, I middle, S last, Comp comp = {}, Proj proj = {});
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8936)
|
||||
|
||||
Let comp be less{} and proj be identity{} for the overloads with no parameters by those names[.](#1.sentence-1)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8941)
|
||||
|
||||
*Preconditions*: [first, middle) and [middle, last) are valid ranges[.](#2.sentence-1)
|
||||
|
||||
For the overloads in namespace std,RandomAccessIterator meets
|
||||
the [*Cpp17ValueSwappable*](swappable.requirements#:Cpp17ValueSwappable "16.4.4.3 Swappable requirements [swappable.requirements]") requirements ([[swappable.requirements]](swappable.requirements "16.4.4.3 Swappable requirements")) and
|
||||
the type of *first meets
|
||||
the [*Cpp17MoveConstructible*](utility.arg.requirements#:Cpp17MoveConstructible "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [31](utility.arg.requirements#tab:cpp17.moveconstructible "Table 31: Cpp17MoveConstructible requirements")) and[*Cpp17MoveAssignable*](utility.arg.requirements#:Cpp17MoveAssignable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [33](utility.arg.requirements#tab:cpp17.moveassignable "Table 33: Cpp17MoveAssignable requirements")) requirements[.](#2.sentence-2)
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8951)
|
||||
|
||||
*Effects*: Places the first middle - first elements
|
||||
from the range [first, last)
|
||||
as sorted with respect to comp and proj into the range [first, middle)[.](#3.sentence-1)
|
||||
|
||||
The rest of the elements in the range [middle, last)
|
||||
are placed in an unspecified order[.](#3.sentence-2)
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8961)
|
||||
|
||||
*Returns*: last for the overload in namespace ranges[.](#4.sentence-1)
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8965)
|
||||
|
||||
*Complexity*: Approximately (last - first) * log(middle - first) comparisons, and
|
||||
twice as many projections[.](#5.sentence-1)
|
||||
|
||||
[ð](#itemdecl:2)
|
||||
|
||||
`template<[random_access_range](range.refinements#concept:random_access_range "25.4.6 Other range refinements [range.refinements]") R, class Comp = ranges::less, class Proj = identity>
|
||||
requires [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<iterator_t<R>, Comp, Proj>
|
||||
constexpr borrowed_iterator_t<R>
|
||||
ranges::partial_sort(R&& r, iterator_t<R> middle, Comp comp = {}, Proj proj = {});
|
||||
`
|
||||
|
||||
[6](#6)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8979)
|
||||
|
||||
*Effects*: Equivalent to:return ranges::partial_sort(ranges::begin(r), middle, ranges::end(r), comp, proj);
|
||||
|
||||
[ð](#itemdecl:3)
|
||||
|
||||
`template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [sized-random-access-range](range.refinements#concept:sized-random-access-range "25.4.6 Other range refinements [range.refinements]") R,
|
||||
class Comp = ranges::less, class Proj = identity>
|
||||
requires [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<iterator_t<R>, Comp, Proj>
|
||||
borrowed_iterator_t<R>
|
||||
ranges::partial_sort(Ep&& exec, R&& r, iterator_t<R> middle, Comp comp = {},
|
||||
Proj proj = {});
|
||||
`
|
||||
|
||||
[7](#7)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L8997)
|
||||
|
||||
*Effects*: Equivalent to:return ranges::partial_sort(std::forward<Ep>(exec), ranges::begin(r), middle,
|
||||
ranges::end(r), comp, proj);
|
||||
146
cppdraft/partial/sort/copy.md
Normal file
146
cppdraft/partial/sort/copy.md
Normal file
@@ -0,0 +1,146 @@
|
||||
[partial.sort.copy]
|
||||
|
||||
# 26 Algorithms library [[algorithms]](./#algorithms)
|
||||
|
||||
## 26.8 Sorting and related operations [[alg.sorting]](alg.sorting#partial.sort.copy)
|
||||
|
||||
### 26.8.2 Sorting [[alg.sort]](alg.sort#partial.sort.copy)
|
||||
|
||||
#### 26.8.2.4 partial_sort_copy [partial.sort.copy]
|
||||
|
||||
[ð](#lib:partial_sort_copy)
|
||||
|
||||
`template<class InputIterator, class RandomAccessIterator>
|
||||
constexpr RandomAccessIterator
|
||||
partial_sort_copy(InputIterator first, InputIterator last,
|
||||
RandomAccessIterator result_first,
|
||||
RandomAccessIterator result_last);
|
||||
template<class ExecutionPolicy, class ForwardIterator, class RandomAccessIterator>
|
||||
RandomAccessIterator
|
||||
partial_sort_copy(ExecutionPolicy&& exec,
|
||||
ForwardIterator first, ForwardIterator last,
|
||||
RandomAccessIterator result_first,
|
||||
RandomAccessIterator result_last);
|
||||
|
||||
template<class InputIterator, class RandomAccessIterator,
|
||||
class Compare>
|
||||
constexpr RandomAccessIterator
|
||||
partial_sort_copy(InputIterator first, InputIterator last,
|
||||
RandomAccessIterator result_first,
|
||||
RandomAccessIterator result_last,
|
||||
Compare comp);
|
||||
template<class ExecutionPolicy, class ForwardIterator, class RandomAccessIterator,
|
||||
class Compare>
|
||||
RandomAccessIterator
|
||||
partial_sort_copy(ExecutionPolicy&& exec,
|
||||
ForwardIterator first, ForwardIterator last,
|
||||
RandomAccessIterator result_first,
|
||||
RandomAccessIterator result_last,
|
||||
Compare comp);
|
||||
|
||||
template<[input_iterator](iterator.concept.input#concept:input_iterator "24.3.4.9 Concept input_iterator [iterator.concept.input]") I1, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<I1> S1, [random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I2, [sentinel_for](iterator.concept.sentinel#concept:sentinel_for "24.3.4.7 Concept sentinel_for [iterator.concept.sentinel]")<I2> S2,
|
||||
class Comp = ranges::less, class Proj1 = identity, class Proj2 = identity>
|
||||
requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly_copyable "24.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]")<I1, I2> && [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<I2, Comp, Proj2> &&
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<Comp, projected<I1, Proj1>, projected<I2, Proj2>>
|
||||
constexpr ranges::partial_sort_copy_result<I1, I2>
|
||||
ranges::partial_sort_copy(I1 first, S1 last, I2 result_first, S2 result_last,
|
||||
Comp comp = {}, Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
template<[input_range](range.refinements#concept:input_range "25.4.6 Other range refinements [range.refinements]") R1, [random_access_range](range.refinements#concept:random_access_range "25.4.6 Other range refinements [range.refinements]") R2, class Comp = ranges::less,
|
||||
class Proj1 = identity, class Proj2 = identity>
|
||||
requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly_copyable "24.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]")<iterator_t<R1>, iterator_t<R2>> &&
|
||||
[sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<iterator_t<R2>, Comp, Proj2> &&
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<Comp, projected<iterator_t<R1>, Proj1>,
|
||||
projected<iterator_t<R2>, Proj2>>
|
||||
constexpr ranges::partial_sort_copy_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
|
||||
ranges::partial_sort_copy(R1&& r, R2&& result_r, Comp comp = {},
|
||||
Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
|
||||
template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I1, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<I1> S1,
|
||||
[random_access_iterator](iterator.concept.random.access#concept:random_access_iterator "24.3.4.13 Concept random_access_iterator [iterator.concept.random.access]") I2, [sized_sentinel_for](iterator.concept.sizedsentinel#concept:sized_sentinel_for "24.3.4.8 Concept sized_sentinel_for [iterator.concept.sizedsentinel]")<I2> S2,
|
||||
class Comp = ranges::less, class Proj1 = identity, class Proj2 = identity>
|
||||
requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly_copyable "24.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]")<I1, I2> && [sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<I2, Comp, Proj2> &&
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<Comp, projected<I1, Proj1>, projected<I2, Proj2>>
|
||||
ranges::partial_sort_copy_result<I1, I2>
|
||||
ranges::partial_sort_copy(Ep&& exec, I1 first, S1 last, I2 result_first, S2 result_last,
|
||||
Comp comp = {}, Proj1 proj1 = {},
|
||||
Proj2 proj2 = {});
|
||||
template<[execution-policy](algorithms.parallel.defns#concept:execution-policy "26.3.1 Preamble [algorithms.parallel.defns]") Ep, [sized-random-access-range](range.refinements#concept:sized-random-access-range "25.4.6 Other range refinements [range.refinements]") R1, [sized-random-access-range](range.refinements#concept:sized-random-access-range "25.4.6 Other range refinements [range.refinements]") R2,
|
||||
class Comp = ranges::less, class Proj1 = identity, class Proj2 = identity>
|
||||
requires [indirectly_copyable](alg.req.ind.copy#concept:indirectly_copyable "24.3.7.3 Concept indirectly_copyable [alg.req.ind.copy]")<iterator_t<R1>, iterator_t<R2>> &&
|
||||
[sortable](alg.req.sortable#concept:sortable "24.3.7.8 Concept sortable [alg.req.sortable]")<iterator_t<R2>, Comp, Proj2> &&
|
||||
[indirect_strict_weak_order](indirectcallable.indirectinvocable#concept:indirect_strict_weak_order "24.3.6.3 Indirect callables [indirectcallable.indirectinvocable]")<Comp, projected<iterator_t<R1>, Proj1>,
|
||||
projected<iterator_t<R2>, Proj2>>
|
||||
ranges::partial_sort_copy_result<borrowed_iterator_t<R1>, borrowed_iterator_t<R2>>
|
||||
ranges::partial_sort_copy(Ep&& exec, R1&& r, R2&& result_r, Comp comp = {},
|
||||
Proj1 proj1 = {}, Proj2 proj2 = {});
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9076)
|
||||
|
||||
Let N be min(last - first, result_last - result_first)[.](#1.sentence-1)
|
||||
|
||||
Let comp be less{}, andproj1 and proj2 be identity{} for the overloads with no parameters by those names[.](#1.sentence-2)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9082)
|
||||
|
||||
*Mandates*: For the overloads in namespace std,
|
||||
the expression *first is writable ([[iterator.requirements.general]](iterator.requirements.general "24.3.1 General")) to result_first[.](#2.sentence-1)
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9088)
|
||||
|
||||
*Preconditions*: For the overloads in namespace std,RandomAccessIterator meets
|
||||
the [*Cpp17ValueSwappable*](swappable.requirements#:Cpp17ValueSwappable "16.4.4.3 Swappable requirements [swappable.requirements]") requirements ([[swappable.requirements]](swappable.requirements "16.4.4.3 Swappable requirements")),
|
||||
the type of *result_first meets
|
||||
the [*Cpp17MoveConstructible*](utility.arg.requirements#:Cpp17MoveConstructible "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [31](utility.arg.requirements#tab:cpp17.moveconstructible "Table 31: Cpp17MoveConstructible requirements")) and[*Cpp17MoveAssignable*](utility.arg.requirements#:Cpp17MoveAssignable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [33](utility.arg.requirements#tab:cpp17.moveassignable "Table 33: Cpp17MoveAssignable requirements")) requirements[.](#3.sentence-1)
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9097)
|
||||
|
||||
For iterators a1 and b1 in [first, last), and
|
||||
iterators x2 and y2 in [result_first, result_last),
|
||||
after evaluating the assignment *y2 = *b1, let E be the value ofbool(invoke(comp, invoke(proj1, *a1), invoke(proj2, *y2))).
|
||||
|
||||
Then, after evaluating the assignment *x2 = *a1, E is equal tobool(invoke(comp, invoke(proj2, *x2), invoke(proj2, *y2))).
|
||||
|
||||
[*Note [1](#note-1)*:
|
||||
|
||||
Writing a value from the input range into the output range does not affect
|
||||
how it is ordered by comp and proj1 or proj2[.](#4.sentence-2)
|
||||
|
||||
â *end note*]
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9113)
|
||||
|
||||
*Effects*: Places the first N elements
|
||||
as sorted with respect to comp and proj2 into the range [result_first, result_first + N)[.](#5.sentence-1)
|
||||
|
||||
[6](#6)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9119)
|
||||
|
||||
*Returns*:
|
||||
|
||||
- [(6.1)](#6.1)
|
||||
|
||||
result_first + N for the overloads in namespace std[.](#6.1.sentence-1)
|
||||
|
||||
- [(6.2)](#6.2)
|
||||
|
||||
{last, result_first + N} for
|
||||
the overloads in namespace ranges[.](#6.2.sentence-1)
|
||||
|
||||
[7](#7)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L9129)
|
||||
|
||||
*Complexity*: Approximately (last - first) * log N comparisons,
|
||||
and twice as many projections[.](#7.sentence-1)
|
||||
70
cppdraft/partial/sum.md
Normal file
70
cppdraft/partial/sum.md
Normal file
@@ -0,0 +1,70 @@
|
||||
[partial.sum]
|
||||
|
||||
# 26 Algorithms library [[algorithms]](./#algorithms)
|
||||
|
||||
## 26.10 Generalized numeric operations [[numeric.ops]](numeric.ops#partial.sum)
|
||||
|
||||
### 26.10.7 Partial sum [partial.sum]
|
||||
|
||||
[ð](#lib:partial_sum)
|
||||
|
||||
`template<class InputIterator, class OutputIterator>
|
||||
constexpr OutputIterator
|
||||
partial_sum(InputIterator first, InputIterator last,
|
||||
OutputIterator result);
|
||||
template<class InputIterator, class OutputIterator, class BinaryOperation>
|
||||
constexpr OutputIterator
|
||||
partial_sum(InputIterator first, InputIterator last,
|
||||
OutputIterator result, BinaryOperation binary_op);
|
||||
`
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12657)
|
||||
|
||||
*Mandates*: InputIterator's value type is constructible from *first[.](#1.sentence-1)
|
||||
|
||||
The result of the
|
||||
expression std::move(acc) + *i or binary_op(std::move(acc), *i) is implicitly convertible to InputIterator's value type[.](#1.sentence-2)
|
||||
|
||||
acc is writable ([[iterator.requirements.general]](iterator.requirements.general "24.3.1 General")) to result[.](#1.sentence-3)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12665)
|
||||
|
||||
*Preconditions*: In the ranges [first, last] and [result, result + (last - first)]binary_op neither modifies elements
|
||||
nor invalidates iterators or subranges[.](#2.sentence-1)[208](#footnote-208 "The use of fully closed ranges is intentional.")
|
||||
|
||||
[3](#3)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12674)
|
||||
|
||||
*Effects*: For a non-empty range,
|
||||
the function creates an accumulator acc whose type is InputIterator's value type,
|
||||
initializes it with *first,
|
||||
and assigns the result to *result[.](#3.sentence-1)
|
||||
|
||||
For every iterator i in [first + 1, last) in order,acc is then modified byacc = std::move(acc) + *i or acc = binary_op(std::move(acc), *i) and the result is assigned to *(result + (i - first))[.](#3.sentence-2)
|
||||
|
||||
[4](#4)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12686)
|
||||
|
||||
*Returns*: result + (last - first)[.](#4.sentence-1)
|
||||
|
||||
[5](#5)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12690)
|
||||
|
||||
*Complexity*: Exactly (last - first) - 1 applications of the binary operation[.](#5.sentence-1)
|
||||
|
||||
[6](#6)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/algorithms.tex#L12694)
|
||||
|
||||
*Remarks*: result may be equal to first[.](#6.sentence-1)
|
||||
|
||||
[208)](#footnote-208)[208)](#footnoteref-208)
|
||||
|
||||
The use of fully closed ranges is intentional[.](#footnote-208.sentence-1)
|
||||
Reference in New Issue
Block a user