function result = val_adis_01_noise(varargin)

%% Read Settings

OPT = struct(...
    'seed', 100, ...                                                        % seed used in ADIS (default = random)
    'NrSamplesCMC', 1e6);                                                   % number of samples used for crude Monte Carlo

OPT = setproperty(OPT, varargin{:});

%% define stochastic variables
addpath(genpath(pwd),'-end')

stochast = prob_grooteman_01_noise_stochast_test();

%% run Directional Sampling Object-Oriented

result = test_grooteman_01_noise( ...
    'MinAppr', 100, ...
    'NoCrossTerms', false, ...
    'Weightening', 'none', ...
    'StartUp', 'AxialPoints', ...
    'Method', 'ADIS', ...
    'seed', OPT.seed);

%% run FORM
result.FORM = FORM(...
    'stochast', stochast,...
    'x2zFunction', @prob_grooteman_01_noise_x2z_test);

%% run Monte Carlo
result.CMC = MC(...
    'seed', OPT.seed, ...
    'stochast', stochast,...
    'x2zFunction', @prob_grooteman_01_noise_x2z_test,...
    'NrSamples', OPT.NrSamplesCMC);

%% run Directional Sampling
result.DS = DS(...
    'ARS', false, ...
    'seed', OPT.seed, ...
    'stochast', stochast,...
    'x2zFunction', @prob_grooteman_01_noise_x2z_test);

%% run Directional Sampling Object-Oriented

OODS = test_grooteman_01_noise( ...
    'Method', 'DS', ...
    'seed', OPT.seed);

result.OO_DS = OODS.OO_ADIS;

%% print result
prob_print_test(result);
fprintf('\nADIS exact samples: %d \n', sum(result.OO_ADIS.DS_object.LimitState.EvaluationIsExact))
fprintf('OODS exact samples: %d \n', sum(result.OO_DS.DS_object.LimitState.EvaluationIsExact))
fprintf('DS exact samples: %d \n', numel(result.DS.Output.exact))