user
Task

Write two equal-sized numerical arrays 'x' and 'y' to
a two-column text file named 'filename'.

The first column of the file contains values from an 'x'-array with a
given 'xprecision', the second -- values from 'y'-array with 'yprecision'.

For example, considering:

```
   x = {1, 2, 3, 1e11};
   y = {1, 1.4142135623730951, 1.7320508075688772, 316227.76601683791}; 
                                                          /* sqrt(x) */
   xprecision = 3;
   yprecision = 5;

```

The file should look like:

```
   1    1
   2    1.4142
   3    1.7321
   1e+011   3.1623e+005

```

This task is intended as a subtask for Measure relative performance of sorting algorithms implementations.
assistant
(formerly Perl 6)

### Perl 5-ish

Written in the style of the 2nd Perl 5 example.

```
sub writefloat ( $filename, @x, @y, $x_precision = 3, $y_precision = 5 ) {
    my $fh = open $filename, :w;
    for flat @x Z @y -> $x, $y {
        $fh.printf: "%.*g\t%.*g\n", $x_precision, $x, $y_precision, $y;
    }
    $fh.close;
}
 
my @x = 1, 2, 3, 1e11;
my @y = @x.map({.sqrt});

writefloat( 'sqrt.dat', @x, @y );

```

Output:

```
1	1
2	1.4142
3	1.7321
1e+11	3.1623e+05
```

### Idiomatic

Written in a more idiomatic style.

```
sub writefloat($filename, @x, @y, :$x-precision = 3, :$y-precision = 3) {
    open($filename, :w).print:
        join '', flat (@x».fmt("%.{$x-precision}g") X "\t") Z (@y».fmt("%.{$y-precision}g") X "\n");
}
my @x = 1, 2, 3, 1e11;
writefloat('sqrt.dat', @x, @x».sqrt, :y-precision(5));

```

Output:

```
1	1
2	1.4142
3	1.7321
1e+11	3.1623e+05
```