use strict;
use warnings;
use Test::More tests => 5;
use_ok('Math::Symbolic');
use Math::Symbolic qw/:all/;
use_ok('Math::Symbolic::Custom::ErrorPropagation');
use Math::Symbolic::Custom::ErrorPropagation;
my $f = parse_from_string('m*a');
ok( $f->apply_error_propagation()->is_identical('0'), 'No dependencies -> 0' );
my $variance = $f->apply_error_propagation('m');
ok(
$variance->is_identical(
'((sigma_m ^ 2) * ((partial_derivative(m * a, m)) ^ 2)) ^ 0.5'),
'variance in case of one dependency'
);
$variance = $f->apply_error_propagation(qw/a m/);
ok( $variance->is_identical(<<'HERE'), 'variance in case of two dependencies' );
(
((sigma_a ^ 2) * ((partial_derivative(m * a, a)) ^ 2)) +
((sigma_m ^ 2) * ((partial_derivative(m * a, m)) ^ 2))
) ^ 0.5
HERE