# Complex ExampleΒΆ

A more complex example from the `test_uncertainty_wrapper`

module called `test_IV()`

,
includes combinations of several exponential and power operations. It contains
9 input arguments, there 126 observations of each corresponding to different
voltages and there are 3 return values. The calculated uncertainty using a 1%
standard deviation (square root of variance) for all 9 inputs is shown below.

The test compares the derivatives calculated using central finite difference approximation with an analytical calculation from 0.3[V] to 0.6[V]. Below 0.3[V] the approximations deviate from the analytical for \(\frac{\partial I_{sc}}{\partial I_{sat_{1,0}}}\), \(\frac{\partial I_{sc}}{\partial I_{sat_2}}\) and \(\frac{\partial I_{sc}}{\partial E_g}\) while all other independent variables are consistently below 10e-7. The analytical derivatives are propagated using AlgoPy, an automatic differentiation package, which requires rewriting all NumPy operations like \(exp\) using AlgoPy. This makes it impractical for use in most models, but still useful for testing.