Write float arrays to a text file: Difference between revisions
Content added Content deleted
m (This is better than a header of any level) |
(added J (and question re: Ada)) |
||
Line 18: | Line 18: | ||
This task is intended as a subtask for [[Measure relative performance of sorting algorithms implementations]]. |
This task is intended as a subtask for [[Measure relative performance of sorting algorithms implementations]]. |
||
=={{header|Ada}}== |
=={{header|Ada}}== |
||
-- !! I don't know Ada, but I can't see where this procedure writes to |
|||
-- !! a file. The spec calls for more than printing to stdout. |
|||
with Ada.Text_Io; |
with Ada.Text_Io; |
||
with Ada.Float_Text_Io; |
with Ada.Float_Text_Io; |
||
Line 41: | Line 45: | ||
Write_columns(X, Y); |
Write_columns(X, Y); |
||
end Write_Float_Array; |
end Write_Float_Array; |
||
=={{header|J}}== |
|||
require 'files' NB. for fwrites |
|||
x =. 1 2 3 1e11 |
|||
y =. %: x NB. y is sqrt(x) |
|||
xprecision =. 3 |
|||
yprecision =. 5 |
|||
filename =. 'whatever.txt' |
|||
data =. (0 j. xprecision,yprecision) ": x,.y |
|||
data fwrites filename |
|||
=={{header|Python}}== |
=={{header|Python}}== |
Revision as of 15:56, 13 March 2008
Write float arrays to a text file
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
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 is:
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.
Ada
-- !! I don't know Ada, but I can't see where this procedure writes to -- !! a file. The spec calls for more than printing to stdout.
with Ada.Text_Io; with Ada.Float_Text_Io; with Ada.Numerics.Elementary_Functions; use Ada.Numerics.Elementary_Functions; procedure Write_Float_Array is type Float_Array is array(1..4) of Float; X : Float_Array := (1.0, 2.0, 3.0, 1.0e11); Y : Float_Array ; procedure Write_Columns(X : Float_Array; Y : Float_Array; X_Pres : Natural := 3; Y_Pres : Natural := 5) is begin for I in Float_Array'range loop Ada.Float_Text_Io.Put(Item => X(I), Fore => 1, Aft => X_Pres - 1); Ada.Text_IO.Put(" "); Ada.Float_Text_Io.Put(Item => Y(I), Fore => 1, Aft => Y_Pres - 1); Ada.Text_Io.New_Line; end loop; end Write_Columns; begin for I in Float_Array'range loop Y(I) := Sqrt(X(I)); end loop; Write_columns(X, Y); end Write_Float_Array;
J
require 'files' NB. for fwrites x =. 1 2 3 1e11 y =. %: x NB. y is sqrt(x) xprecision =. 3 yprecision =. 5 filename =. 'whatever.txt' data =. (0 j. xprecision,yprecision) ": x,.y data fwrites filename
Python
import itertools def writedat(filename, x, y, xprecision=3, yprecision=5): with open(filename,'w') as f: for a, b in itertools.izip(x, y): f.write("%.*g\t%.*g\n" % (xprecision, a, yprecision, b))
Example usage
>>> import math >>> x = [1, 2, 3, 1e11] >>> y = map(math.sqrt, x) >>> y [1.0, 1.4142135623730951, 1.7320508075688772, 316227.76601683791] >>> writedat("sqrt.dat", x, y) >>> # check ... >>> for line in open('sqrt.dat'): ... print line, ... 1 1 2 1.4142 3 1.7321 1e+011 3.1623e+005