Listing 5: Some unary functions
UDouble<is_correlated> sin(UDouble<is_correlated> arg) { if (is_correlated) arg.uncertainty *= cos(arg.value); else arg.uncertainty *= fabs(cos(arg.value)); arg.value = sin(arg.value); return arg; } UDouble<is_correlated> exp(UDouble<is_correlated> arg) { arg.value = exp(arg.value); if (is_correlated) arg.uncertainty *= arg.value; else arg.uncertainty *= fabs(arg.value); return arg; } UDouble<is_correlated> ceil(UDouble<is_correlated> arg) { arg.value = ceil(arg.value); arg.uncertainty = 0.0; return arg; } //End of File