with Ada.Text_Io; use Ada.Text_IO ;
with Ada.Long_Float_Text_IO ; use Ada.Long_Float_Text_IO ;
with Ada.Command_Line ; use Ada.Command_Line;
with Interfaces.C; use Interfaces.C ;
with Interfaces.C.Strings; use Interfaces.C.Strings ;
with gsl ;
with gsl.qrng ;
procedure qrng is
rng : access gsl.qrng.gsl_qrng ; -- := gsl.qrng.alloc(gsl.qrng.sobol,2) ;
rn : gsl.qrng.qrng_values_type(1..2) ;
status : Int ;
outfile : File_Type ;
procedure Test is
filename : String := Value(gsl.qrng.name(rng)) & ".csv";
begin
Create(outfile,Out_File,filename);
Set_Output(outfile);
--Put("Generator Name : ");
--Put(Interfaces.C.Strings.Value( gsl.qrng.name(rng) ));
--New_Line;
for i in 1..1024
loop
Status := gsl.qrng.get(rng,rn);
Put(Long_Float(rn(1)));
Put( " ; ");
Put(Long_Float(rn(2)));
New_Line;
end loop ;
Close(outfile);
Set_Output(Standard_Output);
end Test ;
begin
--Put_Line("Quasi Random Number Generators ");
if Argument_Count = 0
then
rng := gsl.qrng.alloc(gsl.qrng.sobol,2) ;
elsif Argument(1) = "sobol"
then
rng := gsl.qrng.alloc(gsl.qrng.sobol,2) ;
elsif Argument(1) = "niederreiter_2"
then
rng := gsl.qrng.alloc(gsl.qrng.niederreiter_2,2) ;
elsif Argument(1) = "halton"
then
rng := gsl.qrng.alloc(gsl.qrng.halton,2) ;
elsif Argument(1) = "reversehalton"
then
rng := gsl.qrng.alloc(gsl.qrng.reversehalton,2) ;
else
Put("Unsupported generator "); Put_Line(Argument(1));
return;
end if;
Test;
gsl.qrng.free(rng);
end qrng;