- #include <iostream> 
- #include <math.h> 
-   
- class Function {  
-    private: 
-       float (*function)(float); 
-    public: 
-       Function(float method(float)) : function(method) {} 
-       float eval(float x) { 
-          return function(x); 
-       } 
-       float derive(float x, float error = 0.001) { 
-          return (function(x) - function(x + error)) / error; 
-       } 
-       float integrate(float x0, float x1, float partitions = 100) { 
-          float integral = 0; 
-          float step = (x1 - x0) / partitions; 
-          for(float i = 0; i < partitions; i += step) integral += step * function(i); 
-          return integral; 
-       } 
- }; 
-   
-   
- float exampleFunction(float x) { 
-    return 2 * pow(x, 2) + 5; 
- } 
-   
-   
- int main() { 
-    Function myFunction (exampleFunction); 
-    std::cout << myFunction.eval(6) << std::endl; 
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgoKY2xhc3MgRnVuY3Rpb24geyAKICAgcHJpdmF0ZToKICAgICAgZmxvYXQgKCpmdW5jdGlvbikoZmxvYXQpOwogICBwdWJsaWM6CiAgICAgIEZ1bmN0aW9uKGZsb2F0IG1ldGhvZChmbG9hdCkpIDogZnVuY3Rpb24obWV0aG9kKSB7fQogICAgICBmbG9hdCBldmFsKGZsb2F0IHgpIHsKICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHgpOwogICAgICB9CiAgICAgIGZsb2F0IGRlcml2ZShmbG9hdCB4LCBmbG9hdCBlcnJvciA9IDAuMDAxKSB7CiAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oeCkgLSBmdW5jdGlvbih4ICsgZXJyb3IpKSAvIGVycm9yOwogICAgICB9CiAgICAgIGZsb2F0IGludGVncmF0ZShmbG9hdCB4MCwgZmxvYXQgeDEsIGZsb2F0IHBhcnRpdGlvbnMgPSAxMDApIHsKICAgICAgICAgZmxvYXQgaW50ZWdyYWwgPSAwOwogICAgICAgICBmbG9hdCBzdGVwID0gKHgxIC0geDApIC8gcGFydGl0aW9uczsKICAgICAgICAgZm9yKGZsb2F0IGkgPSAwOyBpIDwgcGFydGl0aW9uczsgaSArPSBzdGVwKSBpbnRlZ3JhbCArPSBzdGVwICogZnVuY3Rpb24oaSk7CiAgICAgICAgIHJldHVybiBpbnRlZ3JhbDsKICAgICAgfQp9OwoKCmZsb2F0IGV4YW1wbGVGdW5jdGlvbihmbG9hdCB4KSB7CiAgIHJldHVybiAyICogcG93KHgsIDIpICsgNTsKfQoKCmludCBtYWluKCkgewogICBGdW5jdGlvbiBteUZ1bmN0aW9uIChleGFtcGxlRnVuY3Rpb24pOwogICBzdGQ6OmNvdXQgPDwgbXlGdW5jdGlvbi5ldmFsKDYpIDw8IHN0ZDo6ZW5kbDsKfQo=