= Project name
:experimental:
:nofooter:
:source-highlighter: pygments
:sectnums:
:stem:
:toc:
:xrefstyle: short


[[problem_statement]]
== Problem statement

Sort an array of values using parallelized merge-sort algorithm.

Input example:

[source]
----
include::tests/input001.txt[]
----

Output example:

[source]
----
include::tests/output001.txt[]
----

[[user_manual]]
== User manual

[[build]]
=== Build

Use one of the following:

- Run `make` to build an executable for debugging.
- Run `make release` to build an optimized executable.

[[usage]]
=== Usage

Usage: `bin/mergesort [count] [threads] [verbose]`

If run with no command line arguments, the program will sort the values given by standard input and printed to standard output separated by spaces.

If the `count` argument is provided, a random vector of count pseudo-random elements is created and sorted, no output is generated unless the `verbose` argument is provided with value `1`.

If `threads` argument is provided, the vector will be sorted in parallel for that number of threads, otherwise the number of available CPU will be used.

If `verbose` is `0`, no output is generated at all (quiet), useful for benchmarking. Value `1` stands for verbose mode.
