def generate_numerical_precision():
if symbols is NotImplemented:<EOL><INDENT>LOGGER.critical("<STR_LIT>")<EOL>raise ImportError("<STR_LIT>")<EOL><DEDENT>il, io, rs, rsh, nnsvt, vd = symbols('<STR_LIT>')<EOL>a = sy_exp(vd / nnsvt)<EOL>b = <NUM_LIT:1.0> / rsh<EOL>i = il - io * (a - <NUM_LIT:1.0>) - vd * b<EOL>v = vd - i * rs<EOL>c = io * a / nnsvt<EOL>grad_i = - c - b  <EOL>grad_v = <NUM_LIT:1.0> - grad_i * rs  <EOL>grad = grad_i / grad_v  <EOL>p = i * v<EOL>grad_p = v * grad + i  <EOL>grad2i = -c / nnsvt<EOL>grad2v = -grad2i * rs<EOL>grad2p = (<EOL>grad_v * grad + v * (grad2i/grad_v - grad_i*grad2v/grad_v**<NUM_LIT:2>) + grad_i<EOL>)<EOL>data = dict(zip((il, io, rs, rsh, nnsvt), ARGS))<EOL>vdtest = np.linspace(<NUM_LIT:0>, estimate_voc(IL, I0, NNSVTH), IVCURVE_NPTS)<EOL>expected = []<EOL>for test in vdtest:<EOL><INDENT>data[vd] = test<EOL>test_data = {<EOL>'<STR_LIT:i>': np.float64(i.evalf(subs=data)),<EOL>'<STR_LIT:v>': np.float64(v.evalf(subs=data)),<EOL>'<STR_LIT:p>': np.float64(p.evalf(subs=data)),<EOL>'<STR_LIT>': np.float64(grad_i.evalf(subs=data)),<EOL>'<STR_LIT>': np.float64(grad_v.evalf(subs=data)),<EOL>'<STR_LIT>': np.float64(grad.evalf(subs=data)),<EOL>'<STR_LIT>': np.float64(grad_p.evalf(subs=data)),<EOL>'<STR_LIT>': np.float64(grad2p.evalf(subs=data))<EOL>}<EOL>LOGGER.debug(test_data)<EOL>expected.append(test_data)<EOL><DEDENT>return pd.DataFrame(expected, index=vdtest)<EOL>
Generate expected data with infinite numerical precision using SymPy.
:return: dataframe of expected values