# xio: pretty printing¶

Defined in xtensor/xio.hpp

This file defines functions for pretty printing xexpressions. It defines appropriate overloads for the << operator for std::ostreams and xexpressions.

#include <xtensor/xio.hpp>
#include <xtensor/xarray.hpp>

int main()
{
xt::xarray<double> a = {{1,2,3}, {4,5,6}};
std::cout << a << std::endl;
return 0;
}


Will print

{{ 1., 2., 3.},
{ 4., 5., 6.}}


With the following functions, the global print options can be set:

void xt::print_options::set_line_width(int line_width)

Sets the line width.

After line_width chars, a new line is added.

Parameters
• line_width: The line width

void xt::print_options::set_threshold(int threshold)

Sets the threshold after which summarization is triggered (default: 1000).

Parameters
• threshold: The number of elements in the xexpression that triggers summarization in the output

void xt::print_options::set_edge_items(int edge_items)

Sets the number of edge items.

If the summarization is triggered, this value defines how many items of each dimension are printed.

Parameters
• edge_items: The number of edge items

void xt::print_options::set_precision(int precision)

Sets the precision for printing floating point values.

Parameters
• precision: The number of digits for floating point output

On can also locally overwrite the print options with io manipulators:

class line_width

io manipulator used to set the width of the lines when printing an expression.

using po = xt::print_options;
xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}};
std::cout << po::line_width(100) << a << std::endl;


class threshold

io manipulator used to set the threshold after which summarization is triggered.

using po = xt::print_options;
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
std::cout << po::threshold(50) << a << std::endl;


class edge_items

io manipulator used to set the number of egde items if the summarization is triggered.

using po = xt::print_options;
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
std::cout << po::edge_items(5) << a << std::endl;


class precision

io manipulator used to set the precision of the floating point values when printing an expression.

using po = xt::print_options;
xt::xarray<double> a = xt::rand::randn<double>({2000, 500});
std::cout << po::precision(5) << a << std::endl;