Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
0b1a48b
Add missing template parameter T to inclusive_scan's signature
jaredhoberock Mar 23, 2016
5eeea77
Merge pull request #50 from jaredhoberock/v2
jaredhoberock Oct 13, 2017
df9d2f6
Merge github.com:cplusplus/parallelism-ts into v2
jaredhoberock Nov 22, 2017
2285942
Add concrete date for post-Albuquerque papers
jaredhoberock Nov 22, 2017
6c239d2
Merge branch 'v2' of github.com:cplusplus/parallelism-ts into v2
jaredhoberock Feb 6, 2018
a65af54
Remove redlining from Normative References section
jaredhoberock Feb 6, 2018
c924a91
Remove redlining from Terms and Definitions section
jaredhoberock Feb 6, 2018
16f08cd
Remove redlining from namespaces and headers section
jaredhoberock Feb 6, 2018
740f7e6
Remove redlining from feature-testing recommendations section
jaredhoberock Feb 6, 2018
2ee5033
Eliminate [parallel.execpol.general]
jaredhoberock Feb 6, 2018
1aa5035
Remove redlining from [parallel.execpol.synopsis]
jaredhoberock Feb 6, 2018
e63a30e
Eliminate [parallel.execpol.type]
jaredhoberock Feb 6, 2018
f8e2098
Eliminate [parallel.execpol.seq]
jaredhoberock Feb 6, 2018
cca8fc9
Eliminate [parallel.execpol.par]
jaredhoberock Feb 6, 2018
62bdffb
Eliminate [parallel.execpol.par_vec]
jaredhoberock Feb 6, 2018
2442056
Remove redlining from [parallel.execpol.unseq]
jaredhoberock Feb 6, 2018
968b2e9
Remove redlining from [parallel.execpol.vec]
jaredhoberock Feb 6, 2018
ef1e07e
Eliminate [parallel.execpol.dynamic]
jaredhoberock Feb 6, 2018
b51a4a1
Remove redlining from [parallel.execpol.objects]
jaredhoberock Feb 6, 2018
f732c3f
Eliminate [parallel.exceptions.behavior]
jaredhoberock Feb 6, 2018
00de6b6
Remove redlining from [parallel.exceptions.synopsis]
jaredhoberock Feb 6, 2018
599d6f9
Eliminate [parallel.alg.general.{user,exec}]
jaredhoberock Feb 6, 2018
546b117
Eliminate [parallel.alg.{overloads,defns}]
jaredhoberock Feb 6, 2018
5c467d4
Remove redlining from [parallel.alg.ops.synopsis]
jaredhoberock Feb 6, 2018
2c0393c
Remove redlining from [parallel.alg.reductions]
jaredhoberock Feb 6, 2018
9af868f
Remove redlining from [parallel.alg.inductions]
jaredhoberock Feb 6, 2018
dcf235a
Eliminate redlining from [parallel.alg.forloop]
jaredhoberock Feb 6, 2018
8ad8d68
Eliminate [parallel.alg.foreach]
jaredhoberock Feb 6, 2018
8bee276
Eliminate redlining from [parallel.alg.novec]
jaredhoberock Feb 6, 2018
2042d12
Eliminate [parallel.alg.numeric]
jaredhoberock Feb 6, 2018
b68c7a8
Remove redlinig from [parallel.task_block.synopsis]
jaredhoberock Feb 6, 2018
cf5455f
Remove redlining from [parallel.task_block.task_cancelled_exception]
jaredhoberock Feb 6, 2018
383a4c0
Remove redlining from [parallel.task_block.class]
jaredhoberock Feb 6, 2018
35cb28f
Apply editorial corrections
jaredhoberock Feb 6, 2018
8213044
Apply editorial corrections
jaredhoberock Feb 6, 2018
b3a6aef
Placeholder README
jaredhoberock Feb 7, 2018
82dbd3a
Add paper numbers
jaredhoberock Feb 8, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Eliminate redlining from [parallel.alg.forloop]
  • Loading branch information
jaredhoberock committed Feb 6, 2018
commit dcf235a1c248a7cd0d9cecb7a64c4ede6eeaa182
148 changes: 68 additions & 80 deletions algorithms.html
Original file line number Diff line number Diff line change
Expand Up @@ -342,52 +342,50 @@ <h1>Inductions</h1>
</cxx-section>

<cxx-section id="parallel.alg.forloop">
<h1><ins>For loop</ins></h1>
<h1>For loop</h1>

<cxx-function>
<cxx-signature><ins>template&lt;class I, class... Rest&gt;
void for_loop(no_deduce_t&lt;I&gt; start, I finish, Rest&amp;&amp;... rest);</ins></cxx-signature>
<cxx-signature>template&lt;class I, class... Rest&gt;
void for_loop(no_deduce_t&lt;I&gt; start, I finish, Rest&amp;&amp;... rest);</cxx-signature>

<cxx-signature><ins>template&lt;class ExecutionPolicy,
<cxx-signature>template&lt;class ExecutionPolicy,
class I, class... Rest&gt;
void for_loop(ExecutionPolicy&amp;&amp; exec,
no_deduce_t&lt;I&gt; start, I finish, Rest&amp;&amp;... rest);

</ins></cxx-signature>
</cxx-signature>

<cxx-signature><ins>template&lt;class I, class S, class... Rest&gt;
<cxx-signature>template&lt;class I, class S, class... Rest&gt;
void for_loop_strided(no_deduce_t&lt;I&gt; start, I finish,
S stride, Rest&amp;&amp;... rest);</ins></cxx-signature>
S stride, Rest&amp;&amp;... rest);</cxx-signature>

<cxx-signature><ins>template&lt;class ExecutionPolicy,
<cxx-signature>template&lt;class ExecutionPolicy,
class I, class S, class... Rest&gt;
void for_loop_strided(ExecutionPolicy&amp;&amp; exec,
no_deduce_t&lt;I&gt; start, I finish,
S stride, Rest&amp;&amp;... rest);

</ins></cxx-signature>
</cxx-signature>

<cxx-signature><ins>template&lt;class I, class Size, class... Rest&gt;
void for_loop_n(I start, Size n, Rest&amp;&amp;... rest);</ins></cxx-signature>
<cxx-signature>template&lt;class I, class Size, class... Rest&gt;
void for_loop_n(I start, Size n, Rest&amp;&amp;... rest);</cxx-signature>

<cxx-signature><ins>template&lt;class ExecutionPolicy,
<cxx-signature>template&lt;class ExecutionPolicy,
class I, class Size, class... Rest&gt;
void for_loop_n(ExecutionPolicy&amp;&amp; exec,
I start, Size n, Rest&amp;&amp;... rest);

</ins></cxx-signature>
</cxx-signature>

<cxx-signature><ins>template&lt;class I, class Size, class S, class... Rest&gt;
void for_loop_n_strided(I start, Size n, S stride, Rest&amp;&amp;... rest);</ins></cxx-signature>
<cxx-signature>template&lt;class I, class Size, class S, class... Rest&gt;
void for_loop_n_strided(I start, Size n, S stride, Rest&amp;&amp;... rest);</cxx-signature>

<cxx-signature><ins>template&lt;class ExecutionPolicy,
<cxx-signature>template&lt;class ExecutionPolicy,
class I, class Size, class S, class... Rest&gt;
void for_loop_n_strided(ExecutionPolicy&amp;&amp; exec,
I start, Size n, S stride, Rest&amp;&amp;... rest);</ins></cxx-signature>
I start, Size n, S stride, Rest&amp;&amp;... rest);</cxx-signature>

<ins>
<cxx-requires>
<ins>
For the overloads with an <code>ExecutionPolicy</code>, <code>I</code> shall be an integral type
or meet the requirements of a forward iterator type; otherwise, <code>I</code> shall be an integral
type or meet the requirements of an input iterator type. <code>Size</code> shall be an integral type
Expand All @@ -399,75 +397,65 @@ <h1><ins>For loop</ins></h1>
followed by exactly one invocable element-access function, <em>f</em>. For the overloads with an
<code>ExecutionPolicy</code>, <em>f</em> shall meet the requirements of <code>CopyConstructible</code>;
otherwise, <em>f</em> shall meet the requirements of <code>MoveConstructible</code>.
</ins>
</cxx-requires>
</ins>

<ins>
<cxx-effects>
<ins>
Applies <em>f</em> to each element in the <em>input sequence</em>, as described below, with additional
arguments corresponding to the reductions and inductions in the <code>rest</code> parameter pack. The
length of the input sequence is:

<ul>
<li>
<code>n</code>, if specified,
</li>

<li>
otherwise <code>finish - start</code> if neither <code>n</code> nor <code>stride</code> is specified,
</li>

<li>
otherwise <code>1 + (finish-start-1)/stride</code> if <code>stride</code> is positive,
</li>

<li>
otherwise <code>1 + (start-finish-1)/-stride</code>.
</li>
</ul>

The first element in the input sequence is <code>start</code>. Each subsequent element is generated by adding
<code>stride</code> to the previous element, if <code>stride</code> is specified, otherwise by incrementing
the previous element. <cxx-note>As described in the C++ standard, section [algorithms.general], arithmetic
on non-random-access iterators is performed using advance and distance.</cxx-note> <cxx-note>The order of the
elements of the input sequence is important for determining ordinal position of an application of <em>f</em>,
even though the applications themselves may be unordered.</cxx-note></p>

The first argument to <em>f</em> is an element from the input sequence. <cxx-note>if <code>I</code> is an
iterator type, the iterators in the input sequence are not dereferenced before
being passed to <em>f</em>.</cxx-note> For each member of the rest parameter pack
excluding <em>f</em>, an additional argument is passed to each application of <em>f</em> as follows:

<ul>
<li>
If the pack member is an object returned by a call to a reduction function listed in section
[parallel.alg.reductions], then the additional argument is a reference to an accumulator of that reduction
object.
</li>

<li>
If the pack member is an object returned by a call to <code>induction</code>, then the additional argument is the
induction value for that induction object corresponding to the position of the application of <em>f</em> in the input
sequence.
</li>
</ul>
</ins>
Applies <em>f</em> to each element in the <em>input sequence</em>, as described below, with additional
arguments corresponding to the reductions and inductions in the <code>rest</code> parameter pack. The
length of the input sequence is:

<ul>
<li>
<code>n</code>, if specified,
</li>

<li>
otherwise <code>finish - start</code> if neither <code>n</code> nor <code>stride</code> is specified,
</li>

<li>
otherwise <code>1 + (finish-start-1)/stride</code> if <code>stride</code> is positive,
</li>

<li>
otherwise <code>1 + (start-finish-1)/-stride</code>.
</li>
</ul>

The first element in the input sequence is <code>start</code>. Each subsequent element is generated by adding
<code>stride</code> to the previous element, if <code>stride</code> is specified, otherwise by incrementing
the previous element. <cxx-note>As described in the C++ standard, section [algorithms.general], arithmetic
on non-random-access iterators is performed using advance and distance.</cxx-note> <cxx-note>The order of the
elements of the input sequence is important for determining ordinal position of an application of <em>f</em>,
even though the applications themselves may be unordered.</cxx-note></p>

The first argument to <em>f</em> is an element from the input sequence. <cxx-note>if <code>I</code> is an
iterator type, the iterators in the input sequence are not dereferenced before
being passed to <em>f</em>.</cxx-note> For each member of the rest parameter pack
excluding <em>f</em>, an additional argument is passed to each application of <em>f</em> as follows:

<ul>
<li>
If the pack member is an object returned by a call to a reduction function listed in section
[parallel.alg.reductions], then the additional argument is a reference to an accumulator of that reduction
object.
</li>

<li>
If the pack member is an object returned by a call to <code>induction</code>, then the additional argument is the
induction value for that induction object corresponding to the position of the application of <em>f</em> in the input
sequence.
</li>
</ul>
</cxx-effects>
</ins>

<ins>
<cxx-complexity>
<ins>Applies <em>f</em> exactly once for each element of the input sequence.</ins>
Applies <em>f</em> exactly once for each element of the input sequence.
</cxx-complexity>
</ins>

<ins>
<cxx-remarks>
<ins>If <em>f</em> returns a result, the result is ignored.</ins>
</cxx-remarks>
</ins>
<cxx-remarks>
If <em>f</em> returns a result, the result is ignored.
</cxx-remarks>
</cxx-function>
</cxx-section>

Expand Down