你刚刚开始对三角神经网络进行研究。作为第一步,你需要学习如何计算复杂三角函数的梯度。
更准确地说,你有一个包含 26 个变量(用小写英文字母表示)的表达式,其中包含两种运算:加法和正弦。例如:sin(x+y+sin(z+t))。除了正弦运算参数周围的括号外,它不包含任何额外的括号。
给定这样的表达式 func 以及所有变量的值 $a_0, b_0, \dots, z_0$,计算关于每个变量的偏导数。例如,对于变量 $p$,计算:
$$\lim_{p \to p_0} \frac{func(a_0, b_0, \dots, o_0, p, q_0, \dots, z_0) - func(a_0, b_0, \dots, o_0, p_0, q_0, \dots, z_0)}{p - p_0}$$
输入格式
输入文件的第一行包含上述描述的、不含空格的正弦和加法表达式。表达式的长度最多为 300。输入文件的第二行包含 26 个以空格分隔的浮点数,每个数在 -10 到 10 之间,小数点后最多 8 位,分别对应变量 $a_0, b_0, \dots, z_0$ 的值。
输出格式
输出 26 个以空格分隔的浮点数,表示给定表达式在给定点处关于每个变量的偏导数。如果每个数字与答案的绝对误差或相对误差在 $10^{-8}$ 以内,则你的输出将被视为正确。
样例
输入格式 1
sin(x+x+y)+sin(z) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.23
输出格式 1
0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 0.000000000000000 2.000000000000000 1.000000000000000 0.973666395005375