首先程序里硬编码了一些浮点数,用C语言搞一下得到真实值,标一下。然后现场学了一下神经网络,参考这篇文章 https://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html 大概明白了这个程序实现了一个神经元,神经元中有一个二维权重向量{w, v},可以提取出来,将输入的两个浮点数x和y先进行一个预处理,然后生成净激活{x × wi + y × vi}向量,接着经过一个激活函数f得到向量z,最后将一个硬编码的输入向量和z相乘得到一个数。经过调试,发现f函数符合Sigmoid型函数。
得到数字之后做sprintf,判断是否为小于10的浮点数,并取整数位和小数前两位这三个数字,平方相加后开根号,判断是否大于15.5,以及之前的y的第3字节的低4bit是否为0.最后一个检验是检查x + y - f的绝对值是否小于0.003.