#include #include #include #include #include "9float.hpp" using namespace std::chrono_literals; template void time_type(const T loop,T init,T incr ,const std::function lambda, std::string name) { T p; auto begin = std::chrono::high_resolution_clock::now(); for(T i=0;i(end-begin).count() <<"µs" <(10000,1,1,[](int a,int b)->int {return a+b;}, "int +"); time_type(10000,20000,1,[](int a,int b)->int {return a-b;}, "int -"); time_type(10000,1,2,[](int a,int b)->int {return a*b;}, "int *"); time_type(10000,99999999,2,[](int a,int b)->int {return a/b;}, "int /"); time_type(10000,1,0.5,[](float a,float b)->float {return a+b;}, "float +"); time_type(10000,20000,1.14,[](float a,float b)->float {return a-b;}, "float -"); time_type(10000,1,1.25,[](float a,float b)->float {return a*b;}, "float *"); time_type(10000,99999999,1.25,[](float a,float b)->float {return a/b;}, "float /"); time_type(10000,1,0.5,[](double a,double b)->double {return a+b;}, "double +"); time_type(10000,20000,1.14,[](double a,double b)->double {return a-b;}, "double -"); time_type(10000,1,1.25,[](double a,double b)->double {return a*b;}, "double *"); time_type(10000,99999999,1.25,[](double a,double b)->double {return a/b;}, "double /"); time_type>(10000,1,0.5,[](ninefloat::Q a,ninefloat::Q b)->ninefloat::Q {return a+b;}, "ninefloat::Q +"); time_type>(10000,20000,1.14,[](ninefloat::Q a,ninefloat::Q b)->ninefloat::Q {return a-b;}, "ninefloat::Q -"); time_type>(10000,1,1.25,[](ninefloat::Q a,ninefloat::Q b)->ninefloat::Q {return a*b;}, "ninefloat::Q *"); time_type>(10000,99999999,1.25,[](ninefloat::Q a,ninefloat::Q b)->ninefloat::Q {return a/b;}, "ninefloat::Q /"); }