Write float arrays to a text file: Difference between revisions
Content added Content deleted
m (→{{header|Python}}: added example) |
(Ada example) |
||
Line 17: | Line 17: | ||
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}}== |
|||
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; |
|||
=={{header|Python}}== |
=={{header|Python}}== |
||
'''Interpreter:''' [[Python]] 2.6 |
'''Interpreter:''' [[Python]] 2.6 |
Revision as of 03:28, 24 December 2007
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
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;
Python
Interpreter: Python 2.6
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
>>> 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